@@ -25,6 +25,27 @@ TEST(RecoveryTestSuite, RecoveryZeroOrOne) {
2525 ASSERT_EQ (result.result , SUCCESS);
2626}
2727
28+ TEST (RecoveryTestSuite, RecoveryExtremelySmall) {
29+ SparseRecovery recovery (1 << 13 , 16 , 1 , get_seed ());
30+ auto result = recovery.recover ();
31+ ASSERT_EQ (result.recovered_indices .size (), 0 );
32+ ASSERT_EQ (result.result , SUCCESS);
33+ recovery.update (5 );
34+ ASSERT_EQ (recovery.recover ().recovered_indices .size (), 1 );
35+ ASSERT_EQ (recovery.recover ().recovered_indices [0 ], 5 );
36+ std::unordered_set<vec_t > inserted;
37+ for (vec_t i = 0 ; i < 8 ; i++) {
38+ recovery.update (i);
39+ inserted.insert (i);
40+ }
41+ inserted.erase (5 ); // 5 was already inserted
42+ auto result2 = recovery.recover ();
43+ ASSERT_EQ (result2.result , SUCCESS);
44+ ASSERT_EQ (result2.recovered_indices .size (), 7 );
45+ std::unordered_set<vec_t > recovered2 (result2.recovered_indices .begin (), result2.recovered_indices .end ());
46+ ASSERT_EQ (recovered2, inserted);
47+ }
48+
2849TEST (RecoveryTestSuite, RecoveryMediumSize) {
2950 SparseRecovery recovery (1 << 20 , 1 << 10 , 1 , get_seed ());
3051 auto result = recovery.recover ();
0 commit comments