@@ -35,6 +35,35 @@ TEST_F(BruteForceTest, brute_force_vector_add_test) {
3535 VecSimIndex_Free (index);
3636}
3737
38+ TEST_F (BruteForceTest, resizeIndex) {
39+ size_t dim = 4 ;
40+ size_t n = 15 ;
41+ VecSimParams params{.algo = VecSimAlgo_BF,
42+ .bfParams = BFParams{.type = VecSimType_FLOAT32,
43+ .dim = dim,
44+ .metric = VecSimMetric_L2,
45+ .initialCapacity = n}};
46+ VecSimIndex *index = VecSimIndex_New (¶ms);
47+ ASSERT_EQ (VecSimIndex_IndexSize (index), 0 );
48+
49+ float a[dim];
50+ for (size_t i = 0 ; i < n; i++) {
51+ for (size_t j = 0 ; j < dim; j++) {
52+ a[j] = (float )i;
53+ }
54+ VecSimIndex_AddVector (index, (const void *)a, i);
55+ }
56+ ASSERT_EQ (reinterpret_cast <BruteForceIndex *>(index)->idToVectorBlockMemberMapping .size (), n);
57+
58+ // Add another vector, since index size equals to the capacity, this should cause resizing
59+ // (by 10% factor from the new index size).
60+ VecSimIndex_AddVector (index, (const void *)a, n + 1 );
61+ ASSERT_EQ (VecSimIndex_IndexSize (index), n + 1 );
62+ ASSERT_EQ (reinterpret_cast <BruteForceIndex *>(index)->idToVectorBlockMemberMapping .size (),
63+ std::ceil (1.1 * (n + 1 )));
64+ VecSimIndex_Free (index);
65+ }
66+
3867TEST_F (BruteForceTest, brute_force_vector_search_test_ip) {
3968 size_t dim = 4 ;
4069 size_t n = 100 ;
0 commit comments