MCPcopy Create free account
hub / github.com/apache/arrow-rs / test_struct_array_builder

Function test_struct_array_builder

arrow-array/src/builder/struct_builder.rs:331–401  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

329
330 #[test]
331 fn test_struct_array_builder() {
332 let string_builder = StringBuilder::new();
333 let int_builder = Int32Builder::new();
334
335 let fields = vec![
336 Field::new("f1", DataType::Utf8, true),
337 Field::new("f2", DataType::Int32, true),
338 ];
339 let field_builders = vec![
340 Box::new(string_builder) as Box<dyn ArrayBuilder>,
341 Box::new(int_builder) as Box<dyn ArrayBuilder>,
342 ];
343
344 let mut builder = StructBuilder::new(fields, field_builders);
345 assert_eq!(2, builder.num_fields());
346
347 let string_builder = builder
348 .field_builder::<StringBuilder>(0)
349 .expect("builder at field 0 should be string builder");
350 string_builder.append_value("joe");
351 string_builder.append_null();
352 string_builder.append_null();
353 string_builder.append_value("mark");
354 string_builder.append_nulls(2);
355 string_builder.append_value("terry");
356
357 let int_builder = builder
358 .field_builder::<Int32Builder>(1)
359 .expect("builder at field 1 should be int builder");
360 int_builder.append_value(1);
361 int_builder.append_value(2);
362 int_builder.append_null();
363 int_builder.append_value(4);
364 int_builder.append_nulls(2);
365 int_builder.append_value(3);
366
367 builder.append(true);
368 builder.append(true);
369 builder.append_null();
370 builder.append(true);
371
372 builder.append_nulls(2);
373 builder.append(true);
374
375 let struct_data = builder.finish().into_data();
376
377 assert_eq!(7, struct_data.len());
378 assert_eq!(3, struct_data.null_count());
379 assert_eq!(&[75_u8], struct_data.nulls().unwrap().validity());
380
381 let expected_string_data = ArrayData::builder(DataType::Utf8)
382 .len(7)
383 .null_bit_buffer(Some(Buffer::from(&[73_u8])))
384 .add_buffer(Buffer::from_slice_ref([0, 3, 3, 3, 7, 7, 7, 12]))
385 .add_buffer(Buffer::from_slice_ref(b"joemarkterry"))
386 .build()
387 .unwrap();
388

Callers

nothing calls this directly

Calls 10

add_bufferMethod · 0.80
append_valueMethod · 0.45
append_nullMethod · 0.45
append_nullsMethod · 0.45
appendMethod · 0.45
into_dataMethod · 0.45
finishMethod · 0.45
buildMethod · 0.45
null_bit_bufferMethod · 0.45
lenMethod · 0.45

Tested by

no test coverage detected