Skip to content

Commit 8a402ee

Browse files
committed
Add back tests for PA
1 parent fbc0c9f commit 8a402ee

File tree

1 file changed

+142
-142
lines changed

1 file changed

+142
-142
lines changed

tests/test_primitive_array.cpp

Lines changed: 142 additions & 142 deletions
Original file line numberDiff line numberDiff line change
@@ -10,146 +10,146 @@
1010

1111
namespace sparrow_ipc
1212
{
13-
// namespace sp = sparrow;
14-
//
15-
// using testing_types = std::tuple<
16-
// int,
17-
// float,
18-
// double>;
19-
//
20-
// template <typename T>
21-
// void compare_bitmap(sparrow::primitive_array<T>& pa1, sparrow::primitive_array<T>& pa2)
22-
// {
23-
// const auto pa1_bitmap = pa1.bitmap();
24-
// const auto pa2_bitmap = pa2.bitmap();
25-
//
26-
// CHECK_EQ(pa1_bitmap.size(), pa2_bitmap.size());
27-
// auto pa1_it = pa1_bitmap.begin();
28-
// auto pa2_it = pa2_bitmap.begin();
29-
// for (size_t i = 0; i < pa1_bitmap.size(); ++i)
30-
// {
31-
// CHECK_EQ(*pa1_it, *pa2_it);
32-
// ++pa1_it;
33-
// ++pa2_it;
34-
// }
35-
// }
36-
//
37-
// template <typename T>
38-
// void compare_metadata(sparrow::primitive_array<T>& pa1, sparrow::primitive_array<T>& pa2)
39-
// {
40-
// if (!pa1.metadata().has_value())
41-
// {
42-
// CHECK(!pa2.metadata().has_value());
43-
// return;
44-
// }
45-
//
46-
// CHECK(pa2.metadata().has_value());
47-
// sparrow::key_value_view kvs1_view = *(pa1.metadata());
48-
// sparrow::key_value_view kvs2_view = *(pa2.metadata());
49-
//
50-
// CHECK_EQ(kvs1_view.size(), kvs2_view.size());
51-
// std::vector<std::pair<std::string, std::string>> kvs1, kvs2;
52-
// auto kvs1_it = kvs1_view.cbegin();
53-
// auto kvs2_it = kvs2_view.cbegin();
54-
// for (auto i = 0; i < kvs1_view.size(); ++i)
55-
// {
56-
// CHECK_EQ(*kvs1_it, *kvs2_it);
57-
// ++kvs1_it;
58-
// ++kvs2_it;
59-
// }
60-
// }
61-
//
62-
// TEST_CASE_TEMPLATE_DEFINE("Serialize and Deserialize primitive_array", T, primitive_array_types)
63-
// {
64-
// auto create_primitive_array = []() -> sp::primitive_array<T> {
65-
// if constexpr (std::is_same_v<T, int>)
66-
// {
67-
// return {10, 20, 30, 40, 50};
68-
// }
69-
// else if constexpr (std::is_same_v<T, float>)
70-
// {
71-
// return {10.5f, 20.5f, 30.5f, 40.5f, 50.5f};
72-
// }
73-
// else if constexpr (std::is_same_v<T, double>)
74-
// {
75-
// return {10.1, 20.2, 30.3, 40.4, 50.5};
76-
// }
77-
// else
78-
// {
79-
// FAIL("Unsupported type for templated test case");
80-
// }
81-
// };
82-
//
83-
// sp::primitive_array<T> ar = create_primitive_array();
84-
//
85-
// std::vector<uint8_t> serialized_data = serialize_primitive_array(ar);
86-
//
87-
// CHECK(serialized_data.size() > 0);
88-
//
89-
// sp::primitive_array<T> deserialized_ar = deserialize_primitive_array<T>(serialized_data);
90-
//
91-
// CHECK_EQ(ar, deserialized_ar);
92-
//
93-
// compare_bitmap<T>(ar, deserialized_ar);
94-
// compare_metadata<T>(ar, deserialized_ar);
95-
// }
96-
//
97-
// TEST_CASE_TEMPLATE_APPLY(primitive_array_types, testing_types);
98-
//
99-
// TEST_CASE("Serialize and Deserialize primitive_array - int with nulls")
100-
// {
101-
// // Data buffer
102-
// sp::u8_buffer<int> data_buffer = {100, 200, 300, 400, 500};
103-
//
104-
// // Validity bitmap: 100 (valid), 200 (valid), 300 (null), 400 (valid), 500 (null)
105-
// sp::validity_bitmap validity(5, true); // All valid initially
106-
// validity.set(2, false); // Set index 2 to null
107-
// validity.set(4, false); // Set index 4 to null
108-
//
109-
// sp::primitive_array<int> ar(std::move(data_buffer), std::move(validity));
110-
//
111-
// std::vector<uint8_t> serialized_data = serialize_primitive_array(ar);
112-
//
113-
// CHECK(serialized_data.size() > 0);
114-
//
115-
// sp::primitive_array<int> deserialized_ar = deserialize_primitive_array<int>(serialized_data);
116-
//
117-
// CHECK_EQ(ar, deserialized_ar);
118-
//
119-
// compare_bitmap<int>(ar, deserialized_ar);
120-
// compare_metadata<int>(ar, deserialized_ar);
121-
// }
122-
//
123-
// TEST_CASE("Serialize and Deserialize primitive_array - with name and metadata")
124-
// {
125-
// // Data buffer
126-
// sp::u8_buffer<int> data_buffer = {1, 2, 3};
127-
//
128-
// // Validity bitmap: All valid
129-
// sp::validity_bitmap validity(3, true);
130-
//
131-
// // Custom metadata
132-
// std::vector<sp::metadata_pair> metadata = {
133-
// {"key1", "value1"},
134-
// {"key2", "value2"}
135-
// };
136-
//
137-
// sp::primitive_array<int> ar(
138-
// std::move(data_buffer),
139-
// std::move(validity),
140-
// "my_named_array", // name
141-
// std::make_optional(std::vector<sparrow::metadata_pair>{{"key1", "value1"}, {"key2", "value2"}})
142-
// );
143-
//
144-
// std::vector<uint8_t> serialized_data = serialize_primitive_array(ar);
145-
//
146-
// CHECK(serialized_data.size() > 0);
147-
//
148-
// sp::primitive_array<int> deserialized_ar = deserialize_primitive_array<int>(serialized_data);
149-
//
150-
// CHECK_EQ(ar, deserialized_ar);
151-
//
152-
// compare_bitmap<int>(ar, deserialized_ar);
153-
// compare_metadata<int>(ar, deserialized_ar);
154-
// }
13+
namespace sp = sparrow;
14+
15+
using testing_types = std::tuple<
16+
int,
17+
float,
18+
double>;
19+
20+
template <typename T>
21+
void compare_bitmap(sparrow::primitive_array<T>& pa1, sparrow::primitive_array<T>& pa2)
22+
{
23+
const auto pa1_bitmap = pa1.bitmap();
24+
const auto pa2_bitmap = pa2.bitmap();
25+
26+
CHECK_EQ(pa1_bitmap.size(), pa2_bitmap.size());
27+
auto pa1_it = pa1_bitmap.begin();
28+
auto pa2_it = pa2_bitmap.begin();
29+
for (size_t i = 0; i < pa1_bitmap.size(); ++i)
30+
{
31+
CHECK_EQ(*pa1_it, *pa2_it);
32+
++pa1_it;
33+
++pa2_it;
34+
}
35+
}
36+
37+
template <typename T>
38+
void compare_metadata(sparrow::primitive_array<T>& pa1, sparrow::primitive_array<T>& pa2)
39+
{
40+
if (!pa1.metadata().has_value())
41+
{
42+
CHECK(!pa2.metadata().has_value());
43+
return;
44+
}
45+
46+
CHECK(pa2.metadata().has_value());
47+
sparrow::key_value_view kvs1_view = *(pa1.metadata());
48+
sparrow::key_value_view kvs2_view = *(pa2.metadata());
49+
50+
CHECK_EQ(kvs1_view.size(), kvs2_view.size());
51+
std::vector<std::pair<std::string, std::string>> kvs1, kvs2;
52+
auto kvs1_it = kvs1_view.cbegin();
53+
auto kvs2_it = kvs2_view.cbegin();
54+
for (auto i = 0; i < kvs1_view.size(); ++i)
55+
{
56+
CHECK_EQ(*kvs1_it, *kvs2_it);
57+
++kvs1_it;
58+
++kvs2_it;
59+
}
60+
}
61+
62+
TEST_CASE_TEMPLATE_DEFINE("Serialize and Deserialize primitive_array", T, primitive_array_types)
63+
{
64+
auto create_primitive_array = []() -> sp::primitive_array<T> {
65+
if constexpr (std::is_same_v<T, int>)
66+
{
67+
return {10, 20, 30, 40, 50};
68+
}
69+
else if constexpr (std::is_same_v<T, float>)
70+
{
71+
return {10.5f, 20.5f, 30.5f, 40.5f, 50.5f};
72+
}
73+
else if constexpr (std::is_same_v<T, double>)
74+
{
75+
return {10.1, 20.2, 30.3, 40.4, 50.5};
76+
}
77+
else
78+
{
79+
FAIL("Unsupported type for templated test case");
80+
}
81+
};
82+
83+
sp::primitive_array<T> ar = create_primitive_array();
84+
85+
std::vector<uint8_t> serialized_data = serialize_primitive_array(ar);
86+
87+
CHECK(serialized_data.size() > 0);
88+
89+
sp::primitive_array<T> deserialized_ar = deserialize_primitive_array<T>(serialized_data);
90+
91+
CHECK(ar == deserialized_ar);
92+
93+
compare_bitmap<T>(ar, deserialized_ar);
94+
compare_metadata<T>(ar, deserialized_ar);
95+
}
96+
97+
TEST_CASE_TEMPLATE_APPLY(primitive_array_types, testing_types);
98+
99+
TEST_CASE("Serialize and Deserialize primitive_array - int with nulls")
100+
{
101+
// Data buffer
102+
sp::u8_buffer<int> data_buffer = {100, 200, 300, 400, 500};
103+
104+
// Validity bitmap: 100 (valid), 200 (valid), 300 (null), 400 (valid), 500 (null)
105+
sp::validity_bitmap validity(5, true); // All valid initially
106+
validity.set(2, false); // Set index 2 to null
107+
validity.set(4, false); // Set index 4 to null
108+
109+
sp::primitive_array<int> ar(std::move(data_buffer), std::move(validity));
110+
111+
std::vector<uint8_t> serialized_data = serialize_primitive_array(ar);
112+
113+
CHECK(serialized_data.size() > 0);
114+
115+
sp::primitive_array<int> deserialized_ar = deserialize_primitive_array<int>(serialized_data);
116+
117+
CHECK(ar == deserialized_ar);
118+
119+
compare_bitmap<int>(ar, deserialized_ar);
120+
compare_metadata<int>(ar, deserialized_ar);
121+
}
122+
123+
TEST_CASE("Serialize and Deserialize primitive_array - with name and metadata")
124+
{
125+
// Data buffer
126+
sp::u8_buffer<int> data_buffer = {1, 2, 3};
127+
128+
// Validity bitmap: All valid
129+
sp::validity_bitmap validity(3, true);
130+
131+
// Custom metadata
132+
std::vector<sp::metadata_pair> metadata = {
133+
{"key1", "value1"},
134+
{"key2", "value2"}
135+
};
136+
137+
sp::primitive_array<int> ar(
138+
std::move(data_buffer),
139+
std::move(validity),
140+
"my_named_array", // name
141+
std::make_optional(std::vector<sparrow::metadata_pair>{{"key1", "value1"}, {"key2", "value2"}})
142+
);
143+
144+
std::vector<uint8_t> serialized_data = serialize_primitive_array(ar);
145+
146+
CHECK(serialized_data.size() > 0);
147+
148+
sp::primitive_array<int> deserialized_ar = deserialize_primitive_array<int>(serialized_data);
149+
150+
CHECK(ar == deserialized_ar);
151+
152+
compare_bitmap<int>(ar, deserialized_ar);
153+
compare_metadata<int>(ar, deserialized_ar);
154+
}
155155
}

0 commit comments

Comments
 (0)