Skip to content

Commit 8d8d34f

Browse files
committed
Fix test
1 parent f8cc40c commit 8d8d34f

File tree

1 file changed

+89
-89
lines changed

1 file changed

+89
-89
lines changed

src/native/containers/dn-simdhash-test.c

+89-89
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ key_comparer (instance_data_t data, size_t lhs, size_t rhs) {
2626
#define DN_SIMDHASH_KEY_HASHER(data, key) (uint32_t)(key & 0xFFFFFFFFu)
2727
#define DN_SIMDHASH_KEY_EQUALS key_comparer
2828
#define DN_SIMDHASH_INSTANCE_DATA_T instance_data_t
29-
#define DN_SIMDHASH_ON_REMOVE(data, key, value) ; // printf("remove [%zd, %zd], f==%f\n", key, value, data.f)
30-
#define DN_SIMDHASH_ON_REPLACE(data, key, old_value, new_value) ; // printf("replace [%zd, %zd] with [%zd, %zd] i==%i\n", key, old_value, key, new_value, data.i)
29+
#define DN_SIMDHASH_ON_REMOVE(data, key, value) // printf("remove [%zd, %zd], f==%f\n", key, value, data.f)
30+
#define DN_SIMDHASH_ON_REPLACE(data, old_key, new_key, old_value, new_value) // printf("replace [%zd, %zd] with [%zd, %zd] i==%i\n", key, old_value, key, new_value, data.i)
3131

3232
#include "dn-simdhash-specialization.h"
3333

@@ -79,7 +79,7 @@ int main () {
7979

8080
for (int i = 0; i < c; i++) {
8181
DN_SIMDHASH_VALUE_T value = (i * 2) + 1;
82-
DN_SIMDHASH_KEY_T key;
82+
DN_SIMDHASH_KEY_T key;
8383

8484
retry: {
8585
key = rand();
@@ -92,92 +92,92 @@ retry: {
9292
dn_vector_push_back(values, value);
9393
}
9494

95-
for (int iter = 0; iter < 100; iter++) {
96-
if (!tasserteq(dn_simdhash_count(test), c, "count did not match"))
97-
return 1;
98-
99-
printf("Calling foreach:\n");
100-
uint32_t foreach_count = 0;
101-
dn_simdhash_size_t_size_t_foreach(test, foreach_callback, &foreach_count);
102-
printf("Foreach iterated %u time(s)\n", foreach_count);
103-
printf("Count: %u, Capacity: %u, Cascaded item count: %u\n", dn_simdhash_count(test), dn_simdhash_capacity(test), count_cascaded_buckets(test));
104-
105-
for (int i = 0; i < c; i++) {
106-
DN_SIMDHASH_KEY_T key = *dn_vector_index_t(keys, DN_SIMDHASH_KEY_T, i);
107-
DN_SIMDHASH_VALUE_T value, expected_value = *dn_vector_index_t(values, DN_SIMDHASH_VALUE_T, i);
108-
109-
uint8_t ok = dn_simdhash_size_t_size_t_try_get_value(test, key, &value);
110-
if (tassert1(ok, key, "did not find key"))
111-
tasserteq(value, expected_value, "value did not match");
112-
}
113-
114-
// NOTE: Adding duplicates could grow the table if we're unlucky, since the add operation
115-
// eagerly grows before doing a table scan if we're at the grow threshold.
116-
for (int i = 0; i < c; i++) {
117-
DN_SIMDHASH_KEY_T key = *dn_vector_index_t(keys, DN_SIMDHASH_KEY_T, i);
118-
DN_SIMDHASH_VALUE_T value = *dn_vector_index_t(values, DN_SIMDHASH_VALUE_T, i);
119-
120-
uint8_t ok = dn_simdhash_size_t_size_t_try_add(test, key, value);
121-
tassert1(!ok, key, "added duplicate key successfully");
122-
}
123-
124-
printf("After adding dupes: Count: %u, Capacity: %u, Cascaded item count: %u\n", dn_simdhash_count(test), dn_simdhash_capacity(test), count_cascaded_buckets(test));
125-
uint32_t final_capacity = dn_simdhash_capacity(test);
126-
127-
for (int i = 0; i < c; i++) {
128-
DN_SIMDHASH_KEY_T key = *dn_vector_index_t(keys, DN_SIMDHASH_KEY_T, i);
129-
uint8_t ok = dn_simdhash_size_t_size_t_try_remove(test, key);
130-
tassert1(ok, key, "could not remove key");
131-
132-
DN_SIMDHASH_VALUE_T value;
133-
ok = dn_simdhash_size_t_size_t_try_get_value(test, key, &value);
134-
tassert1(!ok, key, "found key after removal");
135-
}
136-
137-
if (!tasserteq(dn_simdhash_count(test), 0, "was not empty"))
138-
return 1;
139-
if (!tasserteq(dn_simdhash_capacity(test), final_capacity, "capacity changed by emptying"))
140-
return 1;
141-
142-
printf ("Calling foreach after emptying:\n");
143-
foreach_count = 0;
144-
dn_simdhash_size_t_size_t_foreach(test, foreach_callback, &foreach_count);
145-
printf("Foreach iterated %u time(s)\n", foreach_count);
146-
printf("Count: %u, Capacity: %u, Cascaded item count: %u\n", dn_simdhash_count(test), dn_simdhash_capacity(test), count_cascaded_buckets(test));
147-
148-
for (int i = 0; i < c; i++) {
149-
DN_SIMDHASH_KEY_T key = *dn_vector_index_t(keys, DN_SIMDHASH_KEY_T, i);
150-
DN_SIMDHASH_VALUE_T value;
151-
uint8_t ok = dn_simdhash_size_t_size_t_try_get_value(test, key, &value);
152-
tassert1(!ok, key, "found key after removal");
153-
}
154-
155-
for (int i = 0; i < c; i++) {
156-
DN_SIMDHASH_KEY_T key = *dn_vector_index_t(keys, DN_SIMDHASH_KEY_T, i);
157-
DN_SIMDHASH_VALUE_T value = *dn_vector_index_t(values, DN_SIMDHASH_VALUE_T, i);
158-
159-
uint8_t ok = dn_simdhash_size_t_size_t_try_add(test, key, value);
160-
tassert1(ok, key, "could not re-insert key after emptying");
161-
}
162-
163-
if (!tasserteq(dn_simdhash_capacity(test), final_capacity, "expected capacity not to change after refilling"))
164-
return 1;
165-
166-
for (int i = 0; i < c; i++) {
167-
DN_SIMDHASH_KEY_T key = *dn_vector_index_t(keys, DN_SIMDHASH_KEY_T, i);
168-
DN_SIMDHASH_VALUE_T value, expected_value = *dn_vector_index_t(values, DN_SIMDHASH_VALUE_T, i);
169-
170-
uint8_t ok = dn_simdhash_size_t_size_t_try_get_value(test, key, &value);
171-
if (tassert1(ok, key, "did not find key after refilling"))
172-
tasserteq(value, expected_value, "value did not match after refilling");
173-
}
174-
175-
printf("Calling foreach after refilling:\n");
176-
foreach_count = 0;
177-
dn_simdhash_size_t_size_t_foreach(test, foreach_callback, &foreach_count);
178-
printf("Foreach iterated %u time(s)\n", foreach_count);
179-
printf("Count: %u, Capacity: %u, Cascaded item count: %u\n", dn_simdhash_count(test), dn_simdhash_capacity(test), count_cascaded_buckets(test));
180-
}
95+
for (int iter = 0; iter < 100; iter++) {
96+
if (!tasserteq(dn_simdhash_count(test), c, "count did not match"))
97+
return 1;
98+
99+
printf("Calling foreach:\n");
100+
uint32_t foreach_count = 0;
101+
dn_simdhash_size_t_size_t_foreach(test, foreach_callback, &foreach_count);
102+
printf("Foreach iterated %u time(s)\n", foreach_count);
103+
printf("Count: %u, Capacity: %u, Cascaded item count: %u\n", dn_simdhash_count(test), dn_simdhash_capacity(test), count_cascaded_buckets(test));
104+
105+
for (int i = 0; i < c; i++) {
106+
DN_SIMDHASH_KEY_T key = *dn_vector_index_t(keys, DN_SIMDHASH_KEY_T, i);
107+
DN_SIMDHASH_VALUE_T value, expected_value = *dn_vector_index_t(values, DN_SIMDHASH_VALUE_T, i);
108+
109+
uint8_t ok = dn_simdhash_size_t_size_t_try_get_value(test, key, &value);
110+
if (tassert1(ok, key, "did not find key"))
111+
tasserteq(value, expected_value, "value did not match");
112+
}
113+
114+
// NOTE: Adding duplicates could grow the table if we're unlucky, since the add operation
115+
// eagerly grows before doing a table scan if we're at the grow threshold.
116+
for (int i = 0; i < c; i++) {
117+
DN_SIMDHASH_KEY_T key = *dn_vector_index_t(keys, DN_SIMDHASH_KEY_T, i);
118+
DN_SIMDHASH_VALUE_T value = *dn_vector_index_t(values, DN_SIMDHASH_VALUE_T, i);
119+
120+
uint8_t ok = dn_simdhash_size_t_size_t_try_add(test, key, value);
121+
tassert1(!ok, key, "added duplicate key successfully");
122+
}
123+
124+
printf("After adding dupes: Count: %u, Capacity: %u, Cascaded item count: %u\n", dn_simdhash_count(test), dn_simdhash_capacity(test), count_cascaded_buckets(test));
125+
uint32_t final_capacity = dn_simdhash_capacity(test);
126+
127+
for (int i = 0; i < c; i++) {
128+
DN_SIMDHASH_KEY_T key = *dn_vector_index_t(keys, DN_SIMDHASH_KEY_T, i);
129+
uint8_t ok = dn_simdhash_size_t_size_t_try_remove(test, key);
130+
tassert1(ok, key, "could not remove key");
131+
132+
DN_SIMDHASH_VALUE_T value;
133+
ok = dn_simdhash_size_t_size_t_try_get_value(test, key, &value);
134+
tassert1(!ok, key, "found key after removal");
135+
}
136+
137+
if (!tasserteq(dn_simdhash_count(test), 0, "was not empty"))
138+
return 1;
139+
if (!tasserteq(dn_simdhash_capacity(test), final_capacity, "capacity changed by emptying"))
140+
return 1;
141+
142+
printf ("Calling foreach after emptying:\n");
143+
foreach_count = 0;
144+
dn_simdhash_size_t_size_t_foreach(test, foreach_callback, &foreach_count);
145+
printf("Foreach iterated %u time(s)\n", foreach_count);
146+
printf("Count: %u, Capacity: %u, Cascaded item count: %u\n", dn_simdhash_count(test), dn_simdhash_capacity(test), count_cascaded_buckets(test));
147+
148+
for (int i = 0; i < c; i++) {
149+
DN_SIMDHASH_KEY_T key = *dn_vector_index_t(keys, DN_SIMDHASH_KEY_T, i);
150+
DN_SIMDHASH_VALUE_T value;
151+
uint8_t ok = dn_simdhash_size_t_size_t_try_get_value(test, key, &value);
152+
tassert1(!ok, key, "found key after removal");
153+
}
154+
155+
for (int i = 0; i < c; i++) {
156+
DN_SIMDHASH_KEY_T key = *dn_vector_index_t(keys, DN_SIMDHASH_KEY_T, i);
157+
DN_SIMDHASH_VALUE_T value = *dn_vector_index_t(values, DN_SIMDHASH_VALUE_T, i);
158+
159+
uint8_t ok = dn_simdhash_size_t_size_t_try_add(test, key, value);
160+
tassert1(ok, key, "could not re-insert key after emptying");
161+
}
162+
163+
if (!tasserteq(dn_simdhash_capacity(test), final_capacity, "expected capacity not to change after refilling"))
164+
return 1;
165+
166+
for (int i = 0; i < c; i++) {
167+
DN_SIMDHASH_KEY_T key = *dn_vector_index_t(keys, DN_SIMDHASH_KEY_T, i);
168+
DN_SIMDHASH_VALUE_T value, expected_value = *dn_vector_index_t(values, DN_SIMDHASH_VALUE_T, i);
169+
170+
uint8_t ok = dn_simdhash_size_t_size_t_try_get_value(test, key, &value);
171+
if (tassert1(ok, key, "did not find key after refilling"))
172+
tasserteq(value, expected_value, "value did not match after refilling");
173+
}
174+
175+
printf("Calling foreach after refilling:\n");
176+
foreach_count = 0;
177+
dn_simdhash_size_t_size_t_foreach(test, foreach_callback, &foreach_count);
178+
printf("Foreach iterated %u time(s)\n", foreach_count);
179+
printf("Count: %u, Capacity: %u, Cascaded item count: %u\n", dn_simdhash_count(test), dn_simdhash_capacity(test), count_cascaded_buckets(test));
180+
}
181181

182182
printf("done\n");
183183

0 commit comments

Comments
 (0)