57 lines
1.6 KiB
C++
57 lines
1.6 KiB
C++
#include <cstdio>
|
|
#include <cassert>
|
|
#include "amap.h"
|
|
#include "simap.h"
|
|
#include "mapmap.hpp"
|
|
|
|
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)); /* 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);
|
|
|
|
mapmap_instance mi = mapmap_create();
|
|
test_basics(mapmap, &mi);
|
|
|
|
return 0;
|
|
}
|