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

Function test_try_new

arrow-array/src/array/map_array.rs:770–842  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

768
769 #[test]
770 fn test_try_new() {
771 let offsets = OffsetBuffer::new(vec![0, 1, 4, 5].into());
772 let fields = Fields::from(vec![
773 Field::new("key", DataType::Int32, false),
774 Field::new("values", DataType::Int32, false),
775 ]);
776 let columns = vec![
777 Arc::new(Int32Array::from(vec![1, 2, 3, 4, 5])) as _,
778 Arc::new(Int32Array::from(vec![1, 2, 3, 4, 5])) as _,
779 ];
780
781 let entries = StructArray::new(fields.clone(), columns, None);
782 let field = Arc::new(Field::new("entries", DataType::Struct(fields), false));
783
784 MapArray::new(field.clone(), offsets.clone(), entries.clone(), None, false);
785
786 let nulls = NullBuffer::new_null(3);
787 MapArray::new(field.clone(), offsets, entries.clone(), Some(nulls), false);
788
789 let nulls = NullBuffer::new_null(3);
790 let offsets = OffsetBuffer::new(vec![0, 1, 2, 4, 5].into());
791 let err = MapArray::try_new(
792 field.clone(),
793 offsets.clone(),
794 entries.clone(),
795 Some(nulls),
796 false,
797 )
798 .unwrap_err();
799
800 assert_eq!(
801 err.to_string(),
802 "Invalid argument error: Incorrect length of null buffer for MapArray, expected 4 got 3"
803 );
804
805 let err = MapArray::try_new(field, offsets.clone(), entries.slice(0, 2), None, false)
806 .unwrap_err();
807
808 assert_eq!(
809 err.to_string(),
810 "Invalid argument error: Max offset of 5 exceeds length of entries 2"
811 );
812
813 let field = Arc::new(Field::new("element", DataType::Int64, false));
814 let err = MapArray::try_new(field, offsets.clone(), entries, None, false)
815 .unwrap_err()
816 .to_string();
817
818 assert!(
819 err.starts_with("Invalid argument error: MapArray expected data type Int64 got Struct"),
820 "{err}"
821 );
822
823 let fields = Fields::from(vec![
824 Field::new("a", DataType::Int32, false),
825 Field::new("b", DataType::Int32, false),
826 Field::new("c", DataType::Int32, false),
827 ]);

Callers

nothing calls this directly

Calls 3

try_newFunction · 0.85
cloneMethod · 0.45
sliceMethod · 0.45

Tested by

no test coverage detected