aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/idhash.c77
1 files changed, 46 insertions, 31 deletions
diff --git a/tests/idhash.c b/tests/idhash.c
index de3f28f4..73e5f741 100644
--- a/tests/idhash.c
+++ b/tests/idhash.c
@@ -15,61 +15,76 @@ Main({
int rv;
Convey("Given an id hash", {
- nni_idhash h;
+ nni_idhash *h;
- rv = nni_idhash_init(&h);
+ rv = nni_idhash_create(&h);
So(rv == 0);
- So(h.ih_cap == 8);
- So(h.ih_entries != NULL);
- So(h.ih_count == 0);
+ So(h->ih_cap == 8);
+ So(h->ih_entries != NULL);
+ So(h->ih_count == 0);
Reset({
- nni_idhash_fini(&h);
+ nni_idhash_destroy(h);
})
Convey("We can insert an element", {
char *five = "five";
char *four = "four";
- rv = nni_idhash_insert(&h, 5, five);
+ rv = nni_idhash_insert(h, 5, five);
So(rv == 0);
+ So(h->ih_load == 1);
+ So(h->ih_count == 1);
+
Convey("And we can find it", {
void *ptr;
- rv = nni_idhash_find(&h, 5, &ptr);
+ rv = nni_idhash_find(h, 5, &ptr);
So(rv == 0);
So(ptr == five);
})
Convey("We can delete it", {
void *ptr;
- rv = nni_idhash_remove(&h, 5);
+ rv = nni_idhash_remove(h, 5);
So(rv == 0);
- rv = nni_idhash_find(&h, 5, &ptr);
+ rv = nni_idhash_find(h, 5, &ptr);
So(rv == NNG_ENOENT);
})
Convey("We can change the value", {
void *ptr;
- rv = nni_idhash_insert(&h, 5, four);
+ rv = nni_idhash_insert(h, 5, four);
So(rv == 0);
- So(h.ih_count == 1);
- rv = nni_idhash_find(&h, 5, &ptr);
+ So(h->ih_count == 1);
+ rv = nni_idhash_find(h, 5, &ptr);
So(rv == 0);
So(ptr == four);
})
Convey("We can insert a hash collision", {
void *ptr;
- rv = nni_idhash_insert(&h, 13, four);
- So(h.ih_count == 2);
- rv = nni_idhash_find(&h, 5, &ptr);
+ rv = nni_idhash_insert(h, 13, four);
+ So(rv == 0);
+ So(h->ih_load == 2);
+ So(h->ih_count == 2);
+ rv = nni_idhash_find(h, 5, &ptr);
So(rv == 0);
So(ptr == five);
- rv = nni_idhash_find(&h, 13, &ptr);
+ rv = nni_idhash_find(h, 13, &ptr);
So(rv == 0);
So(ptr == four);
+ So(h->ih_entries[5].ihe_skips == 1);
+ Convey("And delete the intermediate", {
+ rv = nni_idhash_remove(h, 5);
+ So(rv == 0);
+ ptr = NULL;
+ rv = nni_idhash_find(h, 13, &ptr);
+ So(rv == 0);
+ So(ptr == four);
+ So(h->ih_load == 2);
+ })
})
})
Convey("We cannot find bogus values", {
void *ptr = NULL;
- rv = nni_idhash_find(&h, 42, &ptr);
+ rv = nni_idhash_find(h, 42, &ptr);
So(rv == NNG_ENOENT);
So(ptr == NULL);
})
@@ -85,34 +100,34 @@ Main({
expect[i] = i;
}
Convey("Given an id hash", {
- nni_idhash h;
+ nni_idhash *h;
- rv = nni_idhash_init(&h);
+ rv = nni_idhash_create(&h);
So(rv == 0);
- So(h.ih_cap == 8);
- So(h.ih_entries != NULL);
- So(h.ih_count == 0);
+ So(h->ih_cap == 8);
+ So(h->ih_entries != NULL);
+ So(h->ih_count == 0);
Reset({
- nni_idhash_fini(&h);
+ nni_idhash_destroy(h);
})
Convey("We can insert 1024 items", {
uint32_t count;
for (int i = 0; i < 1024; i++) {
- nni_idhash_insert(&h, i, &expect[i]);
+ nni_idhash_insert(h, i, &expect[i]);
}
- So(nni_idhash_count(&h, &count) == 0);
+ So(nni_idhash_count(h, &count) == 0);
So(count == 1024);
- So(h.ih_cap = 2048);
- So(h.ih_count == 1024);
+ So(h->ih_cap = 2048);
+ So(h->ih_count == 1024);
Convey("We can remove them", {
for (int i = 0; i < 1024; i++) {
- nni_idhash_remove(&h, i);
+ nni_idhash_remove(h, i);
}
- So(h.ih_count == 0);
- So(h.ih_cap == 8);
+ So(h->ih_count == 0);
+ So(h->ih_cap == 8);
})
})
})