diff options
| author | mo khan <mo.khan@gmail.com> | 2020-08-02 13:06:49 -0600 |
|---|---|---|
| committer | mo khan <mo.khan@gmail.com> | 2020-08-02 13:06:49 -0600 |
| commit | 6e2d8e11756fb823e3366f51b43ab62350943067 (patch) | |
| tree | 67e222bc3aff09f428763338a8e232e81d364fec | |
| parent | 5629d8c8c36631715beed906c29adb19dc66c549 (diff) | |
Start to handle collisions
| -rw-r--r-- | src/02/04/hash.c | 4 | ||||
| -rw-r--r-- | src/02/04/hash_test.c | 13 |
2 files changed, 13 insertions, 4 deletions
diff --git a/src/02/04/hash.c b/src/02/04/hash.c index 4bf679c..7f0ae69 100644 --- a/src/02/04/hash.c +++ b/src/02/04/hash.c @@ -33,7 +33,7 @@ void node_inspect(Node *node) int i = 0; while (node) { - printf("[%d: %3d]", i, node->value); + printf("[%d: %3p]", i, node->value); node = node->next; i++; } @@ -63,9 +63,7 @@ void *hash_get(Hash *hash, int key) void hash_set(Hash *hash, int key, void **value) { - node_inspect(hash->head); int bucket = to_hash(key); Node *node = node_at(hash->head, bucket); node->value = value; - node_inspect(hash->head); } diff --git a/src/02/04/hash_test.c b/src/02/04/hash_test.c index eb7f1d3..98f8e25 100644 --- a/src/02/04/hash_test.c +++ b/src/02/04/hash_test.c @@ -24,7 +24,17 @@ Ensure(HashTable, when_getting_a_values_for_a_key_that_has_been_inserted) { Hash *hash = hash_init(13); hash_set(hash, key, value); - assert_that(*(int *)hash_get(hash, key), is_equal_to(value)); + assert_that(hash_get(hash, key), is_equal_to(value)); +} + +Ensure(HashTable, when_a_hash_collision_occurs) { + Hash *hash = hash_init(13); + + hash_set(hash, 8, 80); + hash_set(hash, 21, 210); + + assert_that(hash_get(hash, 8), is_equal_to(80)); + assert_that(hash_get(hash, 21), is_equal_to(210)); } TestSuite *hash_table_tests() { @@ -33,6 +43,7 @@ TestSuite *hash_table_tests() { add_test_with_context(suite, HashTable, when_initializing_a_hash); add_test_with_context(suite, HashTable, when_getting_a_value_for_a_key_that_has_not_been_inserted); add_test_with_context(suite, HashTable, when_getting_a_values_for_a_key_that_has_been_inserted); + add_test_with_context(suite, HashTable, when_a_hash_collision_occurs); return suite; } |
