Add tests for ArrayUtils::skip_index_to_id.

This commit is contained in:
Harpreet Sangar 2023-04-25 14:27:50 +05:30
parent 330af506e8
commit a72473232b
2 changed files with 47 additions and 1 deletions

View File

@ -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;

View File

@ -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);
}