diff options
| author | Garrett D'Amore <garrett@damore.org> | 2016-12-29 16:58:12 -0800 |
|---|---|---|
| committer | Garrett D'Amore <garrett@damore.org> | 2016-12-29 16:58:12 -0800 |
| commit | 541a53b857dc6e7c3ff5e642394369cf26bf4544 (patch) | |
| tree | ea2be095c4453782a6ba6c7087227e17f6084639 /tests | |
| parent | 76c1836aaf2e7738829834c043ba1bc4d6ed6cec (diff) | |
| download | nng-541a53b857dc6e7c3ff5e642394369cf26bf4544.tar.gz nng-541a53b857dc6e7c3ff5e642394369cf26bf4544.tar.bz2 nng-541a53b857dc6e7c3ff5e642394369cf26bf4544.zip | |
Richer tests and fixes for idhash. Also dynamically allocate idhash.
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/idhash.c | 77 |
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); }) }) }) |
