summary refs log tree commit diff
path: root/library/alloc/tests
diff options
context:
space:
mode:
authorThe 8472 <git@infinite-source.de>2023-03-27 14:56:14 +0200
committerThe 8472 <git@infinite-source.de>2023-03-27 16:03:30 +0200
commit41807938d2fbc7928d75b1d68ac08899682168a2 (patch)
tree8f4c5b446fe3c09500a9d8d207f6a386d0f36553 /library/alloc/tests
parent9cd9da2cd1c365791c7bf41be5759ebc34180aa0 (diff)
downloadrust-41807938d2fbc7928d75b1d68ac08899682168a2.tar.gz
rust-41807938d2fbc7928d75b1d68ac08899682168a2.zip
fix advance_by impl for vec_deque and add tests
Diffstat (limited to 'library/alloc/tests')
-rw-r--r--library/alloc/tests/vec_deque.rs23
1 files changed, 23 insertions, 0 deletions
diff --git a/library/alloc/tests/vec_deque.rs b/library/alloc/tests/vec_deque.rs
index 5a0b852e8d5..ddc27e34ed9 100644
--- a/library/alloc/tests/vec_deque.rs
+++ b/library/alloc/tests/vec_deque.rs
@@ -1,3 +1,4 @@
+use core::num::NonZeroUsize;
 use std::assert_matches::assert_matches;
 use std::collections::TryReserveErrorKind::*;
 use std::collections::{vec_deque::Drain, VecDeque};
@@ -426,6 +427,28 @@ fn test_into_iter() {
         assert_eq!(it.next(), Some(7));
         assert_eq!(it.size_hint(), (5, Some(5)));
     }
+
+    // advance_by
+    {
+        let mut d = VecDeque::new();
+        for i in 0..=4 {
+            d.push_back(i);
+        }
+        for i in 6..=8 {
+            d.push_front(i);
+        }
+
+        let mut it = d.into_iter();
+        assert_eq!(it.advance_by(1), Ok(()));
+        assert_eq!(it.next(), Some(7));
+        assert_eq!(it.advance_back_by(1), Ok(()));
+        assert_eq!(it.next_back(), Some(3));
+
+        let mut it = VecDeque::from(vec![1, 2, 3, 4, 5]).into_iter();
+        assert_eq!(it.advance_by(10), Err(NonZeroUsize::new(5).unwrap()));
+        let mut it = VecDeque::from(vec![1, 2, 3, 4, 5]).into_iter();
+        assert_eq!(it.advance_back_by(10), Err(NonZeroUsize::new(5).unwrap()));
+    }
 }
 
 #[test]