diff -r c49104015a6b -r 056e5f592d84 test/test_hash_key.cpp --- a/test/test_hash_key.cpp Sun Nov 06 14:46:59 2022 +0100 +++ b/test/test_hash_key.cpp Sun Nov 06 16:07:32 2022 +0100 @@ -32,7 +32,7 @@ TEST(cx_hash_key, functions) { auto str = "my key"; - auto len = 1 + strlen(str); + auto len = strlen(str); auto str_key = cx_hash_key_str(str); auto bytes_key = cx_hash_key_bytes( @@ -47,5 +47,41 @@ EXPECT_EQ(bytes_key.len, len); EXPECT_EQ(str_key.data.cstr, str); EXPECT_EQ(bytes_key.data.cbytes, reinterpret_cast(str)); - EXPECT_EQ(bytes_key.data.obj, (void *) str); + EXPECT_EQ(bytes_key.data.cobj, reinterpret_cast(str)); } + +TEST(cx_hash_key, empty_string) { + auto str = ""; + + auto str_key = cx_hash_key_str(str); + auto bytes_key = cx_hash_key_bytes( + reinterpret_cast(str), 0); + auto obj_key = cx_hash_key( + reinterpret_cast(str), 0); + + EXPECT_EQ(bytes_key.hash, 4152238450u); + EXPECT_EQ(str_key.hash, 4152238450u); + EXPECT_EQ(obj_key.hash, 4152238450u); + EXPECT_EQ(str_key.len, 0); + EXPECT_EQ(bytes_key.len, 0); + EXPECT_EQ(bytes_key.len, 0); + EXPECT_EQ(str_key.data.cstr, str); + EXPECT_EQ(bytes_key.data.cbytes, reinterpret_cast(str)); + EXPECT_EQ(bytes_key.data.cobj, reinterpret_cast(str)); +} + +TEST(cx_hash_key, null_ptr) { + auto str_key = cx_hash_key_str(nullptr); + auto bytes_key = cx_hash_key_bytes(nullptr, 0); + auto obj_key = cx_hash_key(nullptr, 0); + + EXPECT_EQ(bytes_key.hash, 1574210520u); + EXPECT_EQ(str_key.hash, 1574210520u); + EXPECT_EQ(obj_key.hash, 1574210520u); + EXPECT_EQ(str_key.len, 0); + EXPECT_EQ(bytes_key.len, 0); + EXPECT_EQ(bytes_key.len, 0); + EXPECT_EQ(str_key.data.cstr, nullptr); + EXPECT_EQ(bytes_key.data.cbytes, nullptr); + EXPECT_EQ(bytes_key.data.cobj, nullptr); +}