diff --git a/src/cmc/bidimap.h b/src/cmc/bidimap.h index cfe9213..ee4a52e 100644 --- a/src/cmc/bidimap.h +++ b/src/cmc/bidimap.h @@ -894,11 +894,15 @@ struct cmc_callbacks_bidimap \ bool PFX##_contains_key(struct SNAME *_map_, K key) \ { \ + _map_->flag = cmc_flags.OK; \ + \ return PFX##_impl_get_entry_by_key(_map_, key) != NULL; \ } \ \ bool PFX##_contains_val(struct SNAME *_map_, V val) \ { \ + _map_->flag = cmc_flags.OK; \ + \ return PFX##_impl_get_entry_by_val(_map_, val) != NULL; \ } \ \ diff --git a/src/cmc/multimap.h b/src/cmc/multimap.h index 0cd666a..5c29624 100644 --- a/src/cmc/multimap.h +++ b/src/cmc/multimap.h @@ -1015,6 +1015,8 @@ struct cmc_callbacks_multimap \ bool PFX##_contains(struct SNAME *_map_, K key) \ { \ + _map_->flag = cmc_flags.OK; \ + \ return PFX##_impl_get_entry(_map_, key) != NULL; \ } \ \ diff --git a/tests/main/unt/bidimap.c b/tests/main/unt/bidimap.c index a919c06..a078179 100644 --- a/tests/main/unt/bidimap.c +++ b/tests/main/unt/bidimap.c @@ -375,7 +375,7 @@ CMC_CREATE_UNIT(bidimap_test, true, { cmc_assert(!bm_insert(map, 1, 2)); cmc_assert_equals(int32_t, cmc_flags.DUPLICATE, bm_flag(map)); - + map->flag = cmc_flags.ERROR; cmc_assert(!bm_insert(map, 2, 1)); cmc_assert_equals(int32_t, cmc_flags.DUPLICATE, bm_flag(map)); @@ -394,6 +394,7 @@ CMC_CREATE_UNIT(bidimap_test, true, { cmc_assert(bm_insert(map, 2, 2)); cmc_assert(!bm_update_key(map, 1, 2)); cmc_assert_equals(int32_t, cmc_flags.DUPLICATE, bm_flag(map)); + map->flag = cmc_flags.ERROR; cmc_assert(!bm_update_key(map, 2, 1)); cmc_assert_equals(int32_t, cmc_flags.DUPLICATE, bm_flag(map)); @@ -412,6 +413,7 @@ CMC_CREATE_UNIT(bidimap_test, true, { cmc_assert(bm_insert(map, 2, 2)); cmc_assert(!bm_update_key_by_val(map, 2, 1)); cmc_assert_equals(int32_t, cmc_flags.DUPLICATE, bm_flag(map)); + map->flag = cmc_flags.ERROR; cmc_assert(!bm_update_key_by_val(map, 1, 2)); cmc_assert_equals(int32_t, cmc_flags.DUPLICATE, bm_flag(map)); @@ -430,6 +432,7 @@ CMC_CREATE_UNIT(bidimap_test, true, { cmc_assert(bm_insert(map, 2, 2)); cmc_assert(!bm_update_val(map, 1, 2)); cmc_assert_equals(int32_t, cmc_flags.DUPLICATE, bm_flag(map)); + map->flag = cmc_flags.ERROR; cmc_assert(!bm_update_val(map, 2, 1)); cmc_assert_equals(int32_t, cmc_flags.DUPLICATE, bm_flag(map)); @@ -448,6 +451,7 @@ CMC_CREATE_UNIT(bidimap_test, true, { cmc_assert(bm_insert(map, 2, 2)); cmc_assert(!bm_update_val_by_key(map, 2, 1)); cmc_assert_equals(int32_t, cmc_flags.DUPLICATE, bm_flag(map)); + map->flag = cmc_flags.ERROR; cmc_assert(!bm_update_val_by_key(map, 1, 2)); cmc_assert_equals(int32_t, cmc_flags.DUPLICATE, bm_flag(map)); @@ -480,14 +484,25 @@ CMC_CREATE_UNIT(bidimap_test, true, { cmc_assert_equals(size_t, 2, bm_get_key(map, 1)); cmc_assert_equals(int32_t, cmc_flags.OK, bm_flag(map)); + map->flag = cmc_flags.ERROR; cmc_assert_equals(size_t, 1, bm_get_val(map, 2)); cmc_assert_equals(int32_t, cmc_flags.OK, bm_flag(map)); cmc_assert_equals(size_t, 0, bm_get_key(map, 2)); cmc_assert_equals(int32_t, cmc_flags.NOT_FOUND, bm_flag(map)); + map->flag = cmc_flags.ERROR; cmc_assert_equals(size_t, 0, bm_get_val(map, 1)); cmc_assert_equals(int32_t, cmc_flags.NOT_FOUND, bm_flag(map)); + // contains_key + cmc_assert(bm_contains_key(map, 2)); + cmc_assert_equals(int32_t, cmc_flags.OK, bm_flag(map)); + + // contains_val + map->flag = cmc_flags.ERROR; + cmc_assert(bm_contains_val(map, 1)); + cmc_assert_equals(int32_t, cmc_flags.OK, bm_flag(map)); + // copy_of struct bidimap *map2 = bm_copy_of(map); @@ -507,6 +522,7 @@ CMC_CREATE_UNIT(bidimap_test, true, { bm_get_key(map2, 100); cmc_assert_equals(int32_t, cmc_flags.NOT_FOUND, bm_flag(map)); cmc_assert_equals(int32_t, cmc_flags.NOT_FOUND, bm_flag(map2)); + map->flag = cmc_flags.ERROR; cmc_assert(bm_equals(map, map2)); cmc_assert_equals(int32_t, cmc_flags.OK, bm_flag(map)); cmc_assert_equals(int32_t, cmc_flags.OK, bm_flag(map2)); diff --git a/tests/main/unt/deque.c b/tests/main/unt/deque.c index b0c10af..8c52602 100644 --- a/tests/main/unt/deque.c +++ b/tests/main/unt/deque.c @@ -659,15 +659,18 @@ CMC_CREATE_UNIT(deque_test, true, { cmc_assert_equals(int32_t, cmc_flags.OK, d_flag(d)); // customize + d->flag = cmc_flags.ERROR; d_customize(d, &cmc_alloc_node_default, &(struct cmc_callbacks_deque){ 0 }); cmc_assert_equals(int32_t, cmc_flags.OK, d_flag(d)); // push_front + d->flag = cmc_flags.ERROR; cmc_assert(d_push_front(d, 1)); cmc_assert_equals(int32_t, cmc_flags.OK, d_flag(d)); // pop_front + d->flag = cmc_flags.ERROR; cmc_assert(d_pop_front(d)); cmc_assert_equals(int32_t, cmc_flags.OK, d_flag(d)); cmc_assert(!d_pop_front(d)); @@ -678,20 +681,24 @@ CMC_CREATE_UNIT(deque_test, true, { cmc_assert_equals(int32_t, cmc_flags.OK, d_flag(d)); // pop_back + d->flag = cmc_flags.ERROR; cmc_assert(d_pop_back(d)); cmc_assert_equals(int32_t, cmc_flags.OK, d_flag(d)); cmc_assert(!d_pop_back(d)); cmc_assert_equals(int32_t, cmc_flags.EMPTY, d_flag(d)); // front + d->flag = cmc_flags.ERROR; cmc_assert(d_front(d) == 0); cmc_assert_equals(int32_t, cmc_flags.EMPTY, d_flag(d)); cmc_assert(d_push_back(d, 1)); + d->flag = cmc_flags.ERROR; cmc_assert(d_front(d) == 1); cmc_assert_equals(int32_t, cmc_flags.OK, d_flag(d)); // clear + d->flag = cmc_flags.ERROR; d_clear(d); cmc_assert_equals(int32_t, cmc_flags.OK, d_flag(d)); @@ -703,14 +710,23 @@ CMC_CREATE_UNIT(deque_test, true, { cmc_assert(d_back(d) == 1); cmc_assert_equals(int32_t, cmc_flags.OK, d_flag(d)); + // contains + d->flag = cmc_flags.ERROR; + cmc_assert(d_contains(d, 1)); + cmc_assert_equals(int32_t, cmc_flags.OK, d_flag(d)); + // copy_of + d->flag = cmc_flags.ERROR; struct deque *d2 = d_copy_of(d); + cmc_assert_equals(int32_t, cmc_flags.OK, d_flag(d)); cmc_assert_equals(int32_t, cmc_flags.OK, d_flag(d2)); // equals cmc_assert(d_pop_back(d)); cmc_assert(d_pop_back(d2)); + d->flag = cmc_flags.ERROR; + d2->flag = cmc_flags.ERROR; d_front(d); d_front(d2); cmc_assert_equals(int32_t, cmc_flags.EMPTY, d_flag(d)); diff --git a/tests/main/unt/multimap.c b/tests/main/unt/multimap.c index 9baef6a..e3c9461 100644 --- a/tests/main/unt/multimap.c +++ b/tests/main/unt/multimap.c @@ -251,6 +251,11 @@ CMC_CREATE_UNIT(multimap_test, true, { mm_get_ref(map, 1); cmc_assert_equals(int32_t, cmc_flags.EMPTY, mm_flag(map)); + // contains + map->flag = cmc_flags.ERROR; + cmc_assert(!mm_contains(map, 1000)); + cmc_assert_equals(int32_t, cmc_flags.OK, mm_flag(map)); + // copy_of map->flag = cmc_flags.ERROR; struct multimap *map2 = mm_copy_of(map);