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

Function compare_logical_and_physical_indices

arrow-array/src/array/run_array.rs:870–896  ·  view source on GitHub ↗

Asserts that `logical_array[logical_indices[*]] == physical_array[physical_indices[*]]`

(
        logical_indices: &[u32],
        logical_array: &[Option<i32>],
        physical_indices: &[usize],
        physical_array: &PrimitiveArray<Int32Type>,
    )

Source from the content-addressed store, hash-verified

868
869 // Asserts that `logical_array[logical_indices[*]] == physical_array[physical_indices[*]]`
870 fn compare_logical_and_physical_indices(
871 logical_indices: &[u32],
872 logical_array: &[Option<i32>],
873 physical_indices: &[usize],
874 physical_array: &PrimitiveArray<Int32Type>,
875 ) {
876 assert_eq!(logical_indices.len(), physical_indices.len());
877
878 // check value in logical index in the logical_array matches physical index in physical_array
879 logical_indices
880 .iter()
881 .map(|f| f.as_usize())
882 .zip(physical_indices.iter())
883 .for_each(|(logical_ix, physical_ix)| {
884 let expected = logical_array[logical_ix];
885 match expected {
886 Some(val) => {
887 assert!(physical_array.is_valid(*physical_ix));
888 let actual = physical_array.value(*physical_ix);
889 assert_eq!(val, actual);
890 }
891 None => {
892 assert!(physical_array.is_null(*physical_ix))
893 }
894 };
895 });
896 }
897 #[test]
898 fn test_run_array() {
899 // Construct a value array

Callers 2

Calls 4

zipMethod · 0.80
as_usizeMethod · 0.80
iterMethod · 0.45
valueMethod · 0.45

Tested by 2