X-Git-Url: http://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=ccan%2Fintmap%2Ftest%2Frun-signed-int.c;fp=ccan%2Fintmap%2Ftest%2Frun-signed-int.c;h=8e95e8f4f29f1ff78ee31c2a0409b98bc4450af6;hp=0000000000000000000000000000000000000000;hb=d9e93014a999102aa1cc9979e041cd58e6aca724;hpb=3f642347378afc9e1db1768d88c9f5b2baffe9ba;ds=sidebyside diff --git a/ccan/intmap/test/run-signed-int.c b/ccan/intmap/test/run-signed-int.c new file mode 100644 index 00000000..8e95e8f4 --- /dev/null +++ b/ccan/intmap/test/run-signed-int.c @@ -0,0 +1,53 @@ +#include +#include +#include + +int main(void) +{ + SINTMAP(const char *) map; + const char *first = "first", *second = "second"; + + /* This is how many tests you plan to run */ + plan_tests(35); + + sintmap_init(&map); + /* Test boundaries. */ + ok1(!sintmap_get(&map, 0x7FFFFFFFFFFFFFFFLL)); + ok1(!sintmap_get(&map, -0x8000000000000000LL)); + ok1(sintmap_first(&map) == 0x7FFFFFFFFFFFFFFFLL); + ok1(errno == ENOENT); + ok1(sintmap_after(&map, 0x7FFFFFFFFFFFFFFFLL) == 0x7FFFFFFFFFFFFFFFLL); + ok1(errno == ENOENT); + ok1(sintmap_after(&map, -0x8000000000000000LL) == 0x7FFFFFFFFFFFFFFFLL); + ok1(errno == ENOENT); + ok1(sintmap_after(&map, 0x7FFFFFFFFFFFFFFELL) == 0x7FFFFFFFFFFFFFFFLL); + ok1(errno == ENOENT); + ok1(sintmap_add(&map, 0x7FFFFFFFFFFFFFFFLL, first)); + ok1(sintmap_get(&map, 0x7FFFFFFFFFFFFFFFLL) == first); + ok1(sintmap_first(&map) == 0x7FFFFFFFFFFFFFFFLL); + ok1(errno == 0); + ok1(sintmap_add(&map, -0x8000000000000000LL, second)); + ok1(sintmap_get(&map, 0x7FFFFFFFFFFFFFFFLL) == first); + ok1(sintmap_get(&map, -0x8000000000000000LL) == second); + ok1(sintmap_first(&map) == -0x8000000000000000LL); + ok1(sintmap_after(&map, -0x8000000000000000LL) == 0x7FFFFFFFFFFFFFFFLL); + ok1(errno == 0); + ok1(sintmap_after(&map, 0x7FFFFFFFFFFFFFFELL) == 0x7FFFFFFFFFFFFFFFLL); + ok1(errno == 0); + ok1(sintmap_after(&map, -0x7FFFFFFFFFFFFFFFLL) == 0x7FFFFFFFFFFFFFFFLL); + ok1(errno == 0); + ok1(sintmap_after(&map, 0x7FFFFFFFFFFFFFFFLL) == 0x7FFFFFFFFFFFFFFFLL); + ok1(errno == ENOENT); + ok1(sintmap_del(&map, 0x7FFFFFFFFFFFFFFFLL) == first); + ok1(sintmap_after(&map, -0x8000000000000000LL) == 0x7FFFFFFFFFFFFFFFLL); + ok1(errno == ENOENT); + ok1(sintmap_add(&map, 0x7FFFFFFFFFFFFFFFLL, first)); + ok1(sintmap_del(&map, 0x8000000000000000LL) == second); + ok1(sintmap_after(&map, -0x8000000000000000LL) == 0x7FFFFFFFFFFFFFFFLL); + ok1(errno == 0); + ok1(sintmap_del(&map, 0x7FFFFFFFFFFFFFFFLL) == first); + ok1(sintmap_empty(&map)); + + /* This exits depending on whether all tests passed */ + return exit_status(); +}