]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
test: add unit test for dns_name_parent()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 20 Oct 2025 03:01:22 +0000 (12:01 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 20 Oct 2025 03:01:22 +0000 (12:01 +0900)
src/test/test-dns-domain.c

index f1d11305c1d821e10f461e3b9a0fce4c4c40dbe1..3f0a384214d9a4dfe0702257cc7f6ca85bae2746 100644 (file)
@@ -842,4 +842,40 @@ TEST(dns_name_dot_suffixed) {
         assert_se(dns_name_dot_suffixed("foo.bar\\.\\.\\.\\.") == 0);
 }
 
+TEST(dns_name_parent) {
+        const char *name = "hoge.hoge.foo.bar.example.com";
+
+        ASSERT_OK_EQ(dns_name_parent(&name), (int) STRLEN("hoge"));
+        ASSERT_STREQ(name, "hoge.foo.bar.example.com");
+        ASSERT_OK_EQ(dns_name_parent(&name), (int) STRLEN("hoge"));
+        ASSERT_STREQ(name, "foo.bar.example.com");
+        ASSERT_OK_EQ(dns_name_parent(&name), (int) STRLEN("foo"));
+        ASSERT_STREQ(name, "bar.example.com");
+        ASSERT_OK_EQ(dns_name_parent(&name), (int) STRLEN("bar"));
+        ASSERT_STREQ(name, "example.com");
+        ASSERT_OK_EQ(dns_name_parent(&name), (int) STRLEN("example"));
+        ASSERT_STREQ(name, "com");
+        ASSERT_OK_EQ(dns_name_parent(&name), (int) STRLEN("com"));
+        ASSERT_STREQ(name, "");
+        ASSERT_OK_EQ(dns_name_parent(&name), (int) STRLEN(""));
+        ASSERT_STREQ(name, "");
+
+        name = "hoge.hoge.foo.bar.example.com.";
+
+        ASSERT_OK_EQ(dns_name_parent(&name), (int) STRLEN("hoge"));
+        ASSERT_STREQ(name, "hoge.foo.bar.example.com.");
+        ASSERT_OK_EQ(dns_name_parent(&name), (int) STRLEN("hoge"));
+        ASSERT_STREQ(name, "foo.bar.example.com.");
+        ASSERT_OK_EQ(dns_name_parent(&name), (int) STRLEN("foo"));
+        ASSERT_STREQ(name, "bar.example.com.");
+        ASSERT_OK_EQ(dns_name_parent(&name), (int) STRLEN("bar"));
+        ASSERT_STREQ(name, "example.com.");
+        ASSERT_OK_EQ(dns_name_parent(&name), (int) STRLEN("example"));
+        ASSERT_STREQ(name, "com.");
+        ASSERT_OK_EQ(dns_name_parent(&name), (int) STRLEN("com"));
+        ASSERT_STREQ(name, ""); /* The trailint dot is suppressed. */
+        ASSERT_OK_EQ(dns_name_parent(&name), (int) STRLEN(""));
+        ASSERT_STREQ(name, "");
+}
+
 DEFINE_TEST_MAIN(LOG_DEBUG);