| 549 | |
| 550 | #[test] |
| 551 | fn 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()], |