ASSERT_NOT_NULL(sd);
}
+/* ================================================================
+ * dns_search_domain_unlink()
+ * ================================================================ */
+
+TEST(dns_search_domain_unlink_system) {
+ Manager manager = {};
+ _cleanup_(dns_search_domain_unrefp) DnsSearchDomain *sd1 = NULL, *sd3 = NULL;
+ DnsSearchDomain *sd2 = NULL;
+ const char *names[2];
+ size_t i = 0;
+
+ dns_search_domain_new(&manager, &sd1, DNS_SEARCH_DOMAIN_SYSTEM, NULL, "local");
+ ASSERT_NOT_NULL(sd1);
+
+ dns_search_domain_new(&manager, &sd2, DNS_SEARCH_DOMAIN_SYSTEM, NULL, "vpn.example.com");
+ ASSERT_NOT_NULL(sd2);
+
+ dns_search_domain_new(&manager, &sd3, DNS_SEARCH_DOMAIN_SYSTEM, NULL, "org");
+ ASSERT_NOT_NULL(sd3);
+
+ ASSERT_TRUE(sd2->linked);
+ ASSERT_EQ(manager.n_search_domains, 3u);
+
+ dns_search_domain_unlink(sd2);
+
+ ASSERT_EQ(manager.n_search_domains, 2u);
+
+ LIST_FOREACH(domains, d, manager.search_domains) {
+ names[i++] = DNS_SEARCH_DOMAIN_NAME(d);
+ }
+
+ ASSERT_STREQ(names[0], "local");
+ ASSERT_STREQ(names[1], "org");
+}
+
+TEST(dns_search_domain_unlink_link) {
+ Manager manager = {};
+ Link *link = NULL;
+ _cleanup_(dns_search_domain_unrefp) DnsSearchDomain *sd1 = NULL, *sd3 = NULL;
+ DnsSearchDomain *sd2 = NULL;
+ const char *names[2];
+ unsigned int i = 0;
+
+ link_new(&manager, &link, 1);
+ ASSERT_NOT_NULL(link);
+
+ dns_search_domain_new(&manager, &sd1, DNS_SEARCH_DOMAIN_LINK, link, "local");
+ ASSERT_NOT_NULL(sd1);
+
+ dns_search_domain_new(&manager, &sd2, DNS_SEARCH_DOMAIN_LINK, link, "vpn.example.com");
+ ASSERT_NOT_NULL(sd2);
+
+ dns_search_domain_new(&manager, &sd3, DNS_SEARCH_DOMAIN_LINK, link, "org");
+ ASSERT_NOT_NULL(sd3);
+
+ ASSERT_TRUE(sd2->linked);
+ ASSERT_EQ(link->n_search_domains, 3u);
+
+ dns_search_domain_unlink(sd2);
+
+ ASSERT_EQ(link->n_search_domains, 2u);
+
+ LIST_FOREACH(domains, d, link->search_domains) {
+ names[i++] = DNS_SEARCH_DOMAIN_NAME(d);
+ }
+
+ ASSERT_STREQ(names[0], "local");
+ ASSERT_STREQ(names[1], "org");
+}
+
DEFINE_TEST_MAIN(LOG_DEBUG);