[glib/th/hash-steal-extended-set: 1/2] ghash/tests: add test cases for g_hash_table_steal_extended() for a set




commit 8cc14964de943b09f1a30b5131774074cec3cfaf
Author: Thomas Haller <thaller redhat com>
Date:   Tue Oct 18 20:57:59 2022 +0200

    ghash/tests: add test cases for g_hash_table_steal_extended() for a set

 glib/tests/hash.c | 41 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 41 insertions(+)
---
diff --git a/glib/tests/hash.c b/glib/tests/hash.c
index 604dcc0492..121e14548b 100644
--- a/glib/tests/hash.c
+++ b/glib/tests/hash.c
@@ -1271,6 +1271,47 @@ test_steal_extended (void)
   g_assert_cmpuint (g_hash_table_size (hash), ==, 5);
 
   g_hash_table_unref (hash);
+
+  hash = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
+
+  g_hash_table_add (hash, g_strdup ("a"));
+  g_hash_table_add (hash, g_strdup ("b"));
+  g_hash_table_add (hash, g_strdup ("c"));
+  g_hash_table_add (hash, g_strdup ("d"));
+  g_hash_table_add (hash, g_strdup ("e"));
+
+  g_assert_true (g_hash_table_steal_extended (hash, "a", (gpointer *) &stolen_key,
+                                              (gpointer *) &stolen_value));
+  g_assert_cmpstr (stolen_key, ==, "a");
+  g_assert_cmpstr (stolen_value, ==, NULL);
+  g_clear_pointer (&stolen_key, g_free);
+
+  g_assert_true (g_hash_table_steal_extended (hash, "b", (gpointer *) &stolen_key,
+                                              NULL));
+  g_assert_cmpstr (stolen_key, ==, "b");
+  g_clear_pointer (&stolen_key, g_free);
+
+  g_assert_true (g_hash_table_steal_extended (hash, "c", NULL,
+                                              (gpointer *) &stolen_value));
+  g_assert_cmpstr (stolen_value, ==, "c");
+  g_clear_pointer (&stolen_value, g_free);
+
+  g_assert_true (g_hash_table_steal_extended (hash, "d", (gpointer *) &stolen_key,
+                                              (gpointer *) &stolen_value));
+  g_assert_cmpstr (stolen_key, ==, "d");
+  g_assert_cmpstr (stolen_value, ==, NULL);
+  g_clear_pointer (&stolen_key, g_free);
+
+  g_hash_table_replace (hash, g_strdup ("x"), NULL);
+
+  g_assert_true (g_hash_table_steal_extended (hash, "e", (gpointer *) &stolen_key,
+                                              (gpointer *) &stolen_value));
+  g_assert_cmpstr (stolen_key, ==, "e");
+  g_assert_cmpstr (stolen_value, ==, "e");
+  g_clear_pointer (&stolen_key, g_free);
+  stolen_value = NULL;
+
+  g_hash_table_unref (hash);
 }
 
 /* Test that passing %NULL to the optional g_hash_table_steal_extended()


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]