tests/test_hash_key.c

changeset 1402
6fa42f7e2624
parent 890
54565fd74e74
--- a/tests/test_hash_key.c	Sat Sep 27 17:53:41 2025 +0200
+++ b/tests/test_hash_key.c	Sun Sep 28 22:32:42 2025 +0200
@@ -41,14 +41,68 @@
     CxHashKey cxstr_key = cx_hash_key_cxstr(cx_str(str));
 
     CX_TEST_DO {
+        CX_TEST_ASSERT(bytes_key.hash == 1269566022);
         CX_TEST_ASSERT(str_key.hash == bytes_key.hash);
         CX_TEST_ASSERT(obj_key.hash == bytes_key.hash);
         CX_TEST_ASSERT(cxstr_key.hash == bytes_key.hash);
         CX_TEST_ASSERT(str_key.len == len);
+        CX_TEST_ASSERT(str_key.data == str);
         CX_TEST_ASSERT(cxstr_key.len == len);
+        CX_TEST_ASSERT(cxstr_key.data == str);
+        CX_TEST_ASSERT(obj_key.len == len);
+        CX_TEST_ASSERT(obj_key.data == str);
         CX_TEST_ASSERT(bytes_key.len == len);
+        CX_TEST_ASSERT(bytes_key.data == str);
+    }
+}
+
+CX_TEST(test_hash_key_int_functions) {
+    uint32_t a = 0xabc01337u;
+    uint64_t b = 0xabc0133747110815ull;
+
+    CxHashKey ak = cx_hash_key_u32(a);
+    CxHashKey bk = cx_hash_key_u64(b);
+
+    CX_TEST_DO {
+        CX_TEST_ASSERT(ak.data == NULL);
+        CX_TEST_ASSERT(ak.len == 0);
+        CX_TEST_ASSERT(ak.hash == 3897006249);
+        CX_TEST_ASSERT(bk.data == NULL);
+        CX_TEST_ASSERT(bk.len == 0);
+        CX_TEST_ASSERT(bk.hash == 17452435587688253422ull);
+    }
+}
+
+CX_TEST(test_hash_key_macro) {
+    const char *str = "my key";
+    size_t len = strlen(str);
+    uint32_t a = 0xabc01337u;
+    uint64_t b = 0xabc0133747110815ull;
+
+    CxHashKey str_key = CX_HASH_KEY(str);
+    CxHashKey bytes_key = CX_HASH_KEY((const unsigned char*)str);
+    CxHashKey mutstr_key = CX_HASH_KEY(cx_mutstr((char*)str));
+    CxHashKey cxstr_key = CX_HASH_KEY(cx_str(str));
+    CxHashKey ak = CX_HASH_KEY(a);
+    CxHashKey bk = CX_HASH_KEY(b);
+
+    CX_TEST_DO {
+        CX_TEST_ASSERT(bytes_key.hash == 1269566022);
+        CX_TEST_ASSERT(str_key.hash == bytes_key.hash);
+        CX_TEST_ASSERT(cxstr_key.hash == bytes_key.hash);
+        CX_TEST_ASSERT(mutstr_key.hash == bytes_key.hash);
+        CX_TEST_ASSERT(str_key.len == len);
+        CX_TEST_ASSERT(str_key.data == str);
+        CX_TEST_ASSERT(cxstr_key.len == len);
+        CX_TEST_ASSERT(cxstr_key.data == str);
         CX_TEST_ASSERT(bytes_key.len == len);
-        CX_TEST_ASSERT(str_key.data == str);
+        CX_TEST_ASSERT(bytes_key.data == str);
+        CX_TEST_ASSERT(ak.data == NULL);
+        CX_TEST_ASSERT(ak.len == 0);
+        CX_TEST_ASSERT(ak.hash == 3897006249);
+        CX_TEST_ASSERT(bk.data == NULL);
+        CX_TEST_ASSERT(bk.len == 0);
+        CX_TEST_ASSERT(bk.hash == 17452435587688253422ull);
     }
 }
 
@@ -90,6 +144,7 @@
     CxTestSuite *suite = cx_test_suite_new("hash_key");
 
     cx_test_register(suite, test_hash_key_functions);
+    cx_test_register(suite, test_hash_key_int_functions);
     cx_test_register(suite, test_hash_key_empty_string);
     cx_test_register(suite, test_hash_key_null);
 

mercurial