|
@@ -210,6 +210,40 @@ static void testHash() {
|
|
|
CORE_TEST_SIZE(0, coreHashString(&s, 1));
|
|
|
}
|
|
|
|
|
|
+typedef struct {
|
|
|
+ size_t a;
|
|
|
+ size_t b;
|
|
|
+} A;
|
|
|
+
|
|
|
+static void testSearchStruct() {
|
|
|
+ CoreHashMap map =
|
|
|
+ CORE_HASH_MAP(sizeof(A), sizeof(int), coreHash, coreEqual);
|
|
|
+ A a = {1, 2};
|
|
|
+ A b = {1, 3};
|
|
|
+ A c = {0, 0};
|
|
|
+ CORE_TEST_NULL(coreHashMapSearchPointer(&map, &a));
|
|
|
+ CORE_TEST_NULL(coreHashMapSearchPointer(&map, &b));
|
|
|
+ CORE_TEST_NULL(coreHashMapSearchPointer(&map, &c));
|
|
|
+ int v = 3;
|
|
|
+ coreHashMapPutPointer(&map, &a, &v);
|
|
|
+
|
|
|
+ int* ap = coreHashMapSearchPointer(&map, &a);
|
|
|
+ if(CORE_TEST_NOT_NULL(ap)) {
|
|
|
+ CORE_TEST_INT(3, *ap);
|
|
|
+ }
|
|
|
+ CORE_TEST_NULL(coreHashMapSearchPointer(&map, &b));
|
|
|
+ CORE_TEST_NULL(coreHashMapSearchPointer(&map, &c));
|
|
|
+
|
|
|
+ v = 4;
|
|
|
+ coreHashMapPutPointer(&map, &c, &v);
|
|
|
+ int* cp = coreHashMapSearchPointer(&map, &c);
|
|
|
+ if(CORE_TEST_NOT_NULL(cp)) {
|
|
|
+ CORE_TEST_INT(4, *cp);
|
|
|
+ }
|
|
|
+
|
|
|
+ coreDestroyHashMap(&map);
|
|
|
+}
|
|
|
+
|
|
|
void coreTestHashMap(bool light) {
|
|
|
testAdd();
|
|
|
testMultipleAdd();
|
|
@@ -225,4 +259,5 @@ void coreTestHashMap(bool light) {
|
|
|
testAddCollisions();
|
|
|
testRemove();
|
|
|
testHash();
|
|
|
+ testSearchStruct();
|
|
|
}
|