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

Function test_struct_array_slice

arrow-array/src/array/struct_array.rs:845–929  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

843
844 #[test]
845 fn test_struct_array_slice() {
846 let boolean_data = ArrayData::builder(DataType::Boolean)
847 .len(5)
848 .add_buffer(Buffer::from([0b00010000]))
849 .null_bit_buffer(Some(Buffer::from([0b00010001])))
850 .build()
851 .unwrap();
852 let int_data = ArrayData::builder(DataType::Int32)
853 .len(5)
854 .add_buffer(Buffer::from([0, 28, 42, 0, 0].to_byte_slice()))
855 .null_bit_buffer(Some(Buffer::from([0b00000110])))
856 .build()
857 .unwrap();
858
859 let field_types = vec![
860 Field::new("a", DataType::Boolean, true),
861 Field::new("b", DataType::Int32, true),
862 ];
863 let struct_array_data = ArrayData::builder(DataType::Struct(field_types.into()))
864 .len(5)
865 .add_child_data(boolean_data.clone())
866 .add_child_data(int_data.clone())
867 .null_bit_buffer(Some(Buffer::from([0b00010111])))
868 .build()
869 .unwrap();
870 let struct_array = StructArray::from(struct_array_data);
871
872 assert_eq!(5, struct_array.len());
873 assert_eq!(1, struct_array.null_count());
874 assert!(struct_array.is_valid(0));
875 assert!(struct_array.is_valid(1));
876 assert!(struct_array.is_valid(2));
877 assert!(struct_array.is_null(3));
878 assert!(struct_array.is_valid(4));
879 assert_eq!(boolean_data, struct_array.column(0).to_data());
880 assert_eq!(int_data, struct_array.column(1).to_data());
881
882 let c0 = struct_array.column(0);
883 let c0 = c0.as_any().downcast_ref::<BooleanArray>().unwrap();
884 assert_eq!(5, c0.len());
885 assert_eq!(3, c0.null_count());
886 assert!(c0.is_valid(0));
887 assert!(!c0.value(0));
888 assert!(c0.is_null(1));
889 assert!(c0.is_null(2));
890 assert!(c0.is_null(3));
891 assert!(c0.is_valid(4));
892 assert!(c0.value(4));
893
894 let c1 = struct_array.column(1);
895 let c1 = c1.as_any().downcast_ref::<Int32Array>().unwrap();
896 assert_eq!(5, c1.len());
897 assert_eq!(3, c1.null_count());
898 assert!(c1.is_null(0));
899 assert!(c1.is_valid(1));
900 assert_eq!(28, c1.value(1));
901 assert!(c1.is_valid(2));
902 assert_eq!(42, c1.value(2));

Callers

nothing calls this directly

Calls 10

add_bufferMethod · 0.80
to_byte_sliceMethod · 0.80
add_child_dataMethod · 0.80
buildMethod · 0.45
null_bit_bufferMethod · 0.45
lenMethod · 0.45
cloneMethod · 0.45
columnMethod · 0.45
as_anyMethod · 0.45
sliceMethod · 0.45

Tested by

no test coverage detected