| 
21 | 21 | #include "test_utils/indexbuilder_test_utils.h"  | 
22 | 22 | #include "test_utils/AssertUtils.h"  | 
23 | 23 | #include <boost/filesystem.hpp>  | 
 | 24 | +#include <numeric>  | 
24 | 25 | #include "test_utils/storage_test_utils.h"  | 
25 | 26 | 
 
  | 
26 | 27 | constexpr int64_t nb = 100;  | 
@@ -83,39 +84,67 @@ TEST_F(StringIndexMarisaTest, NotIn) {  | 
83 | 84 | TEST_F(StringIndexMarisaTest, Range) {  | 
84 | 85 |     auto index = milvus::index::CreateStringIndexMarisa();  | 
85 | 86 |     std::vector<std::string> strings(nb);  | 
 | 87 | +    std::vector<int> counts(10);  | 
86 | 88 |     for (int i = 0; i < nb; ++i) {  | 
87 |  | -        strings[i] = std::to_string(std::rand() % 10);  | 
 | 89 | +        int val = std::rand() % 10;  | 
 | 90 | +        counts[val]++;  | 
 | 91 | +        strings[i] = std::to_string(val);  | 
88 | 92 |     }  | 
89 | 93 |     index->Build(nb, strings.data());  | 
90 | 94 | 
 
  | 
91 | 95 |     {  | 
 | 96 | +        // [0...9]  | 
92 | 97 |         auto bitset = index->Range("0", milvus::OpType::GreaterEqual);  | 
93 | 98 |         ASSERT_EQ(bitset.size(), nb);  | 
94 | 99 |         ASSERT_EQ(Count(bitset), nb);  | 
95 | 100 |     }  | 
96 | 101 | 
 
  | 
97 | 102 |     {  | 
98 |  | -        auto bitset = index->Range("90", milvus::OpType::LessThan);  | 
 | 103 | +        // [5...9]  | 
 | 104 | +        int expect = std::accumulate(counts.begin() + 5, counts.end(), 0);  | 
 | 105 | +        auto bitset = index->Range("5", milvus::OpType::GreaterEqual);  | 
99 | 106 |         ASSERT_EQ(bitset.size(), nb);  | 
100 |  | -        ASSERT_EQ(Count(bitset), nb);  | 
 | 107 | +        ASSERT_EQ(Count(bitset), expect);  | 
101 | 108 |     }  | 
102 | 109 | 
 
  | 
103 | 110 |     {  | 
104 |  | -        auto bitset = index->Range("9", milvus::OpType::LessEqual);  | 
 | 111 | +        // [6...9]  | 
 | 112 | +        int expect = std::accumulate(counts.begin() + 6, counts.end(), 0);  | 
 | 113 | +        auto bitset = index->Range("5", milvus::OpType::GreaterThan);  | 
105 | 114 |         ASSERT_EQ(bitset.size(), nb);  | 
106 |  | -        ASSERT_EQ(Count(bitset), nb);  | 
 | 115 | +        ASSERT_EQ(Count(bitset), expect);  | 
107 | 116 |     }  | 
108 | 117 | 
 
  | 
109 | 118 |     {  | 
110 |  | -        auto bitset = index->Range("0", true, "9", true);  | 
 | 119 | +        // [0...3]  | 
 | 120 | +        int expect = std::accumulate(counts.begin(), counts.begin() + 4, 0);  | 
 | 121 | +        auto bitset = index->Range("4", milvus::OpType::LessThan);  | 
111 | 122 |         ASSERT_EQ(bitset.size(), nb);  | 
112 |  | -        ASSERT_EQ(Count(bitset), nb);  | 
 | 123 | +        ASSERT_EQ(Count(bitset), expect);  | 
113 | 124 |     }  | 
114 | 125 | 
 
  | 
115 | 126 |     {  | 
116 |  | -        auto bitset = index->Range("0", true, "90", false);  | 
 | 127 | +        // [0...4]  | 
 | 128 | +        int expect = std::accumulate(counts.begin(), counts.begin() + 5, 0);  | 
 | 129 | +        auto bitset = index->Range("4", milvus::OpType::LessEqual);  | 
117 | 130 |         ASSERT_EQ(bitset.size(), nb);  | 
118 |  | -        ASSERT_EQ(Count(bitset), nb);  | 
 | 131 | +        ASSERT_EQ(Count(bitset), expect);  | 
 | 132 | +    }  | 
 | 133 | + | 
 | 134 | +    {  | 
 | 135 | +        // [2...8]  | 
 | 136 | +        int expect = std::accumulate(counts.begin() + 2, counts.begin() + 9, 0);  | 
 | 137 | +        auto bitset = index->Range("2", true, "8", true);  | 
 | 138 | +        ASSERT_EQ(bitset.size(), nb);  | 
 | 139 | +        ASSERT_EQ(Count(bitset), expect);  | 
 | 140 | +    }  | 
 | 141 | + | 
 | 142 | +    {  | 
 | 143 | +        // [0...8]  | 
 | 144 | +        int expect = std::accumulate(counts.begin(), counts.begin() + 9, 0);  | 
 | 145 | +        auto bitset = index->Range("0", true, "9", false);  | 
 | 146 | +        ASSERT_EQ(bitset.size(), nb);  | 
 | 147 | +        ASSERT_EQ(Count(bitset), expect);  | 
119 | 148 |     }  | 
120 | 149 | }  | 
121 | 150 | 
 
  | 
 | 
0 commit comments