[Libosinfo] [PATCH 7/8] tests: Add testcases for ID collision in OsinfoList

Christophe Fergeau cfergeau at redhat.com
Thu Nov 5 16:20:45 UTC 2015


This will detect issues fixed by the commit fixing osinfo_list_add.
---
 test/test-list.c | 32 +++++++++++++++++++++++++++++++-
 1 file changed, 31 insertions(+), 1 deletion(-)

diff --git a/test/test-list.c b/test/test-list.c
index d9076b8..fac27b5 100644
--- a/test/test-list.c
+++ b/test/test-list.c
@@ -96,7 +96,7 @@ START_TEST(test_lookup)
 
     osinfo_list_add(list, ent);
 
-    fail_unless(osinfo_list_get_length(list) == 1, "List was empty");
+    fail_unless(osinfo_list_get_length(list) == 1, "List does not contain a single element");
     fail_unless(osinfo_list_get_nth(list, 0) == ent, "Lookup wrong element");
     fail_unless(osinfo_list_find_by_id(list, "wibble") != NULL, "Could not find element");
     fail_unless(osinfo_list_find_by_id(list, "fish") == NULL, "Found wrong element");
@@ -107,12 +107,36 @@ START_TEST(test_lookup)
 END_TEST
 
 
+
+START_TEST(test_duplicate)
+{
+    OsinfoList *list = g_object_new(osinfo_dummy_list_get_type(), NULL);
+    OsinfoEntity *ent = g_object_new(osinfo_dummy_get_type(), "id", "wibble", NULL);
+    OsinfoEntity *ent_dup = g_object_new(osinfo_dummy_get_type(), "id", "wibble", NULL);
+
+    osinfo_list_add(list, ent);
+    osinfo_list_add(list, ent_dup);
+
+    fail_unless(osinfo_list_get_length(list) == 1, "List does not contain a single element");
+    fail_unless(osinfo_list_get_nth(list, 0) == ent_dup, "Lookup wrong element");
+    fail_unless(osinfo_list_find_by_id(list, "wibble") != NULL, "Could not find element");
+    fail_unless(osinfo_list_find_by_id(list, "fish") == NULL, "Found wrong element");
+
+    g_object_unref(ent);
+    g_object_unref(ent_dup);
+    g_object_unref(list);
+}
+END_TEST
+
+
+
 START_TEST(test_union)
 {
     OsinfoList *list1 = g_object_new(osinfo_dummy_list_get_type(), NULL);
     OsinfoList *list2 = g_object_new(osinfo_dummy_list_get_type(), NULL);
     OsinfoList *list3 = g_object_new(osinfo_dummy_list_get_type(), NULL);
     OsinfoEntity *ent1 = g_object_new(osinfo_dummy_get_type(), "id", "wibble1", NULL);
+    OsinfoEntity *ent1_dup = g_object_new(osinfo_dummy_get_type(), "id", "wibble1", NULL);
     OsinfoEntity *ent2 = g_object_new(osinfo_dummy_get_type(), "id", "wibble2", NULL);
     OsinfoEntity *ent3 = g_object_new(osinfo_dummy_get_type(), "id", "wibble3", NULL);
     OsinfoEntity *ent4 = g_object_new(osinfo_dummy_get_type(), "id", "wibble4", NULL);
@@ -122,6 +146,7 @@ START_TEST(test_union)
     osinfo_list_add(list1, ent3);
 
     osinfo_list_add(list2, ent1);
+    osinfo_list_add(list2, ent1_dup);
     osinfo_list_add(list2, ent4);
 
     osinfo_list_add_union(list3, list1, list2);
@@ -154,6 +179,7 @@ START_TEST(test_union)
     fail_unless(!hasBad, "List had unexpected entity");
 
     g_object_unref(ent1);
+    g_object_unref(ent1_dup);
     g_object_unref(ent2);
     g_object_unref(ent3);
     g_object_unref(ent4);
@@ -170,6 +196,7 @@ START_TEST(test_intersect)
     OsinfoList *list2 = g_object_new(osinfo_dummy_list_get_type(), NULL);
     OsinfoList *list3 = g_object_new(osinfo_dummy_list_get_type(), NULL);
     OsinfoEntity *ent1 = g_object_new(osinfo_dummy_get_type(), "id", "wibble1", NULL);
+    OsinfoEntity *ent1_dup = g_object_new(osinfo_dummy_get_type(), "id", "wibble1", NULL);
     OsinfoEntity *ent2 = g_object_new(osinfo_dummy_get_type(), "id", "wibble2", NULL);
     OsinfoEntity *ent3 = g_object_new(osinfo_dummy_get_type(), "id", "wibble3", NULL);
     OsinfoEntity *ent4 = g_object_new(osinfo_dummy_get_type(), "id", "wibble4", NULL);
@@ -179,6 +206,7 @@ START_TEST(test_intersect)
     osinfo_list_add(list1, ent3);
 
     osinfo_list_add(list2, ent1);
+    osinfo_list_add(list2, ent1_dup);
     osinfo_list_add(list2, ent3);
     osinfo_list_add(list2, ent4);
 
@@ -212,6 +240,7 @@ START_TEST(test_intersect)
     fail_unless(!hasBad, "List had unexpected entity");
 
     g_object_unref(ent1);
+    g_object_unref(ent1_dup);
     g_object_unref(ent2);
     g_object_unref(ent3);
     g_object_unref(ent4);
@@ -370,6 +399,7 @@ list_suite(void)
     TCase *tc = tcase_create("Core");
     tcase_add_test(tc, test_basic);
     tcase_add_test(tc, test_lookup);
+    tcase_add_test(tc, test_duplicate);
     tcase_add_test(tc, test_union);
     tcase_add_test(tc, test_intersect);
     tcase_add_test(tc, test_filter);
-- 
2.5.0




More information about the Libosinfo mailing list