test/test_hash_key.cpp

changeset 604
056e5f592d84
parent 603
c49104015a6b
--- 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<unsigned char const *>(str));
-    EXPECT_EQ(bytes_key.data.obj, (void *) str);
+    EXPECT_EQ(bytes_key.data.cobj, reinterpret_cast<void const *>(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<unsigned char const *>(str), 0);
+    auto obj_key = cx_hash_key(
+            reinterpret_cast<void const *>(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<unsigned char const *>(str));
+    EXPECT_EQ(bytes_key.data.cobj, reinterpret_cast<void const *>(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);
+}

mercurial