1 # Licensed to the Apache Software Foundation (ASF) under one
2 # or more contributor license agreements. See the NOTICE file
3 # distributed with this work for additional information
4 # regarding copyright ownership. The ASF licenses this file
5 # to you under the Apache License, Version 2.0 (the
6 # "License"); you may not use this file except in compliance
7 # with the License. You may obtain a copy of the License at
9 # http://www.apache.org/licenses/LICENSE-2.0
11 # Unless required by applicable law or agreed to in writing,
12 # software distributed under the License is distributed on an
13 # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14 # KIND, either express or implied. See the License for the
15 # specific language governing permissions and limitations
18 module ArrayBuilderAppendValueBytesTests
20 builder
= create_builder
22 builder
.append_value_bytes(GLib
::Bytes.new(value
))
23 assert_equal(build_array([value
]),
28 module ArrayBuilderAppendValuesTests
30 builder
= create_builder
31 builder
.append_values([])
32 assert_equal(build_array([]),
37 builder
= create_builder
38 builder
.append_values(sample_values
)
39 assert_equal(build_array(sample_values
),
43 def test_with_is_valids
44 builder
= create_builder
45 builder
.append_values(sample_values
, [true, true, false])
46 actual_sample_values
= sample_values
.dup
47 actual_sample_values
[2] = nil
48 assert_equal(build_array(actual_sample_values
),
52 def test_with_large_is_valids
53 builder
= create_builder
55 large_sample_values
= sample_values
* n
56 large_is_valids
= [true, true, false] * n
57 builder
.append_values(large_sample_values
, large_is_valids
)
58 actual_sample_values
= sample_values
.dup
59 actual_sample_values
[2] = nil
60 actual_large_sample_values
= actual_sample_values
* n
61 assert_equal(build_array(actual_large_sample_values
),
65 def test_mismatch_length
66 builder
= create_builder
67 message
= "[#{builder_class_name}][append-values]: " +
68 "values length and is_valids length must be equal: <3> != <2>"
69 assert_raise(Arrow
::Error::Invalid.new(message
)) do
70 builder
.append_values(sample_values
, [true, true])
75 module ArrayBuilderAppendValuesWithNullTests
77 builder
= create_builder
78 builder
.append_values(sample_values_with_null
)
79 assert_equal(build_array(sample_values_with_null
),
83 def test_large_values_only
84 builder
= create_builder
86 large_sample_values_with_null
= sample_values_with_null
* n
87 builder
.append_values(large_sample_values_with_null
)
88 assert_equal(build_array(large_sample_values_with_null
),
92 def test_with_is_valids
93 builder
= create_builder
94 builder
.append_values(sample_values_with_null
, [true, true, false])
95 actual_sample_values
= sample_values_with_null
.dup
96 actual_sample_values
[2] = nil
97 assert_equal(build_array(actual_sample_values
),
101 def test_with_large_is_valids
102 builder
= create_builder
104 large_sample_values
= sample_values_with_null
* n
105 large_is_valids
= [true, true, false] * n
106 builder
.append_values(large_sample_values
, large_is_valids
)
107 actual_sample_values
= sample_values_with_null
.dup
108 actual_sample_values
[2] = nil
109 actual_large_sample_values
= actual_sample_values
* n
110 assert_equal(build_array(actual_large_sample_values
),
115 module ArrayBuilderAppendValuesPackedTests
117 builder
= create_builder
118 builder
.append_values_packed("")
119 assert_equal(build_array([]),
124 builder
= create_builder
125 builder
.append_values_packed(pack_values(sample_values
))
126 assert_equal(build_array(sample_values
),
130 def test_with_is_valids
131 builder
= create_builder
132 builder
.append_values_packed(pack_values(sample_values
),
134 sample_values_with_null
= sample_values
135 sample_values_with_null
[2] = nil
136 assert_equal(build_array(sample_values_with_null
),
140 def test_with_large_is_valids
141 builder
= create_builder
143 large_sample_values
= sample_values
* n
144 large_is_valids
= [true, true, false] * n
145 builder
.append_values_packed(pack_values(large_sample_values
),
147 sample_values_with_null
= sample_values
148 sample_values_with_null
[2] = nil
149 large_sample_values_with_null
= sample_values_with_null
* n
150 assert_equal(build_array(large_sample_values_with_null
),
154 def test_mismatch_length
155 builder
= create_builder
156 message
= "[fixed-size-binary-array-builder][append-values-packed]: " +
157 "the number of values and is_valids length must be equal: <3> != <2>"
158 assert_raise(Arrow
::Error::Invalid.new(message
)) do
159 builder
.append_values_packed(pack_values(sample_values
),
165 module ArrayBuilderAppendStringsTests
167 builder
= create_builder
168 builder
.append_strings([])
169 assert_equal(build_array([]),
173 def test_strings_only
174 builder
= create_builder
175 builder
.append_strings(sample_values
)
176 assert_equal(build_array(sample_values
),
180 def test_with_is_valids
181 builder
= create_builder
182 builder
.append_strings(sample_values
, [true, true, false])
183 sample_values_with_null
= sample_values
184 sample_values_with_null
[2] = nil
185 assert_equal(build_array(sample_values_with_null
),
189 def test_with_large_is_valids
190 builder
= create_builder
192 large_sample_values
= sample_values
* n
193 large_is_valids
= [true, true, false] * n
194 builder
.append_strings(large_sample_values
, large_is_valids
)
195 sample_values_with_null
= sample_values
196 sample_values_with_null
[2] = nil
197 large_sample_values_with_null
= sample_values_with_null
* n
198 assert_equal(build_array(large_sample_values_with_null
),
202 def test_mismatch_length
203 builder
= create_builder
204 message
= "[#{builder_class_name}][append-strings]: " +
205 "values length and is_valids length must be equal: <3> != <2>"
206 assert_raise(Arrow
::Error::Invalid.new(message
)) do
207 builder
.append_strings(sample_values
, [true, true])
212 module ArrayBuilderAppendNullsTests
214 builder
= create_builder
215 builder
.append_nulls(0)
216 assert_equal(build_array([]),
221 builder
= create_builder
222 builder
.append_nulls(3)
223 assert_equal(build_array([nil, nil, nil]),
228 builder
= create_builder
229 message
= "[array-builder][append-nulls]: " +
230 "the number of nulls must be 0 or larger: <-1>"
231 assert_raise(Arrow
::Error::Invalid.new(message
)) do
232 builder
.append_nulls(-1)
237 module ArrayBuilderAppendEmptyValueTests
239 builder
= create_builder
240 builder
.append_empty_value
241 assert_equal(build_array([empty_value
]),
246 module ArrayBuilderAppendEmptyValuesTests
248 builder
= create_builder
249 builder
.append_empty_values(0)
250 assert_equal(build_array([]),
255 builder
= create_builder
256 builder
.append_empty_values(3)
257 assert_equal(build_array([empty_value
] * 3),
262 builder
= create_builder
263 message
= "[array-builder][append-empty-values]: " +
264 "the number of empty values must be 0 or larger: <-1>"
265 assert_raise(Arrow
::Error::Invalid.new(message
)) do
266 builder
.append_empty_values(-1)
271 module ArrayBuilderValueTypeTests
272 def test_value_data_type
273 assert_equal(value_data_type
,
274 build_array(sample_values
).value_data_type
)
278 assert_equal(value_data_type
.id
,
279 build_array(sample_values
).value_type
)
283 module ArrayBuilderCapacityControlTests
285 builder
= create_builder
286 before_capacity
= builder
.capacity
287 builder
.resize(before_capacity
+ 100)
288 after_capacity
= builder
.capacity
291 after_capacity
>= before_capacity
+ 100
296 builder
= create_builder
297 before_capacity
= builder
.capacity
299 after_capacity
= builder
.capacity
302 after_capacity
>= before_capacity
+ 100
307 module ArrayBuilderLengthTests
309 builder
= create_builder
310 sample_values_with_null
= sample_values
311 sample_values_with_null
[2, 0] = nil
312 lengths
= [builder
.length
]
313 sample_values_with_null
.each
do |value
|
317 builder
.append_value(value
)
319 lengths
<< builder
.length
321 expected_lengths
= [*0 ... (sample_values_with_null
.length
+1)]
322 assert_equal(expected_lengths
,
327 module ArrayBuilderNNullsTests
329 builder
= create_builder
330 sample_values_with_null
= sample_values
331 sample_values_with_null
[2, 0] = nil
332 null_counts
= [builder
.n_nulls
]
333 sample_values_with_null
.each
do |value
|
337 builder
.append_value(value
)
339 null_counts
<< builder
.n_nulls
341 expected_null_counts
= [0, 0, 0] + [1] * (sample_values_with_null
.length
- 2)
342 assert_equal(expected_null_counts
,
347 class TestArrayBuilder
< Test
::Unit::TestCase
348 include Helper
::Buildable
349 include Helper
::Omittable
352 require_gi_bindings(3, 1, 9)
355 def build_array(values
)
356 super(create_builder
, values
)
359 sub_test_case("NullArrayBuilder") do
361 Arrow
::NullArrayBuilder.new
365 Arrow
::NullDataType.new
368 def builder_class_name
380 sub_test_case("value type") do
381 include ArrayBuilderValueTypeTests
384 test("#append_null") do
385 builder
= create_builder
387 assert_equal(build_array([nil]),
391 sub_test_case("#append_nulls") do
392 include ArrayBuilderAppendNullsTests
395 sub_test_case("#append_empty_value") do
396 include ArrayBuilderAppendEmptyValueTests
399 sub_test_case("#append_empty_values") do
400 include ArrayBuilderAppendEmptyValuesTests
403 sub_test_case("capacity control") do
404 include ArrayBuilderCapacityControlTests
408 builder
= create_builder
409 before
= builder
.length
411 after
= builder
.length
417 builder
= create_builder
418 before
= builder
.length
420 after
= builder
.length
426 sub_test_case("BooleanArrayBuilder") do
428 Arrow
::BooleanArrayBuilder.new
432 Arrow
::BooleanDataType.new
435 def builder_class_name
436 "boolean-array-builder"
447 sub_test_case("value type") do
448 include ArrayBuilderValueTypeTests
451 sub_test_case("#append_values") do
452 include ArrayBuilderAppendValuesTests
455 sub_test_case("#append_nulls") do
456 include ArrayBuilderAppendNullsTests
459 sub_test_case("#append_empty_value") do
460 include ArrayBuilderAppendEmptyValueTests
463 sub_test_case("#append_empty_values") do
464 include ArrayBuilderAppendEmptyValuesTests
467 sub_test_case("capacity control") do
468 include ArrayBuilderCapacityControlTests
471 sub_test_case("#length") do
472 include ArrayBuilderLengthTests
475 sub_test_case("#n_nulls") do
476 include ArrayBuilderNNullsTests
480 sub_test_case("IntArrayBuilder") do
482 Arrow
::IntArrayBuilder.new
486 Arrow
::Int8DataType.new
489 def builder_class_name
501 sub_test_case("value type") do
502 include ArrayBuilderValueTypeTests
505 sub_test_case("#append_values") do
506 include ArrayBuilderAppendValuesTests
509 sub_test_case("#append_nulls") do
510 include ArrayBuilderAppendNullsTests
513 sub_test_case("#append_empty_value") do
514 include ArrayBuilderAppendEmptyValueTests
517 sub_test_case("#append_empty_values") do
518 include ArrayBuilderAppendEmptyValuesTests
521 sub_test_case("capacity control") do
522 include ArrayBuilderCapacityControlTests
525 sub_test_case("#length") do
526 include ArrayBuilderLengthTests
529 sub_test_case("#n_nulls") do
530 include ArrayBuilderNNullsTests
534 sub_test_case("UIntArrayBuilder") do
536 Arrow
::UIntArrayBuilder.new
540 Arrow
::UInt8DataType.new
543 def builder_class_name
555 sub_test_case("value type") do
556 include ArrayBuilderValueTypeTests
559 sub_test_case("#append_values") do
560 include ArrayBuilderAppendValuesTests
563 sub_test_case("#append_nulls") do
564 include ArrayBuilderAppendNullsTests
567 sub_test_case("#append_empty_value") do
568 include ArrayBuilderAppendEmptyValueTests
571 sub_test_case("#append_empty_values") do
572 include ArrayBuilderAppendEmptyValuesTests
575 sub_test_case("capacity control") do
576 include ArrayBuilderCapacityControlTests
579 sub_test_case("#length") do
580 include ArrayBuilderLengthTests
583 sub_test_case("#n_nulls") do
584 include ArrayBuilderNNullsTests
588 sub_test_case("Int8ArrayBuilder") do
590 Arrow
::Int8ArrayBuilder.new
594 Arrow
::Int8DataType.new
597 def builder_class_name
609 sub_test_case("value type") do
610 include ArrayBuilderValueTypeTests
613 sub_test_case("#append_values") do
614 include ArrayBuilderAppendValuesTests
617 sub_test_case("#append_nulls") do
618 include ArrayBuilderAppendNullsTests
621 sub_test_case("#append_empty_value") do
622 include ArrayBuilderAppendEmptyValueTests
625 sub_test_case("#append_empty_values") do
626 include ArrayBuilderAppendEmptyValuesTests
629 sub_test_case("capacity control") do
630 include ArrayBuilderCapacityControlTests
633 sub_test_case("#length") do
634 include ArrayBuilderLengthTests
637 sub_test_case("#n_nulls") do
638 include ArrayBuilderNNullsTests
642 sub_test_case("UInt8ArrayBuilder") do
644 Arrow
::UInt8ArrayBuilder.new
648 Arrow
::UInt8DataType.new
651 def builder_class_name
652 "uint8-array-builder"
663 sub_test_case("value type") do
664 include ArrayBuilderValueTypeTests
667 sub_test_case("#append_values") do
668 include ArrayBuilderAppendValuesTests
671 sub_test_case("#append_nulls") do
672 include ArrayBuilderAppendNullsTests
675 sub_test_case("#append_empty_value") do
676 include ArrayBuilderAppendEmptyValueTests
679 sub_test_case("#append_empty_values") do
680 include ArrayBuilderAppendEmptyValuesTests
683 sub_test_case("capacity control") do
684 include ArrayBuilderCapacityControlTests
687 sub_test_case("#length") do
688 include ArrayBuilderLengthTests
691 sub_test_case("#n_nulls") do
692 include ArrayBuilderNNullsTests
696 sub_test_case("Int16ArrayBuilder") do
698 Arrow
::Int16ArrayBuilder.new
702 Arrow
::Int16DataType.new
705 def builder_class_name
706 "int16-array-builder"
717 sub_test_case("value type") do
718 include ArrayBuilderValueTypeTests
721 sub_test_case("#append_values") do
722 include ArrayBuilderAppendValuesTests
725 sub_test_case("#append_nulls") do
726 include ArrayBuilderAppendNullsTests
729 sub_test_case("#append_empty_value") do
730 include ArrayBuilderAppendEmptyValueTests
733 sub_test_case("#append_empty_values") do
734 include ArrayBuilderAppendEmptyValuesTests
737 sub_test_case("capacity control") do
738 include ArrayBuilderCapacityControlTests
741 sub_test_case("#length") do
742 include ArrayBuilderLengthTests
745 sub_test_case("#n_nulls") do
746 include ArrayBuilderNNullsTests
750 sub_test_case("UInt16ArrayBuilder") do
752 Arrow
::UInt16ArrayBuilder.new
756 Arrow
::UInt16DataType.new
759 def builder_class_name
760 "uint16-array-builder"
771 sub_test_case("value type") do
772 include ArrayBuilderValueTypeTests
775 sub_test_case("#append_values") do
776 include ArrayBuilderAppendValuesTests
779 sub_test_case("#append_nulls") do
780 include ArrayBuilderAppendNullsTests
783 sub_test_case("#append_empty_value") do
784 include ArrayBuilderAppendEmptyValueTests
787 sub_test_case("#append_empty_values") do
788 include ArrayBuilderAppendEmptyValuesTests
791 sub_test_case("capacity control") do
792 include ArrayBuilderCapacityControlTests
795 sub_test_case("#length") do
796 include ArrayBuilderLengthTests
799 sub_test_case("#n_nulls") do
800 include ArrayBuilderNNullsTests
804 sub_test_case("Int32ArrayBuilder") do
806 Arrow
::Int32ArrayBuilder.new
810 Arrow
::Int32DataType.new
813 def builder_class_name
814 "int32-array-builder"
825 sub_test_case("value type") do
826 include ArrayBuilderValueTypeTests
829 sub_test_case("#append_values") do
830 include ArrayBuilderAppendValuesTests
833 sub_test_case("#append_nulls") do
834 include ArrayBuilderAppendNullsTests
837 sub_test_case("#append_empty_value") do
838 include ArrayBuilderAppendEmptyValueTests
841 sub_test_case("#append_empty_values") do
842 include ArrayBuilderAppendEmptyValuesTests
845 sub_test_case("capacity control") do
846 include ArrayBuilderCapacityControlTests
849 sub_test_case("#length") do
850 include ArrayBuilderLengthTests
853 sub_test_case("#n_nulls") do
854 include ArrayBuilderNNullsTests
858 sub_test_case("UInt32ArrayBuilder") do
860 Arrow
::UInt32ArrayBuilder.new
864 Arrow
::UInt32DataType.new
867 def builder_class_name
868 "uint32-array-builder"
879 sub_test_case("value type") do
880 include ArrayBuilderValueTypeTests
883 sub_test_case("#append_values") do
884 include ArrayBuilderAppendValuesTests
887 sub_test_case("#append_nulls") do
888 include ArrayBuilderAppendNullsTests
891 sub_test_case("#append_empty_value") do
892 include ArrayBuilderAppendEmptyValueTests
895 sub_test_case("#append_empty_values") do
896 include ArrayBuilderAppendEmptyValuesTests
899 sub_test_case("capacity control") do
900 include ArrayBuilderCapacityControlTests
903 sub_test_case("#length") do
904 include ArrayBuilderLengthTests
907 sub_test_case("#n_nulls") do
908 include ArrayBuilderNNullsTests
912 sub_test_case("Int64ArrayBuilder") do
914 Arrow
::Int64ArrayBuilder.new
918 Arrow
::Int64DataType.new
921 def builder_class_name
922 "int64-array-builder"
933 sub_test_case("value type") do
934 include ArrayBuilderValueTypeTests
937 sub_test_case("#append_values") do
938 include ArrayBuilderAppendValuesTests
941 sub_test_case("#append_nulls") do
942 include ArrayBuilderAppendNullsTests
945 sub_test_case("#append_empty_value") do
946 include ArrayBuilderAppendEmptyValueTests
949 sub_test_case("#append_empty_values") do
950 include ArrayBuilderAppendEmptyValuesTests
953 sub_test_case("capacity control") do
954 include ArrayBuilderCapacityControlTests
957 sub_test_case("#length") do
958 include ArrayBuilderLengthTests
961 sub_test_case("#n_nulls") do
962 include ArrayBuilderNNullsTests
966 sub_test_case("UInt64ArrayBuilder") do
968 Arrow
::UInt64ArrayBuilder.new
972 Arrow
::UInt64DataType.new
975 def builder_class_name
976 "uint64-array-builder"
987 sub_test_case("value type") do
988 include ArrayBuilderValueTypeTests
991 sub_test_case("#append_values") do
992 include ArrayBuilderAppendValuesTests
995 sub_test_case("#append_nulls") do
996 include ArrayBuilderAppendNullsTests
999 sub_test_case("#append_empty_value") do
1000 include ArrayBuilderAppendEmptyValueTests
1003 sub_test_case("#append_empty_values") do
1004 include ArrayBuilderAppendEmptyValuesTests
1007 sub_test_case("capacity control") do
1008 include ArrayBuilderCapacityControlTests
1011 sub_test_case("#length") do
1012 include ArrayBuilderLengthTests
1015 sub_test_case("#n_nulls") do
1016 include ArrayBuilderNNullsTests
1020 sub_test_case("FloatArrayBuilder") do
1022 Arrow
::FloatArrayBuilder.new
1026 Arrow
::FloatDataType.new
1029 def builder_class_name
1030 "float-array-builder"
1041 sub_test_case("value type") do
1042 include ArrayBuilderValueTypeTests
1045 sub_test_case("#append_values") do
1046 include ArrayBuilderAppendValuesTests
1049 sub_test_case("#append_nulls") do
1050 include ArrayBuilderAppendNullsTests
1053 sub_test_case("#append_empty_value") do
1054 include ArrayBuilderAppendEmptyValueTests
1057 sub_test_case("#append_empty_values") do
1058 include ArrayBuilderAppendEmptyValuesTests
1061 sub_test_case("capacity control") do
1062 include ArrayBuilderCapacityControlTests
1065 sub_test_case("#length") do
1066 include ArrayBuilderLengthTests
1069 sub_test_case("#n_nulls") do
1070 include ArrayBuilderNNullsTests
1074 sub_test_case("DoubleArrayBuilder") do
1076 Arrow
::DoubleArrayBuilder.new
1080 Arrow
::DoubleDataType.new
1083 def builder_class_name
1084 "double-array-builder"
1095 sub_test_case("value type") do
1096 include ArrayBuilderValueTypeTests
1099 sub_test_case("#append_values") do
1100 include ArrayBuilderAppendValuesTests
1103 sub_test_case("#append_nulls") do
1104 include ArrayBuilderAppendNullsTests
1107 sub_test_case("#append_empty_value") do
1108 include ArrayBuilderAppendEmptyValueTests
1111 sub_test_case("#append_empty_values") do
1112 include ArrayBuilderAppendEmptyValuesTests
1115 sub_test_case("capacity control") do
1116 include ArrayBuilderCapacityControlTests
1119 sub_test_case("#length") do
1120 include ArrayBuilderLengthTests
1123 sub_test_case("#n_nulls") do
1124 include ArrayBuilderNNullsTests
1128 sub_test_case("Date32ArrayBuilder") do
1130 Arrow
::Date32ArrayBuilder.new
1134 Arrow
::Date32DataType.new
1137 def builder_class_name
1138 "date32-array-builder"
1153 sub_test_case("value type") do
1154 include ArrayBuilderValueTypeTests
1157 sub_test_case("#append_values") do
1158 include ArrayBuilderAppendValuesTests
1161 sub_test_case("#append_nulls") do
1162 include ArrayBuilderAppendNullsTests
1165 sub_test_case("#append_empty_value") do
1166 include ArrayBuilderAppendEmptyValueTests
1169 sub_test_case("#append_empty_values") do
1170 include ArrayBuilderAppendEmptyValuesTests
1173 sub_test_case("capacity control") do
1174 include ArrayBuilderCapacityControlTests
1177 sub_test_case("#length") do
1178 include ArrayBuilderLengthTests
1181 sub_test_case("#n_nulls") do
1182 include ArrayBuilderNNullsTests
1186 sub_test_case("Date64ArrayBuilder") do
1188 Arrow
::Date64ArrayBuilder.new
1192 Arrow
::Date64DataType.new
1195 def builder_class_name
1196 "date64-array-builder"
1201 -315619200, # 1960-01-01T00:00:00Z
1203 1503878400000, # 2017-08-28T00:00:00Z
1211 sub_test_case("value type") do
1212 include ArrayBuilderValueTypeTests
1215 sub_test_case("#append_values") do
1216 include ArrayBuilderAppendValuesTests
1219 sub_test_case("#append_nulls") do
1220 include ArrayBuilderAppendNullsTests
1223 sub_test_case("#append_empty_value") do
1224 include ArrayBuilderAppendEmptyValueTests
1227 sub_test_case("#append_empty_values") do
1228 include ArrayBuilderAppendEmptyValuesTests
1231 sub_test_case("capacity control") do
1232 include ArrayBuilderCapacityControlTests
1235 sub_test_case("#length") do
1236 include ArrayBuilderLengthTests
1239 sub_test_case("#n_nulls") do
1240 include ArrayBuilderNNullsTests
1244 sub_test_case("TimestampArrayBuilder") do
1246 data_type
= Arrow
::TimestampDataType.new(:milli)
1247 Arrow
::TimestampArrayBuilder.new(data_type
)
1251 Arrow
::TimestampDataType.new(:milli)
1254 def builder_class_name
1255 "timestamp-array-builder"
1261 1504953190854, # 2017-09-09T10:33:10.854Z
1262 1505660812942, # 2017-09-17T15:06:52.942Z
1270 sub_test_case("value type") do
1271 include ArrayBuilderValueTypeTests
1274 sub_test_case("#append_values") do
1275 include ArrayBuilderAppendValuesTests
1278 sub_test_case("#append_nulls") do
1279 include ArrayBuilderAppendNullsTests
1282 sub_test_case("#append_empty_value") do
1283 include ArrayBuilderAppendEmptyValueTests
1286 sub_test_case("#append_empty_values") do
1287 include ArrayBuilderAppendEmptyValuesTests
1290 sub_test_case("capacity control") do
1291 include ArrayBuilderCapacityControlTests
1294 sub_test_case("#length") do
1295 include ArrayBuilderLengthTests
1298 sub_test_case("#n_nulls") do
1299 include ArrayBuilderNNullsTests
1303 sub_test_case("Time32ArrayBuilder") do
1305 data_type
= Arrow
::Time32DataType.new(:second)
1306 Arrow
::Time32ArrayBuilder.new(data_type
)
1310 Arrow
::Time32DataType.new(:second)
1313 def builder_class_name
1314 "time32-array-builder"
1321 60 * 60 * 2 + 30, # 02:00:30
1329 sub_test_case("value type") do
1330 include ArrayBuilderValueTypeTests
1333 sub_test_case("#append_values") do
1334 include ArrayBuilderAppendValuesTests
1337 sub_test_case("#append_nulls") do
1338 include ArrayBuilderAppendNullsTests
1341 sub_test_case("#append_empty_value") do
1342 include ArrayBuilderAppendEmptyValueTests
1345 sub_test_case("#append_empty_values") do
1346 include ArrayBuilderAppendEmptyValuesTests
1349 sub_test_case("capacity control") do
1350 include ArrayBuilderCapacityControlTests
1353 sub_test_case("#length") do
1354 include ArrayBuilderLengthTests
1357 sub_test_case("#n_nulls") do
1358 include ArrayBuilderNNullsTests
1362 sub_test_case("Time64ArrayBuilder") do
1364 data_type
= Arrow
::Time64DataType.new(:micro)
1365 Arrow
::Time64ArrayBuilder.new(data_type
)
1369 Arrow
::Time64DataType.new(:micro)
1372 def builder_class_name
1373 "time64-array-builder"
1379 60 * 10 * 1000 * 1000, # 00:10:00.000000
1380 (60 * 60 * 2 + 30) * 1000 * 1000, # 02:00:30.000000
1388 sub_test_case("value type") do
1389 include ArrayBuilderValueTypeTests
1392 sub_test_case("#append_values") do
1393 include ArrayBuilderAppendValuesTests
1396 sub_test_case("#append_nulls") do
1397 include ArrayBuilderAppendNullsTests
1400 sub_test_case("#append_empty_value") do
1401 include ArrayBuilderAppendEmptyValueTests
1404 sub_test_case("#append_empty_values") do
1405 include ArrayBuilderAppendEmptyValuesTests
1408 sub_test_case("capacity control") do
1409 include ArrayBuilderCapacityControlTests
1412 sub_test_case("#length") do
1413 include ArrayBuilderLengthTests
1416 sub_test_case("#n_nulls") do
1417 include ArrayBuilderNNullsTests
1421 sub_test_case("BinaryArrayBuilder") do
1423 Arrow
::BinaryArrayBuilder.new
1427 Arrow
::BinaryDataType.new
1430 def builder_class_name
1431 "binary-array-builder"
1446 sub_test_case("value type") do
1447 include ArrayBuilderValueTypeTests
1450 sub_test_case("#append_value_bytes") do
1451 include ArrayBuilderAppendValueBytesTests
1454 sub_test_case("#append_values") do
1455 include ArrayBuilderAppendValuesTests
1458 require_gi_bindings(3, 4, 1)
1462 sub_test_case("#append_nulls") do
1463 include ArrayBuilderAppendNullsTests
1466 sub_test_case("#append_empty_value") do
1467 include ArrayBuilderAppendEmptyValueTests
1470 sub_test_case("#append_empty_values") do
1471 include ArrayBuilderAppendEmptyValuesTests
1474 sub_test_case("capacity control") do
1475 include ArrayBuilderCapacityControlTests
1478 sub_test_case("#length") do
1479 include ArrayBuilderLengthTests
1482 sub_test_case("#n_nulls") do
1483 include ArrayBuilderNNullsTests
1487 sub_test_case("LargeBinaryArrayBuilder") do
1489 Arrow
::LargeBinaryArrayBuilder.new
1493 Arrow
::LargeBinaryDataType.new
1496 def builder_class_name
1497 "large-binary-array-builder"
1512 sub_test_case("value type") do
1513 include ArrayBuilderValueTypeTests
1516 sub_test_case("#append_value_bytes") do
1517 include ArrayBuilderAppendValueBytesTests
1520 sub_test_case("#append_values") do
1521 include ArrayBuilderAppendValuesTests
1524 require_gi_bindings(3, 4, 1)
1528 sub_test_case("#append_nulls") do
1529 include ArrayBuilderAppendNullsTests
1532 sub_test_case("#append_empty_value") do
1533 include ArrayBuilderAppendEmptyValueTests
1536 sub_test_case("#append_empty_values") do
1537 include ArrayBuilderAppendEmptyValuesTests
1540 sub_test_case("capacity control") do
1541 include ArrayBuilderCapacityControlTests
1544 sub_test_case("#length") do
1545 include ArrayBuilderLengthTests
1548 sub_test_case("#n_nulls") do
1549 include ArrayBuilderNNullsTests
1553 sub_test_case("StringArrayBuilder") do
1555 Arrow
::StringArrayBuilder.new
1559 Arrow
::StringDataType.new
1562 def builder_class_name
1563 "string-array-builder"
1578 sub_test_case("value type") do
1579 include ArrayBuilderValueTypeTests
1582 sub_test_case("#append_values") do
1583 include ArrayBuilderAppendValuesTests
1586 require_gi_bindings(3, 4, 1)
1589 def builder_class_name
1590 "binary-array-builder"
1594 sub_test_case("#append_strings") do
1595 include ArrayBuilderAppendStringsTests
1598 sub_test_case("#append_nulls") do
1599 include ArrayBuilderAppendNullsTests
1602 sub_test_case("#append_empty_value") do
1603 include ArrayBuilderAppendEmptyValueTests
1606 sub_test_case("#append_empty_values") do
1607 include ArrayBuilderAppendEmptyValuesTests
1610 sub_test_case("capacity control") do
1611 include ArrayBuilderCapacityControlTests
1614 sub_test_case("#length") do
1615 include ArrayBuilderLengthTests
1618 sub_test_case("#n_nulls") do
1619 include ArrayBuilderNNullsTests
1623 sub_test_case("LargeStringArrayBuilder") do
1625 Arrow
::LargeStringArrayBuilder.new
1629 Arrow
::LargeStringDataType.new
1632 def builder_class_name
1633 "large-string-array-builder"
1648 sub_test_case("value type") do
1649 include ArrayBuilderValueTypeTests
1652 sub_test_case("#append_values") do
1653 include ArrayBuilderAppendValuesTests
1656 require_gi_bindings(3, 4, 1)
1659 def builder_class_name
1660 "large-binary-array-builder"
1664 sub_test_case("#append_strings") do
1665 include ArrayBuilderAppendStringsTests
1668 sub_test_case("#append_nulls") do
1669 include ArrayBuilderAppendNullsTests
1672 sub_test_case("#append_empty_value") do
1673 include ArrayBuilderAppendEmptyValueTests
1676 sub_test_case("#append_empty_values") do
1677 include ArrayBuilderAppendEmptyValuesTests
1680 sub_test_case("capacity control") do
1681 include ArrayBuilderCapacityControlTests
1684 sub_test_case("#length") do
1685 include ArrayBuilderLengthTests
1688 sub_test_case("#n_nulls") do
1689 include ArrayBuilderNNullsTests
1693 sub_test_case("FixedSizeBinaryArrayBuilder") do
1695 Arrow
::FixedSizeBinaryArrayBuilder.new(value_data_type
)
1699 Arrow
::FixedSizeBinaryDataType.new(4)
1702 def builder_class_name
1703 "fixed-size-binary-array-builder"
1714 def sample_values_with_null
1722 def pack_values(values
)
1730 sub_test_case("value type") do
1731 include ArrayBuilderValueTypeTests
1734 sub_test_case("#append_value") do
1736 builder
= create_builder
1737 builder
.append_value(nil)
1738 assert_equal(build_array([nil]),
1743 sub_test_case("#append_values") do
1744 include ArrayBuilderAppendValuesTests
1745 include ArrayBuilderAppendValuesWithNullTests
1748 sub_test_case("#append_values_packed") do
1749 include ArrayBuilderAppendValuesPackedTests
1752 sub_test_case("#append_nulls") do
1753 include ArrayBuilderAppendNullsTests
1756 sub_test_case("#append_empty_value") do
1757 include ArrayBuilderAppendEmptyValueTests
1760 sub_test_case("#append_empty_values") do
1761 include ArrayBuilderAppendEmptyValuesTests
1764 sub_test_case("capacity control") do
1765 include ArrayBuilderCapacityControlTests
1768 sub_test_case("#length") do
1769 include ArrayBuilderLengthTests
1772 sub_test_case("#n_nulls") do
1773 include ArrayBuilderNNullsTests
1777 sub_test_case("Decimal128ArrayBuilder") do
1779 Arrow
::Decimal128ArrayBuilder.new(value_data_type
)
1783 Arrow
::Decimal128DataType.new(8, 2)
1786 def builder_class_name
1787 "decimal128-array-builder"
1792 Arrow
::Decimal128.new("23423445"),
1793 Arrow
::Decimal128.new("00012345"),
1794 Arrow
::Decimal128.new("00000000"),
1798 def sample_values_with_null
1800 Arrow
::Decimal128.new("23423445"),
1802 Arrow
::Decimal128.new("00000000"),
1806 def pack_values(values
)
1807 values
.collect(&:to_bytes).collect(&:to_s).join("")
1811 Arrow
::Decimal128.new("0")
1814 sub_test_case("value type") do
1815 include ArrayBuilderValueTypeTests
1818 sub_test_case("#append_value") do
1820 builder
= create_builder
1821 builder
.append_value(nil)
1822 assert_equal(build_array([nil]),
1827 sub_test_case("#append_values") do
1828 include ArrayBuilderAppendValuesTests
1829 include ArrayBuilderAppendValuesWithNullTests
1832 sub_test_case("#append_values_packed") do
1833 include ArrayBuilderAppendValuesPackedTests
1836 sub_test_case("#append_nulls") do
1837 include ArrayBuilderAppendNullsTests
1840 sub_test_case("#append_empty_value") do
1841 include ArrayBuilderAppendEmptyValueTests
1844 sub_test_case("#append_empty_values") do
1845 include ArrayBuilderAppendEmptyValuesTests
1848 sub_test_case("capacity control") do
1849 include ArrayBuilderCapacityControlTests
1852 sub_test_case("#length") do
1853 include ArrayBuilderLengthTests
1856 sub_test_case("#n_nulls") do
1857 include ArrayBuilderNNullsTests
1861 sub_test_case("Decimal256ArrayBuilder") do
1863 Arrow
::Decimal256ArrayBuilder.new(value_data_type
)
1867 Arrow
::Decimal256DataType.new(38, 2)
1870 def builder_class_name
1871 "decimal256-array-builder"
1876 Arrow
::Decimal256.new("23423445"),
1877 Arrow
::Decimal256.new("00012345"),
1878 Arrow
::Decimal256.new("00000000"),
1882 def sample_values_with_null
1884 Arrow
::Decimal256.new("23423445"),
1886 Arrow
::Decimal256.new("00000000"),
1890 def pack_values(values
)
1891 values
.collect(&:to_bytes).collect(&:to_s).join("")
1895 Arrow
::Decimal256.new("0")
1898 sub_test_case("value type") do
1899 include ArrayBuilderValueTypeTests
1902 sub_test_case("#append_value") do
1904 builder
= create_builder
1905 builder
.append_value(nil)
1906 assert_equal(build_array([nil]),
1911 sub_test_case("#append_values") do
1912 include ArrayBuilderAppendValuesTests
1913 include ArrayBuilderAppendValuesWithNullTests
1916 sub_test_case("#append_values_packed") do
1917 include ArrayBuilderAppendValuesPackedTests
1920 sub_test_case("#append_nulls") do
1921 include ArrayBuilderAppendNullsTests
1924 sub_test_case("#append_empty_value") do
1925 include ArrayBuilderAppendEmptyValueTests
1928 sub_test_case("#append_empty_values") do
1929 include ArrayBuilderAppendEmptyValuesTests
1932 sub_test_case("capacity control") do
1933 include ArrayBuilderCapacityControlTests
1936 sub_test_case("#length") do
1937 include ArrayBuilderLengthTests
1940 sub_test_case("#n_nulls") do
1941 include ArrayBuilderNNullsTests