/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */ #include #include #include typedef struct { int a, b; } elt; static int eltcp(elt *dest, elt src) { *dest = src; return 0; } static int eltcmp(elt left, elt right) { if (left.a < right.a) return -1; if (left.a > right.a) return 1; if (left.b < right.b) return -1; if (left.b > right.b) return 1; return 0; } static void eltprt(elt v, FILE *f) { fprintf(f, "{%d,%d}", v.a, v.b); } static int intcmp(int left, int right) { if (left < right) return -1; if (left > right) return 1; return 0; } static void intprt(int v, FILE *f) { fprintf(f, "%d", v); } #include "maptest.h" foo foo1; int main () { elt v1 = { 1, 2 }, v2 = { 3, 4 }; const elt *vp; const int *ip; assert(0 == foo_init(&foo1)); vp = foo_findleft(&foo1, 47); assert(vp == NULL); assert(0 == foo_add(&foo1, 47, v1)); vp = foo_findleft(&foo1, 47); assert(vp != NULL); assert(0 == eltcmp(*vp, v1)); vp = foo_findleft(&foo1, 3); assert(vp == NULL); assert(0 == foo_add(&foo1, 93, v2)); ip = foo_findright(&foo1, v1); assert(ip != NULL); assert(*ip == 47); printf("Map content: "); foo_printmap(&foo1, stdout); printf("\n"); return 0; }