]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
resolved: tests for dns_question_add()
authorJames Coglan <james@neighbourhood.ie>
Thu, 30 May 2024 15:55:34 +0000 (16:55 +0100)
committerLuca Boccassi <bluca@debian.org>
Tue, 23 Jul 2024 12:09:45 +0000 (13:09 +0100)
src/resolve/meson.build
src/resolve/test-dns-question.c [new file with mode: 0644]

index 20caecee0f9a527669deaf55e98e4f6c624be2d6..4fc2bc8006e6e5bab3e32ef13730e89c97dee3c2 100644 (file)
@@ -174,6 +174,9 @@ executables += [
         resolve_test_template + {
                 'sources' : files('test-dns-rr.c'),
         },
+        resolve_test_template + {
+                'sources' : files('test-dns-question.c'),
+        },
         resolve_test_template + {
                 'sources' : files(
                         'test-resolved-etc-hosts.c',
diff --git a/src/resolve/test-dns-question.c b/src/resolve/test-dns-question.c
new file mode 100644 (file)
index 0000000..6ea6ef7
--- /dev/null
@@ -0,0 +1,53 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+
+#include "dns-type.h"
+#include "resolved-dns-question.h"
+#include "resolved-dns-rr.h"
+
+#include "log.h"
+#include "tests.h"
+
+/* ================================================================
+ * dns_question_add()
+ * ================================================================ */
+
+TEST(dns_question_add_full) {
+        _cleanup_(dns_question_unrefp) DnsQuestion *question = NULL;
+        _cleanup_(dns_resource_key_unrefp) DnsResourceKey *key = NULL;
+
+        question = dns_question_new(0);
+        ASSERT_NOT_NULL(question);
+
+        key = dns_resource_key_new(DNS_CLASS_IN, DNS_TYPE_A, "www.example.com");
+        ASSERT_NOT_NULL(key);
+
+        ASSERT_ERROR(dns_question_add(question, key, 0), ENOSPC);
+
+        ASSERT_FALSE(dns_question_contains_key(question, key));
+
+        assert(dns_question_size(question) == 0);
+        assert(dns_question_isempty(question) == 1);
+}
+
+TEST(dns_question_add_with_space) {
+        _cleanup_(dns_question_unrefp) DnsQuestion *question = NULL;
+        _cleanup_(dns_resource_key_unrefp) DnsResourceKey *key = NULL;
+
+        assert(dns_question_size(question) == 0);
+        assert(dns_question_isempty(question) == 1);
+
+        question = dns_question_new(1);
+        ASSERT_NOT_NULL(question);
+
+        key = dns_resource_key_new(DNS_CLASS_IN, DNS_TYPE_A, "www.example.com");
+        ASSERT_NOT_NULL(key);
+
+        ASSERT_OK(dns_question_add(question, key, 0));
+
+        ASSERT_TRUE(dns_question_contains_key(question, key));
+
+        assert(dns_question_size(question) == 1);
+        assert(dns_question_isempty(question) == 0);
+}
+
+DEFINE_TEST_MAIN(LOG_DEBUG);