diff options
| author | Tim Vermeulen <tvermeulen@me.com> | 2020-10-02 05:26:42 +0200 |
|---|---|---|
| committer | Tim Vermeulen <tvermeulen@me.com> | 2020-10-05 22:55:48 +0200 |
| commit | bcacfe1dbf80af7ea2e70b418e2f19c03ee09121 (patch) | |
| tree | b6ac1b91d6bc4ee2b9eb8ff9dd415bfac9017ea6 | |
| parent | c5d6a0dd96ad9825751ac6189fa632f521a16db2 (diff) | |
| download | rust-bcacfe1dbf80af7ea2e70b418e2f19c03ee09121.tar.gz rust-bcacfe1dbf80af7ea2e70b418e2f19c03ee09121.zip | |
Add tests
| -rw-r--r-- | library/core/tests/iter.rs | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/library/core/tests/iter.rs b/library/core/tests/iter.rs index b15d6d1b1f6..23f583e14e8 100644 --- a/library/core/tests/iter.rs +++ b/library/core/tests/iter.rs @@ -143,6 +143,72 @@ fn test_iterator_chain() { } #[test] +fn test_iterator_chain_advance_by() { + fn test_chain(xs: &[i32], ys: &[i32]) { + let len = xs.len() + ys.len(); + + for i in 0..xs.len() { + let mut iter = xs.iter().chain(ys); + iter.advance_by(i).unwrap(); + assert_eq!(iter.next(), Some(&xs[i])); + assert_eq!(iter.advance_by(100), Err(len - i - 1)); + } + + for i in 0..ys.len() { + let mut iter = xs.iter().chain(ys); + iter.advance_by(xs.len() + i).unwrap(); + assert_eq!(iter.next(), Some(&ys[i])); + assert_eq!(iter.advance_by(100), Err(ys.len() - i - 1)); + } + + let mut iter = xs.iter().chain(ys); + iter.advance_by(len).unwrap(); + assert_eq!(iter.next(), None); + + let mut iter = xs.iter().chain(ys); + assert_eq!(iter.advance_by(len + 1), Err(len)); + } + + test_chain(&[], &[]); + test_chain(&[], &[0, 1, 2, 3, 4, 5]); + test_chain(&[0, 1, 2, 3, 4, 5], &[]); + test_chain(&[0, 1, 2, 3, 4, 5], &[30, 40, 50, 60]); +} + +#[test] +fn test_iterator_chain_advance_back_by() { + fn test_chain(xs: &[i32], ys: &[i32]) { + let len = xs.len() + ys.len(); + + for i in 0..ys.len() { + let mut iter = xs.iter().chain(ys); + iter.advance_back_by(i).unwrap(); + assert_eq!(iter.next_back(), Some(&ys[ys.len() - i - 1])); + assert_eq!(iter.advance_back_by(100), Err(len - i - 1)); + } + + for i in 0..xs.len() { + let mut iter = xs.iter().chain(ys); + iter.advance_back_by(ys.len() + i).unwrap(); + assert_eq!(iter.next_back(), Some(&xs[xs.len() - i - 1])); + assert_eq!(iter.advance_back_by(100), Err(xs.len() - i - 1)); + } + + let mut iter = xs.iter().chain(ys); + iter.advance_back_by(len).unwrap(); + assert_eq!(iter.next_back(), None); + + let mut iter = xs.iter().chain(ys); + assert_eq!(iter.advance_back_by(len + 1), Err(len)); + } + + test_chain(&[], &[]); + test_chain(&[], &[0, 1, 2, 3, 4, 5]); + test_chain(&[0, 1, 2, 3, 4, 5], &[]); + test_chain(&[0, 1, 2, 3, 4, 5], &[30, 40, 50, 60]); +} + +#[test] fn test_iterator_chain_nth() { let xs = [0, 1, 2, 3, 4, 5]; let ys = [30, 40, 50, 60]; |
