[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