--- 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);