Asserts that `logical_array[logical_indices[*]] == physical_array[physical_indices[*]]`
(
logical_indices: &[u32],
logical_array: &[Option<i32>],
physical_indices: &[usize],
physical_array: &PrimitiveArray<Int32Type>,
)
| 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 |