Skip to content

Commit 9ae4709

Browse files
committed
Add tests
1 parent 1c4eeba commit 9ae4709

File tree

5 files changed

+145
-6
lines changed

5 files changed

+145
-6
lines changed

include/utils.hpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@
99

1010
#include "config/config.hpp"
1111

12-
// TODO add tests
13-
// TODO in that case define #ifdef TESTING for the fcts here to be testable and available in anonymous namespaces
1412
namespace sparrow_ipc
1513
{
1614
namespace utils

tests/CMakeLists.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ find_package(doctest CONFIG REQUIRED)
44

55
set(test_target "test_sparrow_ipc_lib")
66

7-
add_executable(${test_target} test.cpp)
7+
add_executable(${test_target} main.cpp test.cpp test_utils.cpp)
88
target_link_libraries(${test_target}
99
PRIVATE
1010
sparrow-ipc
@@ -13,6 +13,7 @@ target_link_libraries(${test_target}
1313
target_include_directories(${test_target}
1414
PRIVATE
1515
${CMAKE_BINARY_DIR}/generated
16+
${CMAKE_SOURCE_DIR}/include
1617
)
1718
add_dependencies(${test_target} generate_flatbuffers_headers)
1819
add_test(NAME sparrow-ipc-tests COMMAND ${test_target})

tests/main.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#define DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN
2+
3+
#include "doctest/doctest.h"
4+
5+
//TODO check version?

tests/test.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
#define DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN
2-
31
#include <cstdint>
42
#include <cstring>
53
#include <string_view>
@@ -8,7 +6,7 @@
86
#include "doctest/doctest.h"
97
#include "sparrow.hpp"
108

11-
#include "../include/serialize.hpp"
9+
#include "serialize.hpp"
1210

1311
namespace sparrow_ipc
1412
{

tests/test_utils.cpp

Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
#include "doctest/doctest.h"
2+
3+
#include "utils.hpp"
4+
5+
namespace sparrow_ipc
6+
{
7+
TEST_CASE("align_to_8")
8+
{
9+
CHECK_EQ(utils::align_to_8(0), 0);
10+
CHECK_EQ(utils::align_to_8(1), 8);
11+
CHECK_EQ(utils::align_to_8(7), 8);
12+
CHECK_EQ(utils::align_to_8(8), 8);
13+
CHECK_EQ(utils::align_to_8(9), 16);
14+
CHECK_EQ(utils::align_to_8(15), 16);
15+
CHECK_EQ(utils::align_to_8(16), 16);
16+
}
17+
18+
TEST_CASE("get_flatbuffer_type")
19+
{
20+
flatbuffers::FlatBufferBuilder builder;
21+
SUBCASE("Null and Boolean types")
22+
{
23+
CHECK_EQ(utils::get_flatbuffer_type(builder, "n").first, org::apache::arrow::flatbuf::Type::Null);
24+
CHECK_EQ(utils::get_flatbuffer_type(builder, "b").first, org::apache::arrow::flatbuf::Type::Bool);
25+
}
26+
27+
SUBCASE("Integer types")
28+
{
29+
CHECK_EQ(utils::get_flatbuffer_type(builder, "c").first, org::apache::arrow::flatbuf::Type::Int); // INT8
30+
CHECK_EQ(utils::get_flatbuffer_type(builder, "C").first, org::apache::arrow::flatbuf::Type::Int); // UINT8
31+
CHECK_EQ(utils::get_flatbuffer_type(builder, "s").first, org::apache::arrow::flatbuf::Type::Int); // INT16
32+
CHECK_EQ(utils::get_flatbuffer_type(builder, "S").first, org::apache::arrow::flatbuf::Type::Int); // UINT16
33+
CHECK_EQ(utils::get_flatbuffer_type(builder, "i").first, org::apache::arrow::flatbuf::Type::Int); // INT32
34+
CHECK_EQ(utils::get_flatbuffer_type(builder, "I").first, org::apache::arrow::flatbuf::Type::Int); // UINT32
35+
CHECK_EQ(utils::get_flatbuffer_type(builder, "l").first, org::apache::arrow::flatbuf::Type::Int); // INT64
36+
CHECK_EQ(utils::get_flatbuffer_type(builder, "L").first, org::apache::arrow::flatbuf::Type::Int); // UINT64
37+
}
38+
39+
SUBCASE("Floating Point types")
40+
{
41+
CHECK_EQ(utils::get_flatbuffer_type(builder, "e").first, org::apache::arrow::flatbuf::Type::FloatingPoint); // HALF_FLOAT
42+
CHECK_EQ(utils::get_flatbuffer_type(builder, "f").first, org::apache::arrow::flatbuf::Type::FloatingPoint); // FLOAT
43+
CHECK_EQ(utils::get_flatbuffer_type(builder, "g").first, org::apache::arrow::flatbuf::Type::FloatingPoint); // DOUBLE
44+
}
45+
46+
SUBCASE("String and Binary types")
47+
{
48+
CHECK_EQ(utils::get_flatbuffer_type(builder, "u").first, org::apache::arrow::flatbuf::Type::Utf8); // STRING
49+
CHECK_EQ(utils::get_flatbuffer_type(builder, "U").first, org::apache::arrow::flatbuf::Type::LargeUtf8); // LARGE_STRING
50+
CHECK_EQ(utils::get_flatbuffer_type(builder, "z").first, org::apache::arrow::flatbuf::Type::Binary); // BINARY
51+
CHECK_EQ(utils::get_flatbuffer_type(builder, "Z").first, org::apache::arrow::flatbuf::Type::LargeBinary); // LARGE_BINARY
52+
CHECK_EQ(utils::get_flatbuffer_type(builder, "vu").first, org::apache::arrow::flatbuf::Type::Utf8View); // STRING_VIEW
53+
CHECK_EQ(utils::get_flatbuffer_type(builder, "vz").first, org::apache::arrow::flatbuf::Type::BinaryView); // BINARY_VIEW
54+
}
55+
56+
SUBCASE("Date types")
57+
{
58+
CHECK_EQ(utils::get_flatbuffer_type(builder, "tdD").first, org::apache::arrow::flatbuf::Type::Date); // DATE_DAYS
59+
CHECK_EQ(utils::get_flatbuffer_type(builder, "tdm").first, org::apache::arrow::flatbuf::Type::Date); // DATE_MILLISECONDS
60+
}
61+
62+
SUBCASE("Timestamp types")
63+
{
64+
CHECK_EQ(utils::get_flatbuffer_type(builder, "tss:").first, org::apache::arrow::flatbuf::Type::Timestamp); // TIMESTAMP_SECONDS
65+
CHECK_EQ(utils::get_flatbuffer_type(builder, "tsm:").first, org::apache::arrow::flatbuf::Type::Timestamp); // TIMESTAMP_MILLISECONDS
66+
CHECK_EQ(utils::get_flatbuffer_type(builder, "tsu:").first, org::apache::arrow::flatbuf::Type::Timestamp); // TIMESTAMP_MICROSECONDS
67+
CHECK_EQ(utils::get_flatbuffer_type(builder, "tsn:").first, org::apache::arrow::flatbuf::Type::Timestamp); // TIMESTAMP_NANOSECONDS
68+
}
69+
70+
SUBCASE("Duration types")
71+
{
72+
CHECK_EQ(utils::get_flatbuffer_type(builder, "tDs").first, org::apache::arrow::flatbuf::Type::Duration); // DURATION_SECONDS
73+
CHECK_EQ(utils::get_flatbuffer_type(builder, "tDm").first, org::apache::arrow::flatbuf::Type::Duration); // DURATION_MILLISECONDS
74+
CHECK_EQ(utils::get_flatbuffer_type(builder, "tDu").first, org::apache::arrow::flatbuf::Type::Duration); // DURATION_MICROSECONDS
75+
CHECK_EQ(utils::get_flatbuffer_type(builder, "tDn").first, org::apache::arrow::flatbuf::Type::Duration); // DURATION_NANOSECONDS
76+
}
77+
78+
SUBCASE("Interval types")
79+
{
80+
CHECK_EQ(utils::get_flatbuffer_type(builder, "tiM").first, org::apache::arrow::flatbuf::Type::Interval); // INTERVAL_MONTHS
81+
CHECK_EQ(utils::get_flatbuffer_type(builder, "tiD").first, org::apache::arrow::flatbuf::Type::Interval); // INTERVAL_DAYS_TIME
82+
CHECK_EQ(utils::get_flatbuffer_type(builder, "tin").first, org::apache::arrow::flatbuf::Type::Interval); // INTERVAL_MONTHS_DAYS_NANOSECONDS
83+
}
84+
85+
SUBCASE("Time types")
86+
{
87+
CHECK_EQ(utils::get_flatbuffer_type(builder, "tts").first, org::apache::arrow::flatbuf::Type::Time); // TIME_SECONDS
88+
CHECK_EQ(utils::get_flatbuffer_type(builder, "ttm").first, org::apache::arrow::flatbuf::Type::Time); // TIME_MILLISECONDS
89+
CHECK_EQ(utils::get_flatbuffer_type(builder, "ttu").first, org::apache::arrow::flatbuf::Type::Time); // TIME_MICROSECONDS
90+
CHECK_EQ(utils::get_flatbuffer_type(builder, "ttn").first, org::apache::arrow::flatbuf::Type::Time); // TIME_NANOSECONDS
91+
}
92+
93+
SUBCASE("List types")
94+
{
95+
CHECK_EQ(utils::get_flatbuffer_type(builder, "+l").first, org::apache::arrow::flatbuf::Type::List); // LIST
96+
CHECK_EQ(utils::get_flatbuffer_type(builder, "+L").first, org::apache::arrow::flatbuf::Type::LargeList); // LARGE_LIST
97+
CHECK_EQ(utils::get_flatbuffer_type(builder, "+vl").first, org::apache::arrow::flatbuf::Type::ListView); // LIST_VIEW
98+
CHECK_EQ(utils::get_flatbuffer_type(builder, "+vL").first, org::apache::arrow::flatbuf::Type::LargeListView); // LARGE_LIST_VIEW
99+
CHECK_EQ(utils::get_flatbuffer_type(builder, "+w:16").first, org::apache::arrow::flatbuf::Type::FixedSizeList); // FIXED_SIZED_LIST
100+
CHECK_THROWS(utils::get_flatbuffer_type(builder, "+w:")); // Invalid FixedSizeList format
101+
}
102+
103+
SUBCASE("Struct and Map types")
104+
{
105+
CHECK_EQ(utils::get_flatbuffer_type(builder, "+s").first, org::apache::arrow::flatbuf::Type::Struct_); // STRUCT
106+
CHECK_EQ(utils::get_flatbuffer_type(builder, "+m").first, org::apache::arrow::flatbuf::Type::Map); // MAP
107+
}
108+
109+
SUBCASE("Union types")
110+
{
111+
CHECK_EQ(utils::get_flatbuffer_type(builder, "+ud:").first, org::apache::arrow::flatbuf::Type::Union); // DENSE_UNION
112+
CHECK_EQ(utils::get_flatbuffer_type(builder, "+us:").first, org::apache::arrow::flatbuf::Type::Union); // SPARSE_UNION
113+
}
114+
115+
SUBCASE("Run-End Encoded type")
116+
{
117+
CHECK_EQ(utils::get_flatbuffer_type(builder, "+r").first, org::apache::arrow::flatbuf::Type::RunEndEncoded); // RUN_ENCODED
118+
}
119+
120+
SUBCASE("Decimal types")
121+
{
122+
CHECK_EQ(utils::get_flatbuffer_type(builder, "d:10,5").first, org::apache::arrow::flatbuf::Type::Decimal); // DECIMAL (general)
123+
CHECK_THROWS(utils::get_flatbuffer_type(builder, "d:10")); // Invalid Decimal format
124+
}
125+
126+
SUBCASE("Fixed Width Binary type")
127+
{
128+
CHECK_EQ(utils::get_flatbuffer_type(builder, "w:32").first, org::apache::arrow::flatbuf::Type::FixedSizeBinary); // FIXED_WIDTH_BINARY
129+
CHECK_THROWS(utils::get_flatbuffer_type(builder, "w:")); // Invalid FixedSizeBinary format
130+
}
131+
132+
SUBCASE("Unsupported type returns Null")
133+
{
134+
CHECK_EQ(utils::get_flatbuffer_type(builder, "unsupported_format").first, org::apache::arrow::flatbuf::Type::Null);
135+
}
136+
}
137+
}

0 commit comments

Comments
 (0)