#include "../test.h" #include "arc/std/bool.h" #include "arc/std/errno.h" #include "arc/std/hashtable.h" #include #include #include //TODO: add hash function for testing ARC_Bool TEST_Hashtable_KeyCompareDataFn(void *dataA, void *dataB){ return (ARC_Bool)strcmp((const char *)dataA, (const char *)dataB); } //TODO: more tests with destroy data fn added void TEST_Hashtable_DestroyKeyValueFn(void *key, void *value){ free((char *)key); free((int32_t *)value); } ARC_TEST(Hashtable_Init){ ARC_Hashtable *hashtable; ARC_Hashtable_KeyCompareFn keyCompareFn = TEST_Hashtable_KeyCompareDataFn; ARC_Hashtable_DestroyKeyValueFn destroyKeyValueFn = TEST_Hashtable_DestroyKeyValueFn; ARC_Hashtable_Create(&hashtable, NULL, &keyCompareFn, &destroyKeyValueFn); ARC_CHECK(arc_errno == 0); ARC_Hashtable_Destroy(hashtable); } ARC_TEST(Vector_Add){ ARC_Hashtable *hashtable; ARC_Hashtable_KeyCompareFn keyCompareFn = TEST_Hashtable_KeyCompareDataFn; ARC_Hashtable_DestroyKeyValueFn destroyKeyValueFn = TEST_Hashtable_DestroyKeyValueFn; ARC_Hashtable_Create(&hashtable, NULL, &keyCompareFn, &destroyKeyValueFn); char *key0 = (char *)"test"; int32_t val0 = 2; ARC_Hashtable_Add(hashtable, &key0, &val0); ARC_CHECK(2 == *(int32_t *)ARC_Hashtable_Get(hashtable, (char *)"test")); ARC_Hashtable_Destroy(hashtable); }