]>
Commit | Line | Data |
---|---|---|
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 | ||
18 | class 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 | |
136 | end |