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 } |