diff --git a/src/test/test-dns-domain.c b/src/test/test-dns-domain.c index f1d11305c1..3f0a384214 100644 --- a/src/test/test-dns-domain.c +++ b/src/test/test-dns-domain.c @@ -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);