@@ -218,6 +218,37 @@ void run_retrieve_test_5(HashTable* table) {
218
218
check_result (result10, expected_result10);
219
219
}
220
220
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
+
221
252
template <typename HashTable>
222
253
void run_dynamic_retrieve_test_1 (HashTable* table) {
223
254
typedef std::pair<typename HashTable::Iterator, typename HashTable::Iterator>
0 commit comments