Skip to content

Commit 4e3a937

Browse files
committed
[C++] Add tests for DayTimeIntervalBuilder
1 parent 8b27bc0 commit 4e3a937

File tree

2 files changed

+65
-2
lines changed

2 files changed

+65
-2
lines changed

cpp/src/arrow/array/array_test.cc

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4237,4 +4237,69 @@ TEST_F(TestHalfFloatBuilder, TestBulkAppend) {
42374237
}
42384238
}
42394239

4240+
class TestDayTimeIntervalBuilder : public ::testing::Test {
4241+
public:
4242+
void VerifyValue(const DayTimeIntervalBuilder& builder, int64_t index,
4243+
DayTimeIntervalType::DayMilliseconds expected) {
4244+
ASSERT_EQ(builder.GetValue(index), expected);
4245+
ASSERT_EQ(builder[index], expected);
4246+
}
4247+
};
4248+
4249+
TEST_F(TestDayTimeIntervalBuilder, TestAppend) {
4250+
DayTimeIntervalBuilder builder;
4251+
DayTimeIntervalType::DayMilliseconds value1{1, 100};
4252+
DayTimeIntervalType::DayMilliseconds value2{3, 200};
4253+
DayTimeIntervalType::DayMilliseconds value3{5, 300};
4254+
4255+
ASSERT_OK(builder.Append(value1));
4256+
ASSERT_OK(builder.Append(value2));
4257+
ASSERT_OK(builder.AppendNull());
4258+
ASSERT_OK(builder.Reserve(3));
4259+
builder.UnsafeAppend(value3);
4260+
4261+
VerifyValue(builder, 0, value1);
4262+
VerifyValue(builder, 1, value2);
4263+
VerifyValue(builder, 3, value3);
4264+
4265+
ASSERT_OK_AND_ASSIGN(auto array, builder.Finish());
4266+
ASSERT_TRUE(array->IsNull(2));
4267+
}
4268+
4269+
TEST_F(TestDayTimeIntervalBuilder, TestBulkAppend) {
4270+
DayTimeIntervalBuilder builder;
4271+
std::vector<DayTimeIntervalType::DayMilliseconds> values{{1, 100}, {3, 200}, {5, 300}};
4272+
std::vector<bool> is_valid{true, false, true};
4273+
std::vector<uint8_t> is_valid_bytes{1, 0, 1};
4274+
4275+
ASSERT_OK(builder.AppendValues(values));
4276+
ASSERT_OK(builder.AppendValues(values, is_valid));
4277+
ASSERT_OK(builder.AppendValues(values.data(), values.size(), is_valid_bytes.data()));
4278+
4279+
ASSERT_OK_AND_ASSIGN(auto array, builder.Finish());
4280+
ASSERT_OK(array->ValidateFull());
4281+
ASSERT_EQ(array->null_count(), 2);
4282+
ASSERT_EQ(array->length(), 9);
4283+
4284+
const auto& day_time_array = checked_cast<const DayTimeIntervalArray&>(*array);
4285+
ASSERT_EQ(day_time_array.GetValue(0), values[0]);
4286+
ASSERT_TRUE(day_time_array.IsNull(4));
4287+
ASSERT_TRUE(day_time_array.IsNull(7));
4288+
ASSERT_EQ(day_time_array.GetValue(2), values[2]);
4289+
}
4290+
4291+
TEST_F(TestDayTimeIntervalBuilder, TestConstructors) {
4292+
DayTimeIntervalBuilder builder1;
4293+
ASSERT_EQ(builder1.type()->id(), Type::INTERVAL_DAY_TIME);
4294+
4295+
MemoryPool* pool = default_memory_pool();
4296+
DayTimeIntervalBuilder builder2(pool);
4297+
ASSERT_EQ(builder2.type()->id(), Type::INTERVAL_DAY_TIME);
4298+
4299+
auto type = day_time_interval();
4300+
DayTimeIntervalBuilder builder3(type, pool);
4301+
ASSERT_EQ(builder3.type()->id(), Type::INTERVAL_DAY_TIME);
4302+
ASSERT_TRUE(builder3.type()->Equals(type));
4303+
}
4304+
42404305
} // namespace arrow

cpp/src/arrow/array/builder_time.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,6 @@ namespace arrow {
3030
///
3131
/// @{
3232

33-
// TODO(ARROW-7938): this class is untested
34-
3533
class ARROW_EXPORT DayTimeIntervalBuilder : public NumericBuilder<DayTimeIntervalType> {
3634
public:
3735
using DayMilliseconds = DayTimeIntervalType::DayMilliseconds;

0 commit comments

Comments
 (0)