From 8d40ca91fc474ffef9670e01d7f92ff758f45c82 Mon Sep 17 00:00:00 2001 From: Zachary S Date: Wed, 22 Mar 2023 21:33:16 -0500 Subject: [PATCH] Added test that `CircularTupleWindows` clone works correctly. --- tests/tuples.rs | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/tests/tuples.rs b/tests/tuples.rs index 9fc8b3cc7..c1aa156e0 100644 --- a/tests/tuples.rs +++ b/tests/tuples.rs @@ -61,6 +61,30 @@ fn tuple_windows() { assert_eq!(None, iter.next()); } +#[test] +fn circular_tuple_windows() { + let v = [1, 2, 3, 4, 5]; + + let mut iter = v.iter().cloned().circular_tuple_windows(); + assert_eq!(Some((1,)), iter.next()); + assert_eq!(Some((2,)), iter.next()); + assert_eq!(Some((3,)), iter.next()); + + let mut iter = v.iter().cloned().circular_tuple_windows(); + assert_eq!(Some((1, 2, 3, 4)), iter.next()); + assert_eq!(Some((2, 3, 4, 5)), iter.next()); + // Testing impl Clone for CircularTupleWindows + let mut iter2 = iter.clone(); + assert_eq!(Some((3, 4, 5, 1)), iter.next()); + assert_eq!(Some((3, 4, 5, 1)), iter2.next()); + assert_eq!(Some((4, 5, 1, 2)), iter.next()); + assert_eq!(Some((4, 5, 1, 2)), iter2.next()); + assert_eq!(Some((5, 1, 2, 3)), iter.next()); + assert_eq!(Some((5, 1, 2, 3)), iter2.next()); + assert_eq!(None, iter.next()); + assert_eq!(None, iter2.next()); +} + #[test] fn next_tuple() { let v = [1, 2, 3, 4, 5];