TDengine/source/util/test/arrayTest.cpp

85 lines
2 KiB
C++
Raw Normal View History

2021-07-19 07:13:57 +00:00
#include <gtest/gtest.h>
#include <stdlib.h>
#include <time.h>
#include <random>
#include "tarray.h"
2022-01-11 07:40:10 +00:00
#include "tcompare.h"
2022-10-26 07:28:13 +00:00
/*
2021-07-19 07:13:57 +00:00
namespace {
static void remove_batch_test() {
2022-10-26 07:28:13 +00:00
SArray* pa = (SArray*)taosArrayInit(4, sizeof(int32_t));
2021-07-19 07:13:57 +00:00
2022-10-26 07:28:13 +00:00
for (int32_t i = 0; i < 20; ++i) {
int32_t a = i;
taosArrayPush(pa, &a);
}
2021-07-19 07:13:57 +00:00
2022-10-26 07:28:13 +00:00
SArray* delList = (SArray*)taosArrayInit(4, sizeof(int32_t));
taosArrayRemoveBatch(pa, (const int32_t*)TARRAY_GET_START(delList), taosArrayGetSize(delList));
EXPECT_EQ(taosArrayGetSize(pa), 20);
2021-07-19 07:13:57 +00:00
2022-10-26 07:28:13 +00:00
int32_t a = 5;
taosArrayPush(delList, &a);
2021-07-19 07:13:57 +00:00
2022-10-26 07:28:13 +00:00
taosArrayRemoveBatch(pa, (const int32_t*)TARRAY_GET_START(delList), taosArrayGetSize(delList));
EXPECT_EQ(taosArrayGetSize(pa), 19);
EXPECT_EQ(*(int*)taosArrayGet(pa, 5), 6);
2021-07-19 07:13:57 +00:00
2022-10-26 07:28:13 +00:00
taosArrayInsert(pa, 5, &a);
EXPECT_EQ(taosArrayGetSize(pa), 20);
EXPECT_EQ(*(int*)taosArrayGet(pa, 5), 5);
2021-07-19 07:13:57 +00:00
2022-10-26 07:28:13 +00:00
taosArrayClear(delList);
2021-07-19 07:13:57 +00:00
2022-10-26 07:28:13 +00:00
a = 6;
taosArrayPush(delList, &a);
2021-07-19 07:13:57 +00:00
2022-10-26 07:28:13 +00:00
a = 9;
taosArrayPush(delList, &a);
2021-07-19 07:13:57 +00:00
2022-10-26 07:28:13 +00:00
a = 14;
taosArrayPush(delList, &a);
taosArrayRemoveBatch(pa, (const int32_t*)TARRAY_GET_START(delList), taosArrayGetSize(delList));
EXPECT_EQ(taosArrayGetSize(pa), 17);
2022-10-26 07:28:13 +00:00
taosArrayDestroy(pa);
taosArrayDestroy(delList);
2021-07-19 07:13:57 +00:00
}
} // namespace
2022-10-13 03:49:46 +00:00
TEST(arrayTest, array_list_test) { remove_batch_test(); }
2022-10-26 07:28:13 +00:00
*/
2022-01-11 07:40:10 +00:00
TEST(arrayTest, array_search_test) {
2022-10-13 03:49:46 +00:00
SArray* pa = (SArray*)taosArrayInit(4, sizeof(int32_t));
2022-01-11 07:40:10 +00:00
2022-10-13 03:49:46 +00:00
for (int32_t i = 10; i < 20; ++i) {
2022-01-11 07:40:10 +00:00
int32_t a = i;
taosArrayPush(pa, &a);
}
2022-10-13 03:49:46 +00:00
for (int i = 0; i < 30; i++) {
int32_t k = i;
2022-01-11 07:40:10 +00:00
int32_t* pRet = (int32_t*)taosArraySearch(pa, &k, compareInt32Val, TD_GE);
2022-10-13 03:49:46 +00:00
int32_t idx = taosArraySearchIdx(pa, &k, compareInt32Val, TD_GE);
2022-01-11 07:40:10 +00:00
2022-10-13 03:49:46 +00:00
if (pRet == NULL) {
2022-01-11 07:40:10 +00:00
ASSERT_EQ(idx, -1);
} else {
ASSERT_EQ(taosArrayGet(pa, idx), pRet);
}
pRet = (int32_t*)taosArraySearch(pa, &k, compareInt32Val, TD_LE);
idx = taosArraySearchIdx(pa, &k, compareInt32Val, TD_LE);
2022-10-13 03:49:46 +00:00
if (pRet == NULL) {
2022-01-11 07:40:10 +00:00
ASSERT_EQ(idx, -1);
} else {
ASSERT_EQ(taosArrayGet(pa, idx), pRet);
}
}
taosArrayDestroy(pa);
2022-01-11 07:40:10 +00:00
}