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

Function test_list_append

arrow/tests/array_transform.rs:551–612  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

549
550#[test]
551fn test_list_append() {
552 let mut builder = ListBuilder::<Int64Builder>::new(Int64Builder::with_capacity(24));
553 builder.values().append_slice(&[1, 2, 3]);
554 builder.append(true);
555 builder.values().append_slice(&[4, 5]);
556 builder.append(true);
557 builder.values().append_slice(&[6, 7, 8]);
558 builder.values().append_slice(&[9, 10, 11]);
559 builder.append(true);
560 let a = builder.finish().into_data();
561
562 let a_builder = Int64Builder::with_capacity(24);
563 let mut a_builder = ListBuilder::<Int64Builder>::new(a_builder);
564 a_builder.values().append_slice(&[12, 13]);
565 a_builder.append(true);
566 a_builder.append(true);
567 a_builder.values().append_slice(&[14, 15]);
568 a_builder.append(true);
569 let b = a_builder.finish().into_data();
570
571 let c = b.slice(1, 2);
572
573 let mut mutable = MutableArrayData::new(vec![&a, &b, &c], false, 1);
574 mutable.extend(0, 0, a.len());
575 mutable.extend(1, 0, b.len());
576 mutable.extend(2, 0, c.len());
577
578 let finished = mutable.freeze();
579
580 let expected_int_array = Int64Array::from(vec![
581 Some(1),
582 Some(2),
583 Some(3),
584 Some(4),
585 Some(5),
586 Some(6),
587 Some(7),
588 Some(8),
589 Some(9),
590 Some(10),
591 Some(11),
592 // append first array
593 Some(12),
594 Some(13),
595 Some(14),
596 Some(15),
597 // append second array
598 Some(14),
599 Some(15),
600 ]);
601 let list_value_offsets = Buffer::from_slice_ref([0i32, 3, 5, 11, 13, 13, 15, 15, 17]);
602 let expected_list_data = ArrayData::try_new(
603 DataType::List(Arc::new(Field::new_list_field(DataType::Int64, true))),
604 8,
605 None,
606 0,
607 vec![list_value_offsets],
608 vec![expected_int_array.into_data()],

Callers

nothing calls this directly

Calls 11

try_newFunction · 0.85
freezeMethod · 0.80
ListClass · 0.50
append_sliceMethod · 0.45
valuesMethod · 0.45
appendMethod · 0.45
into_dataMethod · 0.45
finishMethod · 0.45
sliceMethod · 0.45
extendMethod · 0.45
lenMethod · 0.45

Tested by

no test coverage detected