MCPcopy Create free account
hub / github.com/bytedance/bolt / BaseDuckWrapperTest

Class BaseDuckWrapperTest

bolt/duckdb/conversion/tests/DuckWrapperTest.cpp:40–116  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

38using namespace bytedance::bolt::duckdb;
39
40class BaseDuckWrapperTest : public testing::Test {
41 public:
42 static void SetUpTestSuite() {
43 memory::MemoryManager::testingSetInstance({});
44 }
45
46 template <class T>
47 void verifyUnaryResult(
48 const std::string& query,
49 const std::vector<T>& expectedOutput,
50 const std::vector<bool>& nulls) {
51 auto result = db_->execute(query);
52 ASSERT_EQ(result->success(), true)
53 << "Query failed: " << result->errorMessage();
54 ASSERT_EQ(result->columnCount(), 1);
55 size_t currentOffset = 0;
56 while (result->next()) {
57 auto rowVector = result->getVector();
58 auto simpleVector = rowVector->childAt(0)->as<SimpleVector<T>>();
59 ASSERT_NE(simpleVector, nullptr);
60 for (auto i = 0; i < simpleVector->size(); i++) {
61 auto rowNr = currentOffset + i;
62 ASSERT_LE(rowNr, expectedOutput.size());
63 if (nulls[rowNr]) {
64 ASSERT_EQ(simpleVector->isNullAt(i), true);
65 } else {
66 ASSERT_EQ(simpleVector->isNullAt(i), false);
67 ASSERT_EQ(simpleVector->valueAt(i), expectedOutput[rowNr]);
68 }
69 }
70 currentOffset += simpleVector->size();
71 }
72 ASSERT_EQ(currentOffset, expectedOutput.size());
73 }
74
75 template <class T>
76 void verifyUnaryResult(
77 const std::string& query,
78 const std::vector<T>& expectedOutput) {
79 std::vector<bool> nulls(expectedOutput.size(), false);
80 verifyUnaryResult<T>(
81 std::move(query), std::move(expectedOutput), std::move(nulls));
82 }
83
84 template <class T>
85 void verifyDuckToBoltDecimal(
86 const std::string& query,
87 const std::vector<std::optional<T>>& expected) {
88 auto result = db_->execute(query);
89 ASSERT_EQ(result->success(), true)
90 << "Query failed: " << result->errorMessage();
91 ASSERT_EQ(result->columnCount(), 1);
92 size_t currentOffset = 0;
93 while (result->next()) {
94 auto rowVector = result->getVector();
95 auto simpleVector = rowVector->childAt(0)->as<SimpleVector<T>>();
96 ASSERT_NE(simpleVector, nullptr);
97 for (auto i = 0; i < simpleVector->size(); i++) {

Callers

nothing calls this directly

Calls 3

createFunction · 0.50
getMethod · 0.45

Tested by

no test coverage detected