From 4c2d48ef721584eefa4df0432422be03acb4e03c Mon Sep 17 00:00:00 2001 From: James Coglan Date: Wed, 12 Jun 2024 16:33:02 +0100 Subject: [PATCH] resolved: tests for dns_resource_record_equal(); HINFO records --- src/resolve/test-dns-rr.c | 64 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/src/resolve/test-dns-rr.c b/src/resolve/test-dns-rr.c index 1058c4fe3f2..ef2db85605f 100644 --- a/src/resolve/test-dns-rr.c +++ b/src/resolve/test-dns-rr.c @@ -1190,4 +1190,68 @@ TEST(dns_resource_record_equal_ptr_fail) { ASSERT_FALSE(dns_resource_record_equal(a, b)); } +/* ================================================================ + * dns_resource_record_equal() : HINFO + * ================================================================ */ + +TEST(dns_resource_record_equal_hinfo_copy) { + _cleanup_(dns_resource_record_unrefp) DnsResourceRecord *a = NULL, *b = NULL; + + a = dns_resource_record_new_full(DNS_CLASS_IN, DNS_TYPE_HINFO, "www.example.com"); + ASSERT_NOT_NULL(a); + a->hinfo.cpu = strdup("intel x64"); + a->hinfo.os = strdup("linux"); + + b = dns_resource_record_copy(a); + ASSERT_NOT_NULL(b); + ASSERT_TRUE(dns_resource_record_equal(a, b)); +} + +TEST(dns_resource_record_equal_hinfo_case_insensitive) { + _cleanup_(dns_resource_record_unrefp) DnsResourceRecord *a = NULL, *b = NULL; + + a = dns_resource_record_new_full(DNS_CLASS_IN, DNS_TYPE_HINFO, "www.example.com"); + ASSERT_NOT_NULL(a); + a->hinfo.cpu = strdup("intel x64"); + a->hinfo.os = strdup("linux"); + + b = dns_resource_record_copy(a); + ASSERT_NOT_NULL(b); + free(b->hinfo.cpu); + b->hinfo.cpu = strdup("INTEL x64"); + free(b->hinfo.os); + b->hinfo.os = strdup("LINUX"); + ASSERT_TRUE(dns_resource_record_equal(a, b)); +} + +TEST(dns_resource_record_equal_hinfo_bad_cpu) { + _cleanup_(dns_resource_record_unrefp) DnsResourceRecord *a = NULL, *b = NULL; + + a = dns_resource_record_new_full(DNS_CLASS_IN, DNS_TYPE_HINFO, "www.example.com"); + ASSERT_NOT_NULL(a); + a->hinfo.cpu = strdup("intel x64"); + a->hinfo.os = strdup("linux"); + + b = dns_resource_record_copy(a); + ASSERT_NOT_NULL(b); + free(b->hinfo.cpu); + b->hinfo.cpu = strdup("arm64"); + ASSERT_FALSE(dns_resource_record_equal(a, b)); +} + +TEST(dns_resource_record_equal_hinfo_bad_os) { + _cleanup_(dns_resource_record_unrefp) DnsResourceRecord *a = NULL, *b = NULL; + + a = dns_resource_record_new_full(DNS_CLASS_IN, DNS_TYPE_HINFO, "www.example.com"); + ASSERT_NOT_NULL(a); + a->hinfo.cpu = strdup("intel x64"); + a->hinfo.os = strdup("linux"); + + b = dns_resource_record_copy(a); + ASSERT_NOT_NULL(b); + free(b->hinfo.os); + b->hinfo.os = strdup("windows"); + ASSERT_FALSE(dns_resource_record_equal(a, b)); +} + DEFINE_TEST_MAIN(LOG_DEBUG); -- 2.47.3