| 30 |
30 |
| 31 #include <gtest/gtest.h> |
31 #include <gtest/gtest.h> |
| 32 |
32 |
| 33 TEST(cx_hash_key, functions) { |
33 TEST(cx_hash_key, functions) { |
| 34 auto str = "my key"; |
34 auto str = "my key"; |
| 35 auto len = 1 + strlen(str); |
35 auto len = strlen(str); |
| 36 |
36 |
| 37 auto str_key = cx_hash_key_str(str); |
37 auto str_key = cx_hash_key_str(str); |
| 38 auto bytes_key = cx_hash_key_bytes( |
38 auto bytes_key = cx_hash_key_bytes( |
| 39 reinterpret_cast<unsigned char const *>(str), len); |
39 reinterpret_cast<unsigned char const *>(str), len); |
| 40 auto obj_key = cx_hash_key( |
40 auto obj_key = cx_hash_key( |
| 45 EXPECT_EQ(str_key.len, len); |
45 EXPECT_EQ(str_key.len, len); |
| 46 EXPECT_EQ(bytes_key.len, len); |
46 EXPECT_EQ(bytes_key.len, len); |
| 47 EXPECT_EQ(bytes_key.len, len); |
47 EXPECT_EQ(bytes_key.len, len); |
| 48 EXPECT_EQ(str_key.data.cstr, str); |
48 EXPECT_EQ(str_key.data.cstr, str); |
| 49 EXPECT_EQ(bytes_key.data.cbytes, reinterpret_cast<unsigned char const *>(str)); |
49 EXPECT_EQ(bytes_key.data.cbytes, reinterpret_cast<unsigned char const *>(str)); |
| 50 EXPECT_EQ(bytes_key.data.obj, (void *) str); |
50 EXPECT_EQ(bytes_key.data.cobj, reinterpret_cast<void const *>(str)); |
| 51 } |
51 } |
| |
52 |
| |
53 TEST(cx_hash_key, empty_string) { |
| |
54 auto str = ""; |
| |
55 |
| |
56 auto str_key = cx_hash_key_str(str); |
| |
57 auto bytes_key = cx_hash_key_bytes( |
| |
58 reinterpret_cast<unsigned char const *>(str), 0); |
| |
59 auto obj_key = cx_hash_key( |
| |
60 reinterpret_cast<void const *>(str), 0); |
| |
61 |
| |
62 EXPECT_EQ(bytes_key.hash, 4152238450u); |
| |
63 EXPECT_EQ(str_key.hash, 4152238450u); |
| |
64 EXPECT_EQ(obj_key.hash, 4152238450u); |
| |
65 EXPECT_EQ(str_key.len, 0); |
| |
66 EXPECT_EQ(bytes_key.len, 0); |
| |
67 EXPECT_EQ(bytes_key.len, 0); |
| |
68 EXPECT_EQ(str_key.data.cstr, str); |
| |
69 EXPECT_EQ(bytes_key.data.cbytes, reinterpret_cast<unsigned char const *>(str)); |
| |
70 EXPECT_EQ(bytes_key.data.cobj, reinterpret_cast<void const *>(str)); |
| |
71 } |
| |
72 |
| |
73 TEST(cx_hash_key, null_ptr) { |
| |
74 auto str_key = cx_hash_key_str(nullptr); |
| |
75 auto bytes_key = cx_hash_key_bytes(nullptr, 0); |
| |
76 auto obj_key = cx_hash_key(nullptr, 0); |
| |
77 |
| |
78 EXPECT_EQ(bytes_key.hash, 1574210520u); |
| |
79 EXPECT_EQ(str_key.hash, 1574210520u); |
| |
80 EXPECT_EQ(obj_key.hash, 1574210520u); |
| |
81 EXPECT_EQ(str_key.len, 0); |
| |
82 EXPECT_EQ(bytes_key.len, 0); |
| |
83 EXPECT_EQ(bytes_key.len, 0); |
| |
84 EXPECT_EQ(str_key.data.cstr, nullptr); |
| |
85 EXPECT_EQ(bytes_key.data.cbytes, nullptr); |
| |
86 EXPECT_EQ(bytes_key.data.cobj, nullptr); |
| |
87 } |