#include #include #include "amap.h" #include "simap.h" void test_basics(amap mapdo, void *map) { assert(NULL == mapdo(map, AMAP_GET, "asdf", NULL)); int i = 42; int *iptr; const char *chptr; assert(NULL != mapdo(map, AMAP_SET, "meaning", &i)); assert(NULL != (iptr = (int *)mapdo(map, AMAP_GET, "meaning", NULL))); assert(*iptr == 42); assert(iptr == &i); /* Delete / tombstone */ assert(NULL != mapdo(map, AMAP_SET, "meaning", NULL)); assert(NULL == (int *)mapdo(map, AMAP_GET, "meaning", NULL)); /* Check re-adding */ assert(NULL != mapdo(map, AMAP_SET, "meaning", &i)); assert(NULL != (iptr = (int *)mapdo(map, AMAP_GET, "meaning", NULL))); assert(*iptr == 42); assert(iptr == &i); /* Test Erase */ assert(NULL != mapdo(map, AMAP_ERASE, NULL, NULL)); /* Check re-adding 3 new things */ assert(NULL != mapdo(map, AMAP_SET, "meaningless1", &i)); assert(NULL != mapdo(map, AMAP_SET, "meaning2", &i)); const char *helloworld = "Hello world!"; assert(NULL != mapdo(map, AMAP_SET, "hello", (char *)helloworld)); /* TODO: ugly cast... */ assert(NULL != (chptr = (const char *)mapdo(map, AMAP_GET, "hello", NULL))); assert(strlen(chptr) == strlen(helloworld)); assert(strcmp(chptr, helloworld) == 0); assert(NULL != (iptr = (int *)mapdo(map, AMAP_GET, "meaning2", NULL))); assert(*iptr == 42); assert(iptr == &i); assert(NULL != (iptr = (int *)mapdo(map, AMAP_GET, "meaningless1", NULL))); assert(*iptr == 42); assert(iptr == &i); } int main() { /* test simap */ simap_instance si = simap_create(); test_basics(simap, &si); return 0; }