()
| 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 |
nothing calls this directly
no test coverage detected