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