mirror of
https://github.com/typesense/typesense.git
synced 2025-05-18 12:42:50 +08:00
Add tests for ArrayUtils::skip_index_to_id
.
This commit is contained in:
parent
330af506e8
commit
a72473232b
@ -153,11 +153,15 @@ size_t ArrayUtils::exclude_scalar(const uint32_t *A, const size_t lenA,
|
||||
|
||||
bool ArrayUtils::skip_index_to_id(uint32_t& curr_index, uint32_t const* const array, const uint32_t& array_len,
|
||||
const uint32_t& id) {
|
||||
if (curr_index >= array_len) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (id <= array[curr_index]) {
|
||||
return id == array[curr_index];
|
||||
}
|
||||
|
||||
long start = curr_index, mid, end = array_len;
|
||||
long start = curr_index, mid, end = array_len - 1;
|
||||
|
||||
while (start <= end) {
|
||||
mid = start + (end - start) / 2;
|
||||
|
@ -172,4 +172,46 @@ TEST(SortedArrayTest, FilterArray) {
|
||||
delete[] arr2;
|
||||
delete[] arr1;
|
||||
delete[] results;
|
||||
}
|
||||
|
||||
TEST(SortedArrayTest, SkipToID) {
|
||||
std::vector<uint32_t> array;
|
||||
for (uint32_t i = 0; i < 10; i++) {
|
||||
array.push_back(i * 3);
|
||||
}
|
||||
|
||||
uint32_t index = 0;
|
||||
bool found = ArrayUtils::skip_index_to_id(index, array.data(), array.size(), 15);
|
||||
ASSERT_TRUE(found);
|
||||
ASSERT_EQ(5, index);
|
||||
|
||||
index = 4;
|
||||
found = ArrayUtils::skip_index_to_id(index, array.data(), array.size(), 3);
|
||||
ASSERT_FALSE(found);
|
||||
ASSERT_EQ(4, index);
|
||||
|
||||
index = 4;
|
||||
found = ArrayUtils::skip_index_to_id(index, array.data(), array.size(), 12);
|
||||
ASSERT_TRUE(found);
|
||||
ASSERT_EQ(4, index);
|
||||
|
||||
index = 4;
|
||||
found = ArrayUtils::skip_index_to_id(index, array.data(), array.size(), 24);
|
||||
ASSERT_TRUE(found);
|
||||
ASSERT_EQ(8, index);
|
||||
|
||||
index = 4;
|
||||
found = ArrayUtils::skip_index_to_id(index, array.data(), array.size(), 25);
|
||||
ASSERT_FALSE(found);
|
||||
ASSERT_EQ(9, index);
|
||||
|
||||
index = 4;
|
||||
found = ArrayUtils::skip_index_to_id(index, array.data(), array.size(), 30);
|
||||
ASSERT_FALSE(found);
|
||||
ASSERT_EQ(10, index);
|
||||
|
||||
index = 12;
|
||||
found = ArrayUtils::skip_index_to_id(index, array.data(), array.size(), 30);
|
||||
ASSERT_FALSE(found);
|
||||
ASSERT_EQ(12, index);
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user