]> git.proxmox.com Git - ceph.git/blame - ceph/src/arrow/c_glib/test/test-map-array-builder.rb
import quincy 17.2.0
[ceph.git] / ceph / src / arrow / c_glib / test / test-map-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 TestMapArrayBuilder < Test::Unit::TestCase
19 include Helper::Buildable
20
21 def setup
22 offsets = build_int32_array([0, 2, 5])
23 keys = build_string_array(["a", "b", "c", "d", "e"])
24 items = build_int16_array([0, 1, 2, 3, 4])
25 @map_array = Arrow::MapArray.new(offsets,
26 keys,
27 items)
28 key_type = Arrow::StringDataType.new
29 item_type = Arrow::Int16DataType.new
30 data_type = Arrow::MapDataType.new(key_type, item_type)
31 @builder = Arrow::MapArrayBuilder.new(data_type)
32 end
33
34 def test_append_value
35 key_builder = @builder.key_builder
36 item_builder = @builder.item_builder
37
38 @builder.append_value
39 key_builder.append_string("a")
40 key_builder.append_string("b")
41 item_builder.append_value(0)
42 item_builder.append_value(1)
43
44 @builder.append_value
45 key_builder.append_string("c")
46 key_builder.append_string("d")
47 key_builder.append_string("e")
48 item_builder.append_value(2)
49 item_builder.append_value(3)
50 item_builder.append_value(4)
51
52 array = @builder.finish
53 assert_equal([
54 @map_array.get_value(0),
55 @map_array.get_value(1)
56 ],
57 [
58 array.get_value(0),
59 array.get_value(1)
60 ])
61 end
62
63 def test_append_values
64 key_builder = @builder.key_builder
65 item_builder = @builder.item_builder
66 @builder.append_values([0, 2, 5])
67 key_builder.append_strings(["a", "b", "c", "d", "e"])
68 item_builder.append_values([0, 1, 2, 3, 4])
69
70 array = @builder.finish
71 assert_equal([
72 @map_array.get_value(0),
73 @map_array.get_value(1)
74 ],
75 [
76 array.get_value(0),
77 array.get_value(1)
78 ])
79 end
80
81 def test_append_structs
82 value_builder = @builder.value_builder
83
84 @builder.append_value
85 value_builder.append_value
86 value_builder.get_field_builder(0).append_string("a")
87 value_builder.get_field_builder(0).append_string("b")
88 value_builder.get_field_builder(1).append_value(0)
89 value_builder.get_field_builder(1).append_value(1)
90
91 @builder.append_value
92 value_builder.append_value
93 value_builder.get_field_builder(0).append_string("c")
94 value_builder.get_field_builder(0).append_string("d")
95 value_builder.get_field_builder(0).append_string("e")
96 value_builder.get_field_builder(1).append_value(2)
97 value_builder.get_field_builder(1).append_value(3)
98 value_builder.get_field_builder(1).append_value(4)
99
100 array = @builder.finish
101 assert_equal([
102 @map_array.get_value(0),
103 @map_array.get_value(1)
104 ],
105 [
106 array.get_value(0),
107 array.get_value(1)
108 ])
109 end
110
111 def test_append_null
112 @builder.append_null
113 @builder.append_null
114 array = @builder.finish
115 assert_equal(2, array.n_nulls)
116 end
117
118 def test_append_nulls
119 @builder.append_nulls(2)
120 array = @builder.finish
121 assert_equal(2, array.n_nulls)
122 end
123
124 def test_append_empty_value
125 offsets = build_int32_array([0, 0])
126 keys = build_string_array([])
127 items = build_int16_array([])
128 expected_array = Arrow::MapArray.new(offsets, keys, items)
129 @builder.append_empty_value
130 assert_equal(expected_array,
131 @builder.finish)
132 end
133
134 def test_append_empty_values
135 offsets = build_int32_array([0, 0, 0, 0])
136 keys = build_string_array([])
137 items = build_int16_array([])
138 expected_array = Arrow::MapArray.new(offsets, keys, items)
139 @builder.append_empty_values(3)
140 assert_equal(expected_array,
141 @builder.finish)
142 end
143end