Skip to content

Commit 4bee214

Browse files
committed
Add more tests for AxisChunksIter
1 parent b26ec6c commit 4bee214

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed

tests/iterators.rs

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,20 @@ use itertools::assert_equal;
1313
use itertools::{enumerate, rev};
1414
use std::iter::FromIterator;
1515

16+
macro_rules! assert_panics {
17+
($body:expr) => {
18+
if let Ok(v) = ::std::panic::catch_unwind(|| $body) {
19+
panic!("assertion failed: should_panic; \
20+
non-panicking result: {:?}", v);
21+
}
22+
};
23+
($body:expr, $($arg:tt)*) => {
24+
if let Ok(_) = ::std::panic::catch_unwind(|| $body) {
25+
panic!($($arg)*);
26+
}
27+
};
28+
}
29+
1630
#[test]
1731
fn double_ended() {
1832
let a = ArcArray::linspace(0., 7., 8);
@@ -585,6 +599,33 @@ fn axis_chunks_iter_zero_axis_len() {
585599
assert!(a.axis_chunks_iter(Axis(0), 5).next().is_none());
586600
}
587601

602+
#[test]
603+
fn axis_chunks_iter_split_at() {
604+
let mut a = Array2::<usize>::zeros((11, 3));
605+
a.iter_mut().enumerate().for_each(|(i, elt)| *elt = i);
606+
for source in &[
607+
a.slice(s![..0, ..]),
608+
a.slice(s![..1, ..]),
609+
a.slice(s![..5, ..]),
610+
a.slice(s![..10, ..]),
611+
a.slice(s![..11, ..]),
612+
a.slice(s![.., ..0]),
613+
] {
614+
let chunks_iter = source.axis_chunks_iter(Axis(0), 5);
615+
let all_chunks: Vec<_> = chunks_iter.clone().collect();
616+
let n_chunks = chunks_iter.len();
617+
assert_eq!(n_chunks, all_chunks.len());
618+
for index in 0..=n_chunks {
619+
let (left, right) = chunks_iter.clone().split_at(index);
620+
assert_eq!(&all_chunks[..index], &left.collect::<Vec<_>>()[..]);
621+
assert_eq!(&all_chunks[index..], &right.collect::<Vec<_>>()[..]);
622+
}
623+
assert_panics!({
624+
chunks_iter.split_at(n_chunks + 1);
625+
});
626+
}
627+
}
628+
588629
#[test]
589630
fn axis_chunks_iter_mut() {
590631
let a = ArcArray::from_iter(0..24);

0 commit comments

Comments
 (0)