@@ -175,5 +175,40 @@ def test_struct_array_str_repr():
175
175
assert_equal(str_repr, repr_repr)
176
176
177
177
178
+ def build_struct () -> StructArray:
179
+ var int_data_a = ArrayData.from_buffer[int32](
180
+ Buffer.from_values[DType.int32](1 , 2 , 3 , 4 , 5 ), 5
181
+ )
182
+ var field_1 = Field(" int_data_a" , materialize[int32]())
183
+
184
+ var int_data_b = ArrayData.from_buffer[int32](
185
+ Buffer.from_values[DType.int32](10 , 20 , 30 ), 3
186
+ )
187
+ var field_2 = Field(" int_data_b" , materialize[int32]())
188
+ bitmap = Bitmap.alloc(2 )
189
+ bitmap.unsafe_range_set(0 , 2 , True )
190
+ var struct_array_data = ArrayData(
191
+ dtype = struct_(List(field_1^ , field_2^ )),
192
+ length = 2 ,
193
+ bitmap = ArcPointer(bitmap^ ),
194
+ offset = 0 ,
195
+ buffers = List[ArcPointer[Buffer]](),
196
+ children = List(ArcPointer(int_data_a^ ), ArcPointer(int_data_b^ )),
197
+ )
198
+ return StructArray(data = struct_array_data^ )
199
+
200
+
201
+ def test_struct_array_unsafe_get ():
202
+ var struct_array = build_struct()
203
+ ref int_data_a = struct_array.unsafe_get(" int_data_a" )
204
+ var int_a = Int32Array(int_data_a.copy())
205
+ assert_equal(int_a.unsafe_get(0 ), 1 )
206
+ assert_equal(int_a.unsafe_get(4 ), 5 )
207
+ ref int_data_b = struct_array.unsafe_get(" int_data_b" )
208
+ var int_b = Int32Array(int_data_b.copy())
209
+ assert_equal(int_b.unsafe_get(0 ), 10 )
210
+ assert_equal(int_b.unsafe_get(2 ), 30 )
211
+
212
+
178
213
fn main () raises :
179
214
test_list_of_list()
0 commit comments