resolved: tests for dns_answer_merge() and dns_answer_extend()
This commit is contained in:
committed by
Luca Boccassi
parent
4ab02e4fdc
commit
c07b0c66ca
@@ -225,4 +225,118 @@ TEST(dns_answer_find_soa_multi) {
|
||||
dns_resource_key_unref(key);
|
||||
}
|
||||
|
||||
/* ================================================================
|
||||
* dns_answer_merge()
|
||||
* ================================================================ */
|
||||
|
||||
TEST(dns_answer_merge_same_object) {
|
||||
_cleanup_(dns_answer_unrefp) DnsAnswer *a = NULL, *ret = NULL;
|
||||
|
||||
a = dns_answer_new(0);
|
||||
ASSERT_NOT_NULL(a);
|
||||
|
||||
ASSERT_OK(dns_answer_merge(a, a, &ret));
|
||||
ASSERT_TRUE(ret == a);
|
||||
}
|
||||
|
||||
TEST(dns_answer_merge_a_empty) {
|
||||
_cleanup_(dns_answer_unrefp) DnsAnswer *a = NULL, *b = NULL, *ret = NULL;
|
||||
|
||||
a = dns_answer_new(0);
|
||||
ASSERT_NOT_NULL(a);
|
||||
|
||||
b = dns_answer_new(0);
|
||||
ASSERT_NOT_NULL(b);
|
||||
|
||||
dns_answer_add_soa(b, "example.com", 3600, 1);
|
||||
|
||||
ASSERT_OK(dns_answer_merge(a, b, &ret));
|
||||
ASSERT_TRUE(ret != a);
|
||||
ASSERT_TRUE(ret == b);
|
||||
}
|
||||
|
||||
TEST(dns_answer_merge_b_empty) {
|
||||
_cleanup_(dns_answer_unrefp) DnsAnswer *a = NULL, *b = NULL, *ret = NULL;
|
||||
|
||||
a = dns_answer_new(0);
|
||||
ASSERT_NOT_NULL(a);
|
||||
|
||||
b = dns_answer_new(0);
|
||||
ASSERT_NOT_NULL(b);
|
||||
|
||||
dns_answer_add_soa(a, "example.com", 3600, 1);
|
||||
|
||||
ASSERT_OK(dns_answer_merge(a, b, &ret));
|
||||
ASSERT_TRUE(ret == a);
|
||||
ASSERT_TRUE(ret != b);
|
||||
}
|
||||
|
||||
TEST(dns_answer_merge_non_empty) {
|
||||
_cleanup_(dns_answer_unrefp) DnsAnswer *a = NULL, *b = NULL, *ret = NULL;
|
||||
_cleanup_(dns_resource_record_unrefp) DnsResourceRecord *rr_a = NULL, *rr_b = NULL;
|
||||
|
||||
a = dns_answer_new(0);
|
||||
ASSERT_NOT_NULL(a);
|
||||
|
||||
b = dns_answer_new(0);
|
||||
ASSERT_NOT_NULL(b);
|
||||
|
||||
rr_a = dns_resource_record_new_full(DNS_CLASS_IN, DNS_TYPE_A, "a.example.com");
|
||||
ASSERT_NOT_NULL(rr_a);
|
||||
rr_a->a.in_addr.s_addr = htobe32(0xc0a8017f);
|
||||
dns_answer_add(a, rr_a, 1, DNS_ANSWER_CACHEABLE, NULL);
|
||||
|
||||
rr_b = dns_resource_record_new_full(DNS_CLASS_IN, DNS_TYPE_A, "b.example.com");
|
||||
ASSERT_NOT_NULL(rr_b);
|
||||
rr_b->a.in_addr.s_addr = htobe32(0xc0a80180);
|
||||
dns_answer_add(b, rr_b, 1, DNS_ANSWER_CACHEABLE, NULL);
|
||||
|
||||
ASSERT_OK(dns_answer_merge(a, b, &ret));
|
||||
ASSERT_TRUE(ret != a);
|
||||
ASSERT_TRUE(ret != b);
|
||||
|
||||
ASSERT_TRUE(dns_answer_match_key(a, rr_a->key, NULL));
|
||||
ASSERT_FALSE(dns_answer_match_key(a, rr_b->key, NULL));
|
||||
|
||||
ASSERT_TRUE(dns_answer_match_key(b, rr_b->key, NULL));
|
||||
ASSERT_FALSE(dns_answer_match_key(b, rr_a->key, NULL));
|
||||
|
||||
ASSERT_TRUE(dns_answer_match_key(ret, rr_a->key, NULL));
|
||||
ASSERT_TRUE(dns_answer_match_key(ret, rr_b->key, NULL));
|
||||
}
|
||||
|
||||
/* ================================================================
|
||||
* dns_answer_extend()
|
||||
* ================================================================ */
|
||||
|
||||
TEST(dns_answer_replace_non_empty) {
|
||||
_cleanup_(dns_answer_unrefp) DnsAnswer *a = NULL, *b = NULL;
|
||||
_cleanup_(dns_resource_record_unrefp) DnsResourceRecord *rr_a = NULL, *rr_b = NULL;
|
||||
|
||||
a = dns_answer_new(0);
|
||||
ASSERT_NOT_NULL(a);
|
||||
|
||||
b = dns_answer_new(0);
|
||||
ASSERT_NOT_NULL(b);
|
||||
|
||||
rr_a = dns_resource_record_new_full(DNS_CLASS_IN, DNS_TYPE_A, "a.example.com");
|
||||
ASSERT_NOT_NULL(rr_a);
|
||||
rr_a->a.in_addr.s_addr = htobe32(0xc0a8017f);
|
||||
dns_answer_add(a, rr_a, 1, DNS_ANSWER_CACHEABLE, NULL);
|
||||
|
||||
rr_b = dns_resource_record_new_full(DNS_CLASS_IN, DNS_TYPE_A, "b.example.com");
|
||||
ASSERT_NOT_NULL(rr_b);
|
||||
rr_b->a.in_addr.s_addr = htobe32(0xc0a80180);
|
||||
dns_answer_add(b, rr_b, 1, DNS_ANSWER_CACHEABLE, NULL);
|
||||
|
||||
ASSERT_OK(dns_answer_extend(&a, b));
|
||||
ASSERT_TRUE(a != b);
|
||||
|
||||
ASSERT_TRUE(dns_answer_match_key(a, rr_a->key, NULL));
|
||||
ASSERT_TRUE(dns_answer_match_key(a, rr_b->key, NULL));
|
||||
|
||||
ASSERT_TRUE(dns_answer_match_key(b, rr_b->key, NULL));
|
||||
ASSERT_FALSE(dns_answer_match_key(b, rr_a->key, NULL));
|
||||
}
|
||||
|
||||
DEFINE_TEST_MAIN(LOG_DEBUG);
|
||||
|
||||
Reference in New Issue
Block a user