Skip to content

Commit 6c0443b

Browse files
committed
adding unit test for previous bug in the bit-packed flat hash table
1 parent 646b8f0 commit 6c0443b

File tree

2 files changed

+38
-0
lines changed

2 files changed

+38
-0
lines changed

src/test/bit_packed_flat_hash_table_test.cc

+7
Original file line numberDiff line numberDiff line change
@@ -50,3 +50,10 @@ TEST(BitPackedFlatHashTableTest, RetrieveTest4) {
5050
BitPackedFlatHashTable<uint32_t> table(num_buckets, num_items);
5151
ft::run_retrieve_test_5(&table);
5252
}
53+
54+
TEST(BitPackedFlatHashTableTest, RetrieveTest5) {
55+
int num_buckets = 8;
56+
int num_items = 4;
57+
BitPackedFlatHashTable<uint32_t> table(num_buckets, num_items);
58+
ft::run_retrieve_test_6(&table);
59+
}

src/test/test_utils.h

+31
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,37 @@ void run_retrieve_test_5(HashTable* table) {
218218
check_result(result10, expected_result10);
219219
}
220220

221+
// Written to catch an earlier bug in the bit-packed flat hash table
222+
// num_buckets = 8
223+
// num_items = 4
224+
template <typename HashTable>
225+
void run_retrieve_test_6(HashTable* table) {
226+
typedef std::pair<typename HashTable::Iterator, typename HashTable::Iterator>
227+
IteratorPair;
228+
std::vector<uint32_t> entries = {3, 5, 5, 1};
229+
table->add_entries(entries);
230+
231+
std::vector<int32_t> expected_result1 = {3};
232+
IteratorPair result1 = table->retrieve(1);
233+
check_result(result1, expected_result1);
234+
235+
std::vector<int32_t> expected_result2 = {0};
236+
IteratorPair result2 = table->retrieve(3);
237+
check_result(result2, expected_result2);
238+
239+
std::vector<int32_t> expected_result3 = {1, 2};
240+
IteratorPair result3 = table->retrieve(5);
241+
check_result(result3, expected_result3);
242+
243+
std::vector<int32_t> expected_result4 = {};
244+
IteratorPair result4 = table->retrieve(6);
245+
check_result(result4, expected_result4);
246+
247+
std::vector<int32_t> expected_result5 = {};
248+
IteratorPair result5 = table->retrieve(7);
249+
check_result(result5, expected_result5);
250+
}
251+
221252
template <typename HashTable>
222253
void run_dynamic_retrieve_test_1(HashTable* table) {
223254
typedef std::pair<typename HashTable::Iterator, typename HashTable::Iterator>

0 commit comments

Comments
 (0)