@@ -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
0 commit comments