742 lines
22 KiB
C++
742 lines
22 KiB
C++
#include <gtest/gtest.h>
|
|
|
|
#include "talgo.h"
|
|
|
|
static int compareFunc(const void *arg1, const void *arg2) { return (*(int *)arg1) - (*(int *)arg2); }
|
|
|
|
TEST(testCase, taosbsearch_equal) {
|
|
// For equal test
|
|
int key = 3;
|
|
void *pRet = NULL;
|
|
|
|
pRet = taosbsearch((void *)&key, NULL, 0, sizeof(int), compareFunc, TD_EQ);
|
|
ASSERT_EQ(pRet, nullptr);
|
|
|
|
// 1 element
|
|
int array1[1] = {5};
|
|
|
|
key = 1;
|
|
pRet = taosbsearch((void *)&key, (void *)array1, 1, sizeof(int), compareFunc, TD_EQ);
|
|
ASSERT_EQ(pRet, nullptr);
|
|
|
|
key = 6;
|
|
pRet = taosbsearch((void *)&key, (void *)array1, 1, sizeof(int), compareFunc, TD_EQ);
|
|
ASSERT_EQ(pRet, nullptr);
|
|
|
|
key = 5;
|
|
pRet = taosbsearch((void *)&key, (void *)array1, 1, sizeof(int), compareFunc, TD_EQ);
|
|
ASSERT_NE(pRet, nullptr);
|
|
ASSERT_EQ(*(int *)pRet, key);
|
|
|
|
// 2 element
|
|
int array2[2] = {3, 6};
|
|
|
|
key = 1;
|
|
pRet = taosbsearch((void *)&key, (void *)array2, 2, sizeof(int), compareFunc, TD_EQ);
|
|
ASSERT_EQ(pRet, nullptr);
|
|
|
|
key = 3;
|
|
pRet = taosbsearch((void *)&key, (void *)array2, 2, sizeof(int), compareFunc, TD_EQ);
|
|
ASSERT_EQ(*(int *)pRet, key);
|
|
|
|
key = 4;
|
|
pRet = taosbsearch((void *)&key, (void *)array2, 2, sizeof(int), compareFunc, TD_EQ);
|
|
ASSERT_EQ(pRet, nullptr);
|
|
|
|
key = 6;
|
|
pRet = taosbsearch((void *)&key, (void *)array2, 2, sizeof(int), compareFunc, TD_EQ);
|
|
ASSERT_EQ(*(int *)pRet, 6);
|
|
|
|
key = 7;
|
|
pRet = taosbsearch((void *)&key, (void *)array2, 2, sizeof(int), compareFunc, TD_EQ);
|
|
ASSERT_EQ(pRet, nullptr);
|
|
|
|
// 3 element
|
|
int array3[3] = {3, 6, 8};
|
|
|
|
key = 1;
|
|
pRet = taosbsearch((void *)&key, (void *)array3, 3, sizeof(int), compareFunc, TD_EQ);
|
|
ASSERT_EQ(pRet, nullptr);
|
|
|
|
key = 3;
|
|
pRet = taosbsearch((void *)&key, (void *)array3, 3, sizeof(int), compareFunc, TD_EQ);
|
|
ASSERT_EQ(*(int *)pRet, 3);
|
|
|
|
key = 4;
|
|
pRet = taosbsearch((void *)&key, (void *)array3, 3, sizeof(int), compareFunc, TD_EQ);
|
|
ASSERT_EQ(pRet, nullptr);
|
|
|
|
key = 6;
|
|
pRet = taosbsearch((void *)&key, (void *)array3, 3, sizeof(int), compareFunc, TD_EQ);
|
|
ASSERT_EQ(*(int *)pRet, 6);
|
|
|
|
key = 7;
|
|
pRet = taosbsearch((void *)&key, (void *)array3, 3, sizeof(int), compareFunc, TD_EQ);
|
|
ASSERT_EQ(pRet, nullptr);
|
|
|
|
key = 8;
|
|
pRet = taosbsearch((void *)&key, (void *)array3, 3, sizeof(int), compareFunc, TD_EQ);
|
|
ASSERT_EQ(*(int *)pRet, 8);
|
|
|
|
key = 9;
|
|
pRet = taosbsearch((void *)&key, (void *)array3, 3, sizeof(int), compareFunc, TD_EQ);
|
|
ASSERT_EQ(pRet, nullptr);
|
|
}
|
|
|
|
TEST(testCase, taosbsearch_greater_or_equal) {
|
|
// For equal test
|
|
int key = 3;
|
|
void *pRet = NULL;
|
|
|
|
pRet = taosbsearch((void *)&key, NULL, 0, sizeof(int), compareFunc, TD_GE);
|
|
ASSERT_EQ(pRet, nullptr);
|
|
|
|
// 1 element
|
|
int array1[1] = {5};
|
|
|
|
key = 1;
|
|
pRet = taosbsearch((void *)&key, (void *)array1, 1, sizeof(int), compareFunc, TD_GE);
|
|
ASSERT_EQ(*(int *)pRet, 5);
|
|
|
|
key = 6;
|
|
pRet = taosbsearch((void *)&key, (void *)array1, 1, sizeof(int), compareFunc, TD_GE);
|
|
ASSERT_EQ(pRet, nullptr);
|
|
|
|
key = 5;
|
|
pRet = taosbsearch((void *)&key, (void *)array1, 1, sizeof(int), compareFunc, TD_GE);
|
|
ASSERT_NE(pRet, nullptr);
|
|
ASSERT_EQ(*(int *)pRet, 5);
|
|
|
|
// 2 element
|
|
int array2[2] = {3, 6};
|
|
|
|
key = 1;
|
|
pRet = taosbsearch((void *)&key, (void *)array2, 2, sizeof(int), compareFunc, TD_GE);
|
|
ASSERT_EQ(*(int *)pRet, 3);
|
|
|
|
key = 3;
|
|
pRet = taosbsearch((void *)&key, (void *)array2, 2, sizeof(int), compareFunc, TD_GE);
|
|
ASSERT_EQ(*(int *)pRet, 3);
|
|
|
|
key = 4;
|
|
pRet = taosbsearch((void *)&key, (void *)array2, 2, sizeof(int), compareFunc, TD_GE);
|
|
ASSERT_EQ(*(int *)pRet, 6);
|
|
|
|
key = 6;
|
|
pRet = taosbsearch((void *)&key, (void *)array2, 2, sizeof(int), compareFunc, TD_GE);
|
|
ASSERT_EQ(*(int *)pRet, 6);
|
|
|
|
key = 7;
|
|
pRet = taosbsearch((void *)&key, (void *)array2, 2, sizeof(int), compareFunc, TD_GE);
|
|
ASSERT_EQ(pRet, nullptr);
|
|
|
|
// 3 element
|
|
int array3[3] = {3, 6, 8};
|
|
|
|
key = 1;
|
|
pRet = taosbsearch((void *)&key, (void *)array3, 3, sizeof(int), compareFunc, TD_GE);
|
|
ASSERT_EQ(*(int *)pRet, 3);
|
|
|
|
key = 3;
|
|
pRet = taosbsearch((void *)&key, (void *)array3, 3, sizeof(int), compareFunc, TD_GE);
|
|
ASSERT_EQ(*(int *)pRet, 3);
|
|
|
|
key = 4;
|
|
pRet = taosbsearch((void *)&key, (void *)array3, 3, sizeof(int), compareFunc, TD_GE);
|
|
ASSERT_EQ(*(int *)pRet, 6);
|
|
|
|
key = 6;
|
|
pRet = taosbsearch((void *)&key, (void *)array3, 3, sizeof(int), compareFunc, TD_GE);
|
|
ASSERT_EQ(*(int *)pRet, 6);
|
|
|
|
key = 7;
|
|
pRet = taosbsearch((void *)&key, (void *)array3, 3, sizeof(int), compareFunc, TD_GE);
|
|
ASSERT_EQ(*(int *)pRet, 8);
|
|
|
|
key = 8;
|
|
pRet = taosbsearch((void *)&key, (void *)array3, 3, sizeof(int), compareFunc, TD_GE);
|
|
ASSERT_EQ(*(int *)pRet, 8);
|
|
|
|
key = 9;
|
|
pRet = taosbsearch((void *)&key, (void *)array3, 3, sizeof(int), compareFunc, TD_GE);
|
|
ASSERT_EQ(pRet, nullptr);
|
|
|
|
// 4 element
|
|
int array4[4] = {3, 6, 8, 11};
|
|
|
|
key = 1;
|
|
pRet = taosbsearch((void *)&key, (void *)array4, 4, sizeof(int), compareFunc, TD_GE);
|
|
ASSERT_EQ(*(int *)pRet, 3);
|
|
|
|
key = 3;
|
|
pRet = taosbsearch((void *)&key, (void *)array4, 4, sizeof(int), compareFunc, TD_GE);
|
|
ASSERT_EQ(*(int *)pRet, 3);
|
|
|
|
key = 4;
|
|
pRet = taosbsearch((void *)&key, (void *)array4, 4, sizeof(int), compareFunc, TD_GE);
|
|
ASSERT_EQ(*(int *)pRet, 6);
|
|
|
|
key = 6;
|
|
pRet = taosbsearch((void *)&key, (void *)array4, 4, sizeof(int), compareFunc, TD_GE);
|
|
ASSERT_EQ(*(int *)pRet, 6);
|
|
|
|
key = 7;
|
|
pRet = taosbsearch((void *)&key, (void *)array4, 4, sizeof(int), compareFunc, TD_GE);
|
|
ASSERT_EQ(*(int *)pRet, 8);
|
|
|
|
key = 8;
|
|
pRet = taosbsearch((void *)&key, (void *)array4, 4, sizeof(int), compareFunc, TD_GE);
|
|
ASSERT_EQ(*(int *)pRet, 8);
|
|
|
|
key = 9;
|
|
pRet = taosbsearch((void *)&key, (void *)array4, 4, sizeof(int), compareFunc, TD_GE);
|
|
ASSERT_EQ(*(int *)pRet, 11);
|
|
|
|
key = 11;
|
|
pRet = taosbsearch((void *)&key, (void *)array4, 4, sizeof(int), compareFunc, TD_GE);
|
|
ASSERT_EQ(*(int *)pRet, 11);
|
|
|
|
key = 13;
|
|
pRet = taosbsearch((void *)&key, (void *)array4, 4, sizeof(int), compareFunc, TD_GE);
|
|
ASSERT_EQ(pRet, nullptr);
|
|
|
|
// 5 element
|
|
int array5[5] = {3, 6, 8, 11, 15};
|
|
|
|
key = 1;
|
|
pRet = taosbsearch((void *)&key, (void *)array5, 5, sizeof(int), compareFunc, TD_GE);
|
|
ASSERT_EQ(*(int *)pRet, 3);
|
|
|
|
key = 3;
|
|
pRet = taosbsearch((void *)&key, (void *)array5, 5, sizeof(int), compareFunc, TD_GE);
|
|
ASSERT_EQ(*(int *)pRet, 3);
|
|
|
|
key = 4;
|
|
pRet = taosbsearch((void *)&key, (void *)array5, 5, sizeof(int), compareFunc, TD_GE);
|
|
ASSERT_EQ(*(int *)pRet, 6);
|
|
|
|
key = 6;
|
|
pRet = taosbsearch((void *)&key, (void *)array5, 5, sizeof(int), compareFunc, TD_GE);
|
|
ASSERT_EQ(*(int *)pRet, 6);
|
|
|
|
key = 7;
|
|
pRet = taosbsearch((void *)&key, (void *)array5, 5, sizeof(int), compareFunc, TD_GE);
|
|
ASSERT_EQ(*(int *)pRet, 8);
|
|
|
|
key = 8;
|
|
pRet = taosbsearch((void *)&key, (void *)array5, 5, sizeof(int), compareFunc, TD_GE);
|
|
ASSERT_EQ(*(int *)pRet, 8);
|
|
|
|
key = 9;
|
|
pRet = taosbsearch((void *)&key, (void *)array5, 5, sizeof(int), compareFunc, TD_GE);
|
|
ASSERT_EQ(*(int *)pRet, 11);
|
|
|
|
key = 11;
|
|
pRet = taosbsearch((void *)&key, (void *)array5, 5, sizeof(int), compareFunc, TD_GE);
|
|
ASSERT_EQ(*(int *)pRet, 11);
|
|
|
|
key = 13;
|
|
pRet = taosbsearch((void *)&key, (void *)array5, 5, sizeof(int), compareFunc, TD_GE);
|
|
ASSERT_EQ(*(int *)pRet, 15);
|
|
|
|
key = 15;
|
|
pRet = taosbsearch((void *)&key, (void *)array5, 5, sizeof(int), compareFunc, TD_GE);
|
|
ASSERT_EQ(*(int *)pRet, 15);
|
|
|
|
key = 17;
|
|
pRet = taosbsearch((void *)&key, (void *)array5, 5, sizeof(int), compareFunc, TD_GE);
|
|
ASSERT_EQ(pRet, nullptr);
|
|
}
|
|
|
|
TEST(testCase, taosbsearch_greater) {
|
|
// For equal test
|
|
int key = 3;
|
|
void *pRet = NULL;
|
|
|
|
pRet = taosbsearch((void *)&key, NULL, 0, sizeof(int), compareFunc, TD_GT);
|
|
ASSERT_EQ(pRet, nullptr);
|
|
|
|
// 1 element
|
|
int array1[1] = {5};
|
|
|
|
key = 1;
|
|
pRet = taosbsearch((void *)&key, (void *)array1, 1, sizeof(int), compareFunc, TD_GT);
|
|
ASSERT_EQ(*(int *)pRet, 5);
|
|
|
|
key = 6;
|
|
pRet = taosbsearch((void *)&key, (void *)array1, 1, sizeof(int), compareFunc, TD_GT);
|
|
ASSERT_EQ(pRet, nullptr);
|
|
|
|
key = 5;
|
|
pRet = taosbsearch((void *)&key, (void *)array1, 1, sizeof(int), compareFunc, TD_GT);
|
|
ASSERT_EQ(pRet, nullptr);
|
|
|
|
// 2 element
|
|
int array2[2] = {3, 6};
|
|
|
|
key = 1;
|
|
pRet = taosbsearch((void *)&key, (void *)array2, 2, sizeof(int), compareFunc, TD_GT);
|
|
ASSERT_EQ(*(int *)pRet, 3);
|
|
|
|
key = 3;
|
|
pRet = taosbsearch((void *)&key, (void *)array2, 2, sizeof(int), compareFunc, TD_GT);
|
|
ASSERT_EQ(*(int *)pRet, 6);
|
|
|
|
key = 4;
|
|
pRet = taosbsearch((void *)&key, (void *)array2, 2, sizeof(int), compareFunc, TD_GT);
|
|
ASSERT_EQ(*(int *)pRet, 6);
|
|
|
|
key = 6;
|
|
pRet = taosbsearch((void *)&key, (void *)array2, 2, sizeof(int), compareFunc, TD_GT);
|
|
ASSERT_EQ(pRet, nullptr);
|
|
|
|
key = 7;
|
|
pRet = taosbsearch((void *)&key, (void *)array2, 2, sizeof(int), compareFunc, TD_GT);
|
|
ASSERT_EQ(pRet, nullptr);
|
|
|
|
// 3 element
|
|
int array3[3] = {3, 6, 8};
|
|
|
|
key = 1;
|
|
pRet = taosbsearch((void *)&key, (void *)array3, 3, sizeof(int), compareFunc, TD_GT);
|
|
ASSERT_EQ(*(int *)pRet, 3);
|
|
|
|
key = 3;
|
|
pRet = taosbsearch((void *)&key, (void *)array3, 3, sizeof(int), compareFunc, TD_GT);
|
|
ASSERT_EQ(*(int *)pRet, 6);
|
|
|
|
key = 4;
|
|
pRet = taosbsearch((void *)&key, (void *)array3, 3, sizeof(int), compareFunc, TD_GT);
|
|
ASSERT_EQ(*(int *)pRet, 6);
|
|
|
|
key = 6;
|
|
pRet = taosbsearch((void *)&key, (void *)array3, 3, sizeof(int), compareFunc, TD_GT);
|
|
ASSERT_EQ(*(int *)pRet, 8);
|
|
|
|
key = 7;
|
|
pRet = taosbsearch((void *)&key, (void *)array3, 3, sizeof(int), compareFunc, TD_GT);
|
|
ASSERT_EQ(*(int *)pRet, 8);
|
|
|
|
key = 8;
|
|
pRet = taosbsearch((void *)&key, (void *)array3, 3, sizeof(int), compareFunc, TD_GT);
|
|
ASSERT_EQ(pRet, nullptr);
|
|
|
|
key = 9;
|
|
pRet = taosbsearch((void *)&key, (void *)array3, 3, sizeof(int), compareFunc, TD_GT);
|
|
ASSERT_EQ(pRet, nullptr);
|
|
|
|
// 4 element
|
|
int array4[4] = {3, 6, 8, 11};
|
|
|
|
key = 1;
|
|
pRet = taosbsearch((void *)&key, (void *)array4, 4, sizeof(int), compareFunc, TD_GT);
|
|
ASSERT_EQ(*(int *)pRet, 3);
|
|
|
|
key = 3;
|
|
pRet = taosbsearch((void *)&key, (void *)array4, 4, sizeof(int), compareFunc, TD_GT);
|
|
ASSERT_EQ(*(int *)pRet, 6);
|
|
|
|
key = 4;
|
|
pRet = taosbsearch((void *)&key, (void *)array4, 4, sizeof(int), compareFunc, TD_GT);
|
|
ASSERT_EQ(*(int *)pRet, 6);
|
|
|
|
key = 6;
|
|
pRet = taosbsearch((void *)&key, (void *)array4, 4, sizeof(int), compareFunc, TD_GT);
|
|
ASSERT_EQ(*(int *)pRet, 8);
|
|
|
|
key = 7;
|
|
pRet = taosbsearch((void *)&key, (void *)array4, 4, sizeof(int), compareFunc, TD_GT);
|
|
ASSERT_EQ(*(int *)pRet, 8);
|
|
|
|
key = 8;
|
|
pRet = taosbsearch((void *)&key, (void *)array4, 4, sizeof(int), compareFunc, TD_GT);
|
|
ASSERT_EQ(*(int *)pRet, 11);
|
|
|
|
key = 9;
|
|
pRet = taosbsearch((void *)&key, (void *)array4, 4, sizeof(int), compareFunc, TD_GT);
|
|
ASSERT_EQ(*(int *)pRet, 11);
|
|
|
|
key = 11;
|
|
pRet = taosbsearch((void *)&key, (void *)array4, 4, sizeof(int), compareFunc, TD_GT);
|
|
ASSERT_EQ(pRet, nullptr);
|
|
|
|
key = 13;
|
|
pRet = taosbsearch((void *)&key, (void *)array4, 4, sizeof(int), compareFunc, TD_GT);
|
|
ASSERT_EQ(pRet, nullptr);
|
|
|
|
// 5 element
|
|
int array5[5] = {3, 6, 8, 11, 15};
|
|
|
|
key = 1;
|
|
pRet = taosbsearch((void *)&key, (void *)array5, 5, sizeof(int), compareFunc, TD_GT);
|
|
ASSERT_EQ(*(int *)pRet, 3);
|
|
|
|
key = 3;
|
|
pRet = taosbsearch((void *)&key, (void *)array5, 5, sizeof(int), compareFunc, TD_GT);
|
|
ASSERT_EQ(*(int *)pRet, 6);
|
|
|
|
key = 4;
|
|
pRet = taosbsearch((void *)&key, (void *)array5, 5, sizeof(int), compareFunc, TD_GT);
|
|
ASSERT_EQ(*(int *)pRet, 6);
|
|
|
|
key = 6;
|
|
pRet = taosbsearch((void *)&key, (void *)array5, 5, sizeof(int), compareFunc, TD_GT);
|
|
ASSERT_EQ(*(int *)pRet, 8);
|
|
|
|
key = 7;
|
|
pRet = taosbsearch((void *)&key, (void *)array5, 5, sizeof(int), compareFunc, TD_GT);
|
|
ASSERT_EQ(*(int *)pRet, 8);
|
|
|
|
key = 8;
|
|
pRet = taosbsearch((void *)&key, (void *)array5, 5, sizeof(int), compareFunc, TD_GT);
|
|
ASSERT_EQ(*(int *)pRet, 11);
|
|
|
|
key = 9;
|
|
pRet = taosbsearch((void *)&key, (void *)array5, 5, sizeof(int), compareFunc, TD_GT);
|
|
ASSERT_EQ(*(int *)pRet, 11);
|
|
|
|
key = 11;
|
|
pRet = taosbsearch((void *)&key, (void *)array5, 5, sizeof(int), compareFunc, TD_GT);
|
|
ASSERT_EQ(*(int *)pRet, 15);
|
|
|
|
key = 13;
|
|
pRet = taosbsearch((void *)&key, (void *)array5, 5, sizeof(int), compareFunc, TD_GT);
|
|
ASSERT_EQ(*(int *)pRet, 15);
|
|
|
|
key = 15;
|
|
pRet = taosbsearch((void *)&key, (void *)array5, 5, sizeof(int), compareFunc, TD_GT);
|
|
ASSERT_EQ(pRet, nullptr);
|
|
|
|
key = 17;
|
|
pRet = taosbsearch((void *)&key, (void *)array5, 5, sizeof(int), compareFunc, TD_GT);
|
|
ASSERT_EQ(pRet, nullptr);
|
|
}
|
|
|
|
TEST(testCase, taosbsearch_less_or_equal) {
|
|
// For equal test
|
|
int key = 3;
|
|
void *pRet = NULL;
|
|
|
|
pRet = taosbsearch((void *)&key, NULL, 0, sizeof(int), compareFunc, TD_LE);
|
|
ASSERT_EQ(pRet, nullptr);
|
|
|
|
// 1 element
|
|
int array1[1] = {5};
|
|
|
|
key = 1;
|
|
pRet = taosbsearch((void *)&key, (void *)array1, 1, sizeof(int), compareFunc, TD_LE);
|
|
ASSERT_EQ(pRet, nullptr);
|
|
|
|
key = 6;
|
|
pRet = taosbsearch((void *)&key, (void *)array1, 1, sizeof(int), compareFunc, TD_LE);
|
|
ASSERT_EQ(*(int *)pRet, 5);
|
|
|
|
key = 5;
|
|
pRet = taosbsearch((void *)&key, (void *)array1, 1, sizeof(int), compareFunc, TD_LE);
|
|
ASSERT_NE(pRet, nullptr);
|
|
ASSERT_EQ(*(int *)pRet, 5);
|
|
|
|
// 2 element
|
|
int array2[2] = {3, 6};
|
|
|
|
key = 1;
|
|
pRet = taosbsearch((void *)&key, (void *)array2, 2, sizeof(int), compareFunc, TD_LE);
|
|
ASSERT_EQ(pRet, nullptr);
|
|
|
|
key = 3;
|
|
pRet = taosbsearch((void *)&key, (void *)array2, 2, sizeof(int), compareFunc, TD_LE);
|
|
ASSERT_EQ(*(int *)pRet, 3);
|
|
|
|
key = 4;
|
|
pRet = taosbsearch((void *)&key, (void *)array2, 2, sizeof(int), compareFunc, TD_LE);
|
|
ASSERT_EQ(*(int *)pRet, 3);
|
|
|
|
key = 6;
|
|
pRet = taosbsearch((void *)&key, (void *)array2, 2, sizeof(int), compareFunc, TD_LE);
|
|
ASSERT_EQ(*(int *)pRet, 6);
|
|
|
|
key = 7;
|
|
pRet = taosbsearch((void *)&key, (void *)array2, 2, sizeof(int), compareFunc, TD_LE);
|
|
ASSERT_EQ(*(int *)pRet, 6);
|
|
|
|
// 3 element
|
|
int array3[3] = {3, 6, 8};
|
|
|
|
key = 1;
|
|
pRet = taosbsearch((void *)&key, (void *)array3, 3, sizeof(int), compareFunc, TD_LE);
|
|
ASSERT_EQ(pRet, nullptr);
|
|
|
|
key = 3;
|
|
pRet = taosbsearch((void *)&key, (void *)array3, 3, sizeof(int), compareFunc, TD_LE);
|
|
ASSERT_EQ(*(int *)pRet, 3);
|
|
|
|
key = 4;
|
|
pRet = taosbsearch((void *)&key, (void *)array3, 3, sizeof(int), compareFunc, TD_LE);
|
|
ASSERT_EQ(*(int *)pRet, 3);
|
|
|
|
key = 6;
|
|
pRet = taosbsearch((void *)&key, (void *)array3, 3, sizeof(int), compareFunc, TD_LE);
|
|
ASSERT_EQ(*(int *)pRet, 6);
|
|
|
|
key = 7;
|
|
pRet = taosbsearch((void *)&key, (void *)array3, 3, sizeof(int), compareFunc, TD_LE);
|
|
ASSERT_EQ(*(int *)pRet, 6);
|
|
|
|
key = 8;
|
|
pRet = taosbsearch((void *)&key, (void *)array3, 3, sizeof(int), compareFunc, TD_LE);
|
|
ASSERT_EQ(*(int *)pRet, 8);
|
|
|
|
key = 9;
|
|
pRet = taosbsearch((void *)&key, (void *)array3, 3, sizeof(int), compareFunc, TD_LE);
|
|
ASSERT_EQ(*(int *)pRet, 8);
|
|
|
|
// 4 element
|
|
int array4[4] = {3, 6, 8, 11};
|
|
|
|
key = 1;
|
|
pRet = taosbsearch((void *)&key, (void *)array4, 4, sizeof(int), compareFunc, TD_LE);
|
|
ASSERT_EQ(pRet, nullptr);
|
|
|
|
key = 3;
|
|
pRet = taosbsearch((void *)&key, (void *)array4, 4, sizeof(int), compareFunc, TD_LE);
|
|
ASSERT_EQ(*(int *)pRet, 3);
|
|
|
|
key = 4;
|
|
pRet = taosbsearch((void *)&key, (void *)array4, 4, sizeof(int), compareFunc, TD_LE);
|
|
ASSERT_EQ(*(int *)pRet, 3);
|
|
|
|
key = 6;
|
|
pRet = taosbsearch((void *)&key, (void *)array4, 4, sizeof(int), compareFunc, TD_LE);
|
|
ASSERT_EQ(*(int *)pRet, 6);
|
|
|
|
key = 7;
|
|
pRet = taosbsearch((void *)&key, (void *)array4, 4, sizeof(int), compareFunc, TD_LE);
|
|
ASSERT_EQ(*(int *)pRet, 6);
|
|
|
|
key = 8;
|
|
pRet = taosbsearch((void *)&key, (void *)array4, 4, sizeof(int), compareFunc, TD_LE);
|
|
ASSERT_EQ(*(int *)pRet, 8);
|
|
|
|
key = 9;
|
|
pRet = taosbsearch((void *)&key, (void *)array4, 4, sizeof(int), compareFunc, TD_LE);
|
|
ASSERT_EQ(*(int *)pRet, 8);
|
|
|
|
key = 11;
|
|
pRet = taosbsearch((void *)&key, (void *)array4, 4, sizeof(int), compareFunc, TD_LE);
|
|
ASSERT_EQ(*(int *)pRet, 11);
|
|
|
|
key = 13;
|
|
pRet = taosbsearch((void *)&key, (void *)array4, 4, sizeof(int), compareFunc, TD_LE);
|
|
ASSERT_EQ(*(int *)pRet, 11);
|
|
|
|
// 5 element
|
|
int array5[5] = {3, 6, 8, 11, 15};
|
|
|
|
key = 1;
|
|
pRet = taosbsearch((void *)&key, (void *)array5, 5, sizeof(int), compareFunc, TD_LE);
|
|
ASSERT_EQ(pRet, nullptr);
|
|
|
|
key = 3;
|
|
pRet = taosbsearch((void *)&key, (void *)array5, 5, sizeof(int), compareFunc, TD_LE);
|
|
ASSERT_EQ(*(int *)pRet, 3);
|
|
|
|
key = 4;
|
|
pRet = taosbsearch((void *)&key, (void *)array5, 5, sizeof(int), compareFunc, TD_LE);
|
|
ASSERT_EQ(*(int *)pRet, 3);
|
|
|
|
key = 6;
|
|
pRet = taosbsearch((void *)&key, (void *)array5, 5, sizeof(int), compareFunc, TD_LE);
|
|
ASSERT_EQ(*(int *)pRet, 6);
|
|
|
|
key = 7;
|
|
pRet = taosbsearch((void *)&key, (void *)array5, 5, sizeof(int), compareFunc, TD_LE);
|
|
ASSERT_EQ(*(int *)pRet, 6);
|
|
|
|
key = 8;
|
|
pRet = taosbsearch((void *)&key, (void *)array5, 5, sizeof(int), compareFunc, TD_LE);
|
|
ASSERT_EQ(*(int *)pRet, 8);
|
|
|
|
key = 9;
|
|
pRet = taosbsearch((void *)&key, (void *)array5, 5, sizeof(int), compareFunc, TD_LE);
|
|
ASSERT_EQ(*(int *)pRet, 8);
|
|
|
|
key = 11;
|
|
pRet = taosbsearch((void *)&key, (void *)array5, 5, sizeof(int), compareFunc, TD_LE);
|
|
ASSERT_EQ(*(int *)pRet, 11);
|
|
|
|
key = 13;
|
|
pRet = taosbsearch((void *)&key, (void *)array5, 5, sizeof(int), compareFunc, TD_LE);
|
|
ASSERT_EQ(*(int *)pRet, 11);
|
|
|
|
key = 15;
|
|
pRet = taosbsearch((void *)&key, (void *)array5, 5, sizeof(int), compareFunc, TD_LE);
|
|
ASSERT_EQ(*(int *)pRet, 15);
|
|
|
|
key = 17;
|
|
pRet = taosbsearch((void *)&key, (void *)array5, 5, sizeof(int), compareFunc, TD_LE);
|
|
ASSERT_EQ(*(int *)pRet, 15);
|
|
}
|
|
|
|
TEST(testCase, taosbsearch_less) {
|
|
// For equal test
|
|
int key = 3;
|
|
void *pRet = NULL;
|
|
|
|
pRet = taosbsearch((void *)&key, NULL, 0, sizeof(int), compareFunc, TD_LT);
|
|
ASSERT_EQ(pRet, nullptr);
|
|
|
|
// 1 element
|
|
int array1[1] = {5};
|
|
|
|
key = 1;
|
|
pRet = taosbsearch((void *)&key, (void *)array1, 1, sizeof(int), compareFunc, TD_LT);
|
|
ASSERT_EQ(pRet, nullptr);
|
|
|
|
key = 6;
|
|
pRet = taosbsearch((void *)&key, (void *)array1, 1, sizeof(int), compareFunc, TD_LT);
|
|
ASSERT_EQ(*(int *)pRet, 5);
|
|
|
|
key = 5;
|
|
pRet = taosbsearch((void *)&key, (void *)array1, 1, sizeof(int), compareFunc, TD_LT);
|
|
ASSERT_EQ(pRet, nullptr);
|
|
|
|
// 2 element
|
|
int array2[2] = {3, 6};
|
|
|
|
key = 1;
|
|
pRet = taosbsearch((void *)&key, (void *)array2, 2, sizeof(int), compareFunc, TD_LT);
|
|
ASSERT_EQ(pRet, nullptr);
|
|
|
|
key = 3;
|
|
pRet = taosbsearch((void *)&key, (void *)array2, 2, sizeof(int), compareFunc, TD_LT);
|
|
ASSERT_EQ(pRet, nullptr);
|
|
|
|
key = 4;
|
|
pRet = taosbsearch((void *)&key, (void *)array2, 2, sizeof(int), compareFunc, TD_LT);
|
|
ASSERT_EQ(*(int *)pRet, 3);
|
|
|
|
key = 6;
|
|
pRet = taosbsearch((void *)&key, (void *)array2, 2, sizeof(int), compareFunc, TD_LT);
|
|
ASSERT_EQ(*(int *)pRet, 3);
|
|
|
|
key = 7;
|
|
pRet = taosbsearch((void *)&key, (void *)array2, 2, sizeof(int), compareFunc, TD_LT);
|
|
ASSERT_EQ(*(int *)pRet, 6);
|
|
|
|
// 3 element
|
|
int array3[3] = {3, 6, 8};
|
|
|
|
key = 1;
|
|
pRet = taosbsearch((void *)&key, (void *)array3, 3, sizeof(int), compareFunc, TD_LT);
|
|
ASSERT_EQ(pRet, nullptr);
|
|
|
|
key = 3;
|
|
pRet = taosbsearch((void *)&key, (void *)array3, 3, sizeof(int), compareFunc, TD_LT);
|
|
ASSERT_EQ(pRet, nullptr);
|
|
|
|
key = 4;
|
|
pRet = taosbsearch((void *)&key, (void *)array3, 3, sizeof(int), compareFunc, TD_LT);
|
|
ASSERT_EQ(*(int *)pRet, 3);
|
|
|
|
key = 6;
|
|
pRet = taosbsearch((void *)&key, (void *)array3, 3, sizeof(int), compareFunc, TD_LT);
|
|
ASSERT_EQ(*(int *)pRet, 3);
|
|
|
|
key = 7;
|
|
pRet = taosbsearch((void *)&key, (void *)array3, 3, sizeof(int), compareFunc, TD_LT);
|
|
ASSERT_EQ(*(int *)pRet, 6);
|
|
|
|
key = 8;
|
|
pRet = taosbsearch((void *)&key, (void *)array3, 3, sizeof(int), compareFunc, TD_LT);
|
|
ASSERT_EQ(*(int *)pRet, 6);
|
|
|
|
key = 9;
|
|
pRet = taosbsearch((void *)&key, (void *)array3, 3, sizeof(int), compareFunc, TD_LT);
|
|
ASSERT_EQ(*(int *)pRet, 8);
|
|
|
|
// 4 element
|
|
int array4[4] = {3, 6, 8, 11};
|
|
|
|
key = 1;
|
|
pRet = taosbsearch((void *)&key, (void *)array4, 4, sizeof(int), compareFunc, TD_LT);
|
|
ASSERT_EQ(pRet, nullptr);
|
|
|
|
key = 3;
|
|
pRet = taosbsearch((void *)&key, (void *)array4, 4, sizeof(int), compareFunc, TD_LT);
|
|
ASSERT_EQ(pRet, nullptr);
|
|
|
|
key = 4;
|
|
pRet = taosbsearch((void *)&key, (void *)array4, 4, sizeof(int), compareFunc, TD_LT);
|
|
ASSERT_EQ(*(int *)pRet, 3);
|
|
|
|
key = 6;
|
|
pRet = taosbsearch((void *)&key, (void *)array4, 4, sizeof(int), compareFunc, TD_LT);
|
|
ASSERT_EQ(*(int *)pRet, 3);
|
|
|
|
key = 7;
|
|
pRet = taosbsearch((void *)&key, (void *)array4, 4, sizeof(int), compareFunc, TD_LT);
|
|
ASSERT_EQ(*(int *)pRet, 6);
|
|
|
|
key = 8;
|
|
pRet = taosbsearch((void *)&key, (void *)array4, 4, sizeof(int), compareFunc, TD_LT);
|
|
ASSERT_EQ(*(int *)pRet, 6);
|
|
|
|
key = 9;
|
|
pRet = taosbsearch((void *)&key, (void *)array4, 4, sizeof(int), compareFunc, TD_LT);
|
|
ASSERT_EQ(*(int *)pRet, 8);
|
|
|
|
key = 11;
|
|
pRet = taosbsearch((void *)&key, (void *)array4, 4, sizeof(int), compareFunc, TD_LT);
|
|
ASSERT_EQ(*(int *)pRet, 8);
|
|
|
|
key = 13;
|
|
pRet = taosbsearch((void *)&key, (void *)array4, 4, sizeof(int), compareFunc, TD_LT);
|
|
ASSERT_EQ(*(int *)pRet, 11);
|
|
|
|
// 5 element
|
|
int array5[5] = {3, 6, 8, 11, 15};
|
|
|
|
key = 1;
|
|
pRet = taosbsearch((void *)&key, (void *)array5, 5, sizeof(int), compareFunc, TD_LT);
|
|
ASSERT_EQ(pRet, nullptr);
|
|
|
|
key = 3;
|
|
pRet = taosbsearch((void *)&key, (void *)array5, 5, sizeof(int), compareFunc, TD_LT);
|
|
ASSERT_EQ(pRet, nullptr);
|
|
|
|
key = 4;
|
|
pRet = taosbsearch((void *)&key, (void *)array5, 5, sizeof(int), compareFunc, TD_LT);
|
|
ASSERT_EQ(*(int *)pRet, 3);
|
|
|
|
key = 6;
|
|
pRet = taosbsearch((void *)&key, (void *)array5, 5, sizeof(int), compareFunc, TD_LT);
|
|
ASSERT_EQ(*(int *)pRet, 3);
|
|
|
|
key = 7;
|
|
pRet = taosbsearch((void *)&key, (void *)array5, 5, sizeof(int), compareFunc, TD_LT);
|
|
ASSERT_EQ(*(int *)pRet, 6);
|
|
|
|
key = 8;
|
|
pRet = taosbsearch((void *)&key, (void *)array5, 5, sizeof(int), compareFunc, TD_LT);
|
|
ASSERT_EQ(*(int *)pRet, 6);
|
|
|
|
key = 9;
|
|
pRet = taosbsearch((void *)&key, (void *)array5, 5, sizeof(int), compareFunc, TD_LT);
|
|
ASSERT_EQ(*(int *)pRet, 8);
|
|
|
|
key = 11;
|
|
pRet = taosbsearch((void *)&key, (void *)array5, 5, sizeof(int), compareFunc, TD_LT);
|
|
ASSERT_EQ(*(int *)pRet, 8);
|
|
|
|
key = 13;
|
|
pRet = taosbsearch((void *)&key, (void *)array5, 5, sizeof(int), compareFunc, TD_LT);
|
|
ASSERT_EQ(*(int *)pRet, 11);
|
|
|
|
key = 15;
|
|
pRet = taosbsearch((void *)&key, (void *)array5, 5, sizeof(int), compareFunc, TD_LT);
|
|
ASSERT_EQ(*(int *)pRet, 11);
|
|
|
|
key = 17;
|
|
pRet = taosbsearch((void *)&key, (void *)array5, 5, sizeof(int), compareFunc, TD_LT);
|
|
ASSERT_EQ(*(int *)pRet, 15);
|
|
} |