tests/test_hash_key.c

Sun, 23 Nov 2025 13:15:19 +0100

author
Mike Becker <universe@uap-core.de>
date
Sun, 23 Nov 2025 13:15:19 +0100
changeset 1508
dfc0ddd9571e
parent 1498
d20c0d30ab3d
permissions
-rw-r--r--

optimize sorted insertion by using the infimum instead of the supremum

The reason is that the supremum returns the equal element with the smallest index, and we want the largest.
Therefore, we use the infimum, which already gives us the largest index when there are equal elements, and increase the index by one. The infimum is also guaranteed to exist in that case.

768
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1 /*
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
3 *
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
4 * Copyright 2023 Mike Becker, Olaf Wintermann All rights reserved.
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
5 *
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
6 * Redistribution and use in source and binary forms, with or without
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
7 * modification, are permitted provided that the following conditions are met:
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
8 *
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
9 * 1. Redistributions of source code must retain the above copyright
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
10 * notice, this list of conditions and the following disclaimer.
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
11 *
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
12 * 2. Redistributions in binary form must reproduce the above copyright
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
13 * notice, this list of conditions and the following disclaimer in the
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
14 * documentation and/or other materials provided with the distribution.
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
15 *
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
17 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
26 * POSSIBILITY OF SUCH DAMAGE.
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
27 */
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
28
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
29 #include "cx/test.h"
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
30
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
31 #include "cx/hash_key.h"
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
32 #include "cx/string.h"
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
33
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
34 CX_TEST(test_hash_key_functions) {
890
54565fd74e74 move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents: 768
diff changeset
35 const char *str = "my key";
1498
d20c0d30ab3d complete test coverage for CxHashKey
Mike Becker <universe@uap-core.de>
parents: 1402
diff changeset
36 const unsigned char *ustr = (const unsigned char *) str;
768
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
37 size_t len = strlen(str);
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
38
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
39 CxHashKey str_key = cx_hash_key_str(str);
1498
d20c0d30ab3d complete test coverage for CxHashKey
Mike Becker <universe@uap-core.de>
parents: 1402
diff changeset
40 CxHashKey ustr_key = cx_hash_key_ustr(ustr);
d20c0d30ab3d complete test coverage for CxHashKey
Mike Becker <universe@uap-core.de>
parents: 1402
diff changeset
41 CxHashKey bytes_key = cx_hash_key_bytes(ustr, len);
768
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
42 CxHashKey obj_key = cx_hash_key(str, len);
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
43 CxHashKey cxstr_key = cx_hash_key_cxstr(cx_str(str));
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
44
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
45 CX_TEST_DO {
1402
6fa42f7e2624 add generic CX_HASH_KEY() macro
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
46 CX_TEST_ASSERT(bytes_key.hash == 1269566022);
768
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
47 CX_TEST_ASSERT(str_key.hash == bytes_key.hash);
1498
d20c0d30ab3d complete test coverage for CxHashKey
Mike Becker <universe@uap-core.de>
parents: 1402
diff changeset
48 CX_TEST_ASSERT(ustr_key.hash == bytes_key.hash);
768
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
49 CX_TEST_ASSERT(obj_key.hash == bytes_key.hash);
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
50 CX_TEST_ASSERT(cxstr_key.hash == bytes_key.hash);
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
51 CX_TEST_ASSERT(str_key.len == len);
1402
6fa42f7e2624 add generic CX_HASH_KEY() macro
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
52 CX_TEST_ASSERT(str_key.data == str);
1498
d20c0d30ab3d complete test coverage for CxHashKey
Mike Becker <universe@uap-core.de>
parents: 1402
diff changeset
53 CX_TEST_ASSERT(ustr_key.len == len);
d20c0d30ab3d complete test coverage for CxHashKey
Mike Becker <universe@uap-core.de>
parents: 1402
diff changeset
54 CX_TEST_ASSERT(ustr_key.data == ustr);
768
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
55 CX_TEST_ASSERT(cxstr_key.len == len);
1402
6fa42f7e2624 add generic CX_HASH_KEY() macro
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
56 CX_TEST_ASSERT(cxstr_key.data == str);
6fa42f7e2624 add generic CX_HASH_KEY() macro
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
57 CX_TEST_ASSERT(obj_key.len == len);
6fa42f7e2624 add generic CX_HASH_KEY() macro
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
58 CX_TEST_ASSERT(obj_key.data == str);
768
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
59 CX_TEST_ASSERT(bytes_key.len == len);
1402
6fa42f7e2624 add generic CX_HASH_KEY() macro
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
60 CX_TEST_ASSERT(bytes_key.data == str);
6fa42f7e2624 add generic CX_HASH_KEY() macro
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
61 }
6fa42f7e2624 add generic CX_HASH_KEY() macro
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
62 }
6fa42f7e2624 add generic CX_HASH_KEY() macro
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
63
6fa42f7e2624 add generic CX_HASH_KEY() macro
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
64 CX_TEST(test_hash_key_int_functions) {
6fa42f7e2624 add generic CX_HASH_KEY() macro
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
65 uint32_t a = 0xabc01337u;
6fa42f7e2624 add generic CX_HASH_KEY() macro
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
66 uint64_t b = 0xabc0133747110815ull;
6fa42f7e2624 add generic CX_HASH_KEY() macro
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
67
6fa42f7e2624 add generic CX_HASH_KEY() macro
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
68 CxHashKey ak = cx_hash_key_u32(a);
6fa42f7e2624 add generic CX_HASH_KEY() macro
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
69 CxHashKey bk = cx_hash_key_u64(b);
6fa42f7e2624 add generic CX_HASH_KEY() macro
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
70
6fa42f7e2624 add generic CX_HASH_KEY() macro
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
71 CX_TEST_DO {
6fa42f7e2624 add generic CX_HASH_KEY() macro
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
72 CX_TEST_ASSERT(ak.data == NULL);
6fa42f7e2624 add generic CX_HASH_KEY() macro
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
73 CX_TEST_ASSERT(ak.len == 0);
6fa42f7e2624 add generic CX_HASH_KEY() macro
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
74 CX_TEST_ASSERT(ak.hash == 3897006249);
6fa42f7e2624 add generic CX_HASH_KEY() macro
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
75 CX_TEST_ASSERT(bk.data == NULL);
6fa42f7e2624 add generic CX_HASH_KEY() macro
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
76 CX_TEST_ASSERT(bk.len == 0);
6fa42f7e2624 add generic CX_HASH_KEY() macro
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
77 CX_TEST_ASSERT(bk.hash == 17452435587688253422ull);
6fa42f7e2624 add generic CX_HASH_KEY() macro
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
78 }
6fa42f7e2624 add generic CX_HASH_KEY() macro
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
79 }
6fa42f7e2624 add generic CX_HASH_KEY() macro
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
80
6fa42f7e2624 add generic CX_HASH_KEY() macro
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
81 CX_TEST(test_hash_key_macro) {
6fa42f7e2624 add generic CX_HASH_KEY() macro
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
82 const char *str = "my key";
6fa42f7e2624 add generic CX_HASH_KEY() macro
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
83 size_t len = strlen(str);
6fa42f7e2624 add generic CX_HASH_KEY() macro
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
84 uint32_t a = 0xabc01337u;
6fa42f7e2624 add generic CX_HASH_KEY() macro
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
85 uint64_t b = 0xabc0133747110815ull;
6fa42f7e2624 add generic CX_HASH_KEY() macro
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
86
6fa42f7e2624 add generic CX_HASH_KEY() macro
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
87 CxHashKey str_key = CX_HASH_KEY(str);
6fa42f7e2624 add generic CX_HASH_KEY() macro
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
88 CxHashKey bytes_key = CX_HASH_KEY((const unsigned char*)str);
6fa42f7e2624 add generic CX_HASH_KEY() macro
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
89 CxHashKey mutstr_key = CX_HASH_KEY(cx_mutstr((char*)str));
6fa42f7e2624 add generic CX_HASH_KEY() macro
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
90 CxHashKey cxstr_key = CX_HASH_KEY(cx_str(str));
6fa42f7e2624 add generic CX_HASH_KEY() macro
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
91 CxHashKey ak = CX_HASH_KEY(a);
6fa42f7e2624 add generic CX_HASH_KEY() macro
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
92 CxHashKey bk = CX_HASH_KEY(b);
6fa42f7e2624 add generic CX_HASH_KEY() macro
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
93
6fa42f7e2624 add generic CX_HASH_KEY() macro
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
94 CX_TEST_DO {
6fa42f7e2624 add generic CX_HASH_KEY() macro
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
95 CX_TEST_ASSERT(bytes_key.hash == 1269566022);
6fa42f7e2624 add generic CX_HASH_KEY() macro
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
96 CX_TEST_ASSERT(str_key.hash == bytes_key.hash);
6fa42f7e2624 add generic CX_HASH_KEY() macro
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
97 CX_TEST_ASSERT(cxstr_key.hash == bytes_key.hash);
6fa42f7e2624 add generic CX_HASH_KEY() macro
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
98 CX_TEST_ASSERT(mutstr_key.hash == bytes_key.hash);
6fa42f7e2624 add generic CX_HASH_KEY() macro
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
99 CX_TEST_ASSERT(str_key.len == len);
6fa42f7e2624 add generic CX_HASH_KEY() macro
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
100 CX_TEST_ASSERT(str_key.data == str);
6fa42f7e2624 add generic CX_HASH_KEY() macro
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
101 CX_TEST_ASSERT(cxstr_key.len == len);
6fa42f7e2624 add generic CX_HASH_KEY() macro
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
102 CX_TEST_ASSERT(cxstr_key.data == str);
768
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
103 CX_TEST_ASSERT(bytes_key.len == len);
1402
6fa42f7e2624 add generic CX_HASH_KEY() macro
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
104 CX_TEST_ASSERT(bytes_key.data == str);
6fa42f7e2624 add generic CX_HASH_KEY() macro
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
105 CX_TEST_ASSERT(ak.data == NULL);
6fa42f7e2624 add generic CX_HASH_KEY() macro
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
106 CX_TEST_ASSERT(ak.len == 0);
6fa42f7e2624 add generic CX_HASH_KEY() macro
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
107 CX_TEST_ASSERT(ak.hash == 3897006249);
6fa42f7e2624 add generic CX_HASH_KEY() macro
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
108 CX_TEST_ASSERT(bk.data == NULL);
6fa42f7e2624 add generic CX_HASH_KEY() macro
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
109 CX_TEST_ASSERT(bk.len == 0);
6fa42f7e2624 add generic CX_HASH_KEY() macro
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
110 CX_TEST_ASSERT(bk.hash == 17452435587688253422ull);
768
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
111 }
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
112 }
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
113
1498
d20c0d30ab3d complete test coverage for CxHashKey
Mike Becker <universe@uap-core.de>
parents: 1402
diff changeset
114 CX_TEST(test_hash_key_cmp) {
d20c0d30ab3d complete test coverage for CxHashKey
Mike Becker <universe@uap-core.de>
parents: 1402
diff changeset
115 CxHashKey k1 = CX_HASH_KEY("one key");
d20c0d30ab3d complete test coverage for CxHashKey
Mike Becker <universe@uap-core.de>
parents: 1402
diff changeset
116 CxHashKey k2 = CX_HASH_KEY("another key");
d20c0d30ab3d complete test coverage for CxHashKey
Mike Becker <universe@uap-core.de>
parents: 1402
diff changeset
117 CxHashKey k = CX_HASH_KEY("one key");
d20c0d30ab3d complete test coverage for CxHashKey
Mike Becker <universe@uap-core.de>
parents: 1402
diff changeset
118 CX_TEST_DO {
d20c0d30ab3d complete test coverage for CxHashKey
Mike Becker <universe@uap-core.de>
parents: 1402
diff changeset
119 CX_TEST_ASSERT(0 == cx_hash_key_cmp(&k1, &k));
d20c0d30ab3d complete test coverage for CxHashKey
Mike Becker <universe@uap-core.de>
parents: 1402
diff changeset
120 CX_TEST_ASSERT(0 == cx_hash_key_cmp(&k1, &k1));
d20c0d30ab3d complete test coverage for CxHashKey
Mike Becker <universe@uap-core.de>
parents: 1402
diff changeset
121 CX_TEST_ASSERT(0 == cx_hash_key_cmp(&k2, &k2));
d20c0d30ab3d complete test coverage for CxHashKey
Mike Becker <universe@uap-core.de>
parents: 1402
diff changeset
122 CX_TEST_ASSERT(0 != cx_hash_key_cmp(&k2, &k));
d20c0d30ab3d complete test coverage for CxHashKey
Mike Becker <universe@uap-core.de>
parents: 1402
diff changeset
123 CX_TEST_ASSERT(0 != cx_hash_key_cmp(&k, &k2));
d20c0d30ab3d complete test coverage for CxHashKey
Mike Becker <universe@uap-core.de>
parents: 1402
diff changeset
124 CX_TEST_ASSERT(0 != cx_hash_key_cmp(&k1, &k2));
d20c0d30ab3d complete test coverage for CxHashKey
Mike Becker <universe@uap-core.de>
parents: 1402
diff changeset
125
d20c0d30ab3d complete test coverage for CxHashKey
Mike Becker <universe@uap-core.de>
parents: 1402
diff changeset
126 // fake a hash collision
d20c0d30ab3d complete test coverage for CxHashKey
Mike Becker <universe@uap-core.de>
parents: 1402
diff changeset
127 k1.hash = k2.hash = 4711;
d20c0d30ab3d complete test coverage for CxHashKey
Mike Becker <universe@uap-core.de>
parents: 1402
diff changeset
128 // still not equal
d20c0d30ab3d complete test coverage for CxHashKey
Mike Becker <universe@uap-core.de>
parents: 1402
diff changeset
129 CX_TEST_ASSERT(0 != cx_hash_key_cmp(&k1, &k2));
d20c0d30ab3d complete test coverage for CxHashKey
Mike Becker <universe@uap-core.de>
parents: 1402
diff changeset
130 }
d20c0d30ab3d complete test coverage for CxHashKey
Mike Becker <universe@uap-core.de>
parents: 1402
diff changeset
131 }
d20c0d30ab3d complete test coverage for CxHashKey
Mike Becker <universe@uap-core.de>
parents: 1402
diff changeset
132
768
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
133 CX_TEST(test_hash_key_empty_string) {
890
54565fd74e74 move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents: 768
diff changeset
134 const char *str = "";
1498
d20c0d30ab3d complete test coverage for CxHashKey
Mike Becker <universe@uap-core.de>
parents: 1402
diff changeset
135 const unsigned char *ustr = (const unsigned char*)"";
768
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
136
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
137 CxHashKey str_key = cx_hash_key_str(str);
1498
d20c0d30ab3d complete test coverage for CxHashKey
Mike Becker <universe@uap-core.de>
parents: 1402
diff changeset
138 CxHashKey ustr_key = cx_hash_key_ustr(ustr);
890
54565fd74e74 move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents: 768
diff changeset
139 CxHashKey bytes_key = cx_hash_key_bytes((const unsigned char*) str, 0);
768
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
140 CxHashKey obj_key = cx_hash_key(str, 0);
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
141
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
142 CX_TEST_DO {
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
143 CX_TEST_ASSERT(bytes_key.hash == 4152238450u);
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
144 CX_TEST_ASSERT(str_key.hash == 4152238450u);
1498
d20c0d30ab3d complete test coverage for CxHashKey
Mike Becker <universe@uap-core.de>
parents: 1402
diff changeset
145 CX_TEST_ASSERT(ustr_key.hash == 4152238450u);
768
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
146 CX_TEST_ASSERT(obj_key.hash == 4152238450u);
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
147 CX_TEST_ASSERT(str_key.len == 0);
1498
d20c0d30ab3d complete test coverage for CxHashKey
Mike Becker <universe@uap-core.de>
parents: 1402
diff changeset
148 CX_TEST_ASSERT(ustr_key.len == 0);
768
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
149 CX_TEST_ASSERT(bytes_key.len == 0);
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
150 CX_TEST_ASSERT(bytes_key.len == 0);
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
151 CX_TEST_ASSERT(str_key.data == str);
1498
d20c0d30ab3d complete test coverage for CxHashKey
Mike Becker <universe@uap-core.de>
parents: 1402
diff changeset
152 CX_TEST_ASSERT(ustr_key.data == ustr);
768
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
153 }
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
154 }
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
155
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
156 CX_TEST(test_hash_key_null) {
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
157 CxHashKey str_key = cx_hash_key_str(NULL);
1498
d20c0d30ab3d complete test coverage for CxHashKey
Mike Becker <universe@uap-core.de>
parents: 1402
diff changeset
158 CxHashKey ustr_key = cx_hash_key_ustr(NULL);
768
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
159 CxHashKey bytes_key = cx_hash_key_bytes(NULL, 0);
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
160 CxHashKey obj_key = cx_hash_key(NULL, 0);
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
161
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
162 CX_TEST_DO {
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
163 CX_TEST_ASSERT(bytes_key.hash == 1574210520u);
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
164 CX_TEST_ASSERT(str_key.hash == 1574210520u);
1498
d20c0d30ab3d complete test coverage for CxHashKey
Mike Becker <universe@uap-core.de>
parents: 1402
diff changeset
165 CX_TEST_ASSERT(ustr_key.hash == 1574210520u);
768
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
166 CX_TEST_ASSERT(obj_key.hash == 1574210520u);
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
167 CX_TEST_ASSERT(str_key.len == 0);
1498
d20c0d30ab3d complete test coverage for CxHashKey
Mike Becker <universe@uap-core.de>
parents: 1402
diff changeset
168 CX_TEST_ASSERT(ustr_key.len == 0);
768
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
169 CX_TEST_ASSERT(bytes_key.len == 0);
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
170 CX_TEST_ASSERT(bytes_key.len == 0);
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
171 CX_TEST_ASSERT(str_key.data == NULL);
1498
d20c0d30ab3d complete test coverage for CxHashKey
Mike Becker <universe@uap-core.de>
parents: 1402
diff changeset
172 CX_TEST_ASSERT(ustr_key.data == NULL);
768
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
173 }
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
174 }
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
175
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
176 CxTestSuite *cx_test_suite_hash_key(void) {
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
177 CxTestSuite *suite = cx_test_suite_new("hash_key");
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
178
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
179 cx_test_register(suite, test_hash_key_functions);
1402
6fa42f7e2624 add generic CX_HASH_KEY() macro
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
180 cx_test_register(suite, test_hash_key_int_functions);
1498
d20c0d30ab3d complete test coverage for CxHashKey
Mike Becker <universe@uap-core.de>
parents: 1402
diff changeset
181 cx_test_register(suite, test_hash_key_macro);
d20c0d30ab3d complete test coverage for CxHashKey
Mike Becker <universe@uap-core.de>
parents: 1402
diff changeset
182 cx_test_register(suite, test_hash_key_cmp);
768
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
183 cx_test_register(suite, test_hash_key_empty_string);
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
184 cx_test_register(suite, test_hash_key_null);
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
185
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
186 return suite;
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
187 }

mercurial