| 207 | |
| 208 | #[test] |
| 209 | fn test_primitive_array_iter_round_trip() { |
| 210 | let array = Int32Array::from(vec![Some(0), None, Some(2), None, Some(4)]); |
| 211 | let array = Arc::new(array) as ArrayRef; |
| 212 | |
| 213 | let array = array.as_any().downcast_ref::<Int32Array>().unwrap(); |
| 214 | |
| 215 | // to and from iter, with a +1 |
| 216 | let result: Int32Array = array.iter().map(|e| e.map(|e| e + 1)).collect(); |
| 217 | |
| 218 | let expected = Int32Array::from(vec![Some(1), None, Some(3), None, Some(5)]); |
| 219 | assert_eq!(result, expected); |
| 220 | |
| 221 | // check if DoubleEndedIterator is implemented |
| 222 | let result: Int32Array = array.iter().rev().collect(); |
| 223 | let rev_array = Int32Array::from(vec![Some(4), None, Some(2), None, Some(0)]); |
| 224 | assert_eq!(result, rev_array); |
| 225 | // check if ExactSizeIterator is implemented |
| 226 | let _ = array.iter().rposition(|opt_b| opt_b == Some(1)); |
| 227 | } |
| 228 | |
| 229 | #[test] |
| 230 | fn test_double_ended() { |