X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Fintmap%2Ftest%2Frun-order.c;h=f7e86692a83647bfaac224dd24495511b4880096;hb=7d1f0c73e4d321561abb74f82c8be97f10d69836;hp=0f8168d7fde54b3a0c3ec64cf790a162dadb148d;hpb=09bb99b92546f3e8be6bb0f9218924b8491be461;p=ccan diff --git a/ccan/intmap/test/run-order.c b/ccan/intmap/test/run-order.c index 0f8168d7..f7e86692 100644 --- a/ccan/intmap/test/run-order.c +++ b/ccan/intmap/test/run-order.c @@ -7,6 +7,16 @@ typedef UINTMAP(unsigned int *) umap; typedef SINTMAP(int *) smap; +static bool uint_iterate_check(intmap_index_t i, unsigned int *v, int64_t *prev) +{ + if ((int64_t)i <= *prev) + return false; + if (*v != i) + return false; + *prev = i; + return true; +} + static bool check_umap(const umap *map) { /* This is a larger type than unsigned, and allows negative */ @@ -25,7 +35,22 @@ static bool check_umap(const umap *map) prev = i; last = (uintmap_last(map, &last_idx) == v); } - return last; + + if (!last) + return false; + + prev = -1; + return uintmap_iterate(map, uint_iterate_check, &prev); +} + +static bool sint_iterate_check(sintmap_index_t i, int *v, int64_t *prev) +{ + if (i <= *prev) + return false; + if (*v != i) + return false; + *prev = i; + return true; } static bool check_smap(const smap *map) @@ -45,7 +70,12 @@ static bool check_smap(const smap *map) last = (sintmap_last(map, &last_idx) == v); prev = i; } - return last; + + if (!last) + return false; + + prev = -1; + return sintmap_iterate(map, sint_iterate_check, &prev); } int main(void)