]> git.proxmox.com Git - ceph.git/blame - ceph/src/arrow/ruby/red-arrow/test/test-array-builder.rb
import quincy 17.2.0
[ceph.git] / ceph / src / arrow / ruby / red-arrow / test / test-array-builder.rb
CommitLineData
1d09f67e
TL
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
8#
9# http://www.apache.org/licenses/LICENSE-2.0
10#
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
16# under the License.
17
18class ArrayBuilderTest < Test::Unit::TestCase
19 sub_test_case(".build") do
20 def assert_build(builder_class, raw_array)
21 array = builder_class.build(raw_array)
22 assert_equal(raw_array, array.to_a)
23 end
24
25 sub_test_case("generic builder") do
26 test("strings") do
27 assert_build(Arrow::ArrayBuilder,
28 ["Hello", nil, "World"])
29 end
30
31 test("symbols") do
32 array = Arrow::ArrayBuilder.build([:hello, nil, :world])
33 expected_builder = Arrow::StringDictionaryArrayBuilder.new
34 assert_equal(expected_builder.build(["hello", nil, "world"]),
35 array)
36 end
37
38 test("boolean") do
39 assert_build(Arrow::ArrayBuilder,
40 [true, nil, false])
41 end
42
43 test("positive integers") do
44 assert_build(Arrow::ArrayBuilder,
45 [1, nil, 2, nil, 3])
46 end
47
48 test("negative integers") do
49 assert_build(Arrow::ArrayBuilder,
50 [nil, -1, nil, -2, nil, -3])
51 end
52
53 test("times") do
54 assert_build(Arrow::ArrayBuilder,
55 [Time.at(0), Time.at(1), Time.at(2)])
56 end
57
58 test("dates") do
59 assert_build(Arrow::ArrayBuilder,
60 [Date.new(2018, 1, 4), Date.new(2018, 1, 5)])
61 end
62
63 test("datetimes") do
64 assert_build(Arrow::ArrayBuilder,
65 [
66 DateTime.new(2018, 1, 4, 23, 18, 23),
67 DateTime.new(2018, 1, 5, 0, 23, 21),
68 ])
69 end
70
71 test("list<boolean>s") do
72 assert_build(Arrow::ArrayBuilder,
73 [
74 [nil, true, false],
75 nil,
76 [false],
77 ])
78 end
79
80 test("list<string>s") do
81 assert_build(Arrow::ArrayBuilder,
82 [
83 ["Hello", "World"],
84 ["Apache Arrow"],
85 ])
86 end
87 end
88
89 sub_test_case("specific builder") do
90 test("empty") do
91 assert_build(Arrow::Int32ArrayBuilder,
92 [])
93 end
94
95 test("values") do
96 assert_build(Arrow::Int32ArrayBuilder,
97 [1, -2])
98 end
99
100 test("values, nils") do
101 assert_build(Arrow::Int32ArrayBuilder,
102 [1, -2, nil, nil])
103 end
104
105 test("values, nils, values") do
106 assert_build(Arrow::Int32ArrayBuilder,
107 [1, -2, nil, nil, 3, -4])
108 end
109
110 test("values, nils, values, nils") do
111 assert_build(Arrow::Int32ArrayBuilder,
112 [1, -2, nil, nil, 3, -4, nil, nil])
113 end
114
115 test("nils") do
116 assert_build(Arrow::Int32ArrayBuilder,
117 [nil, nil])
118 end
119
120 test("nils, values") do
121 assert_build(Arrow::Int32ArrayBuilder,
122 [nil, nil, 3, -4])
123 end
124
125 test("nils, values, nil") do
126 assert_build(Arrow::Int32ArrayBuilder,
127 [nil, nil, 3, -4, nil, nil])
128 end
129
130 test("nils, values, nil, values") do
131 assert_build(Arrow::Int32ArrayBuilder,
132 [nil, nil, 3, -4, nil, nil, 5, -6])
133 end
134 end
135 end
136end