diff options
| author | Charles Gleason <charles_gleason@alumni.brown.edu> | 2019-10-28 18:50:07 -0400 |
|---|---|---|
| committer | Charles Gleason <charles_gleason@alumni.brown.edu> | 2019-10-29 10:01:42 -0400 |
| commit | 71191bc3e9c592e6f52a646414fd9e337e3f3407 (patch) | |
| tree | 528994c60c411477ab843b1802d63f2560efc98b /src/liballoc | |
| parent | aa893535c4232176c0c05e4e8fb8c85a2a855a1f (diff) | |
| download | rust-71191bc3e9c592e6f52a646414fd9e337e3f3407.tar.gz rust-71191bc3e9c592e6f52a646414fd9e337e3f3407.zip | |
Add test for VecDeque truncate
Diffstat (limited to 'src/liballoc')
| -rw-r--r-- | src/liballoc/collections/vec_deque/tests.rs | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/liballoc/collections/vec_deque/tests.rs b/src/liballoc/collections/vec_deque/tests.rs index d578ee0dac4..09009ff516a 100644 --- a/src/liballoc/collections/vec_deque/tests.rs +++ b/src/liballoc/collections/vec_deque/tests.rs @@ -385,6 +385,41 @@ fn test_clone_from() { } #[test] +fn test_vec_deque_truncate_drop() { + static mut DROPS: u32 = 0; + #[derive(Clone)] + struct Elem(i32); + impl Drop for Elem { + fn drop(&mut self) { + unsafe { + DROPS += 1; + } + } + } + + let v = vec![Elem(1), Elem(2), Elem(3), Elem(4), Elem(5)]; + for push_front in 0..=v.len() { + let v = v.clone(); + let mut tester = VecDeque::with_capacity(5); + for (index, elem) in v.into_iter().enumerate() { + if index < push_front { + tester.push_front(elem); + } else { + tester.push_back(elem); + } + } + assert_eq!(unsafe { DROPS }, 0); + tester.truncate(3); + assert_eq!(unsafe { DROPS }, 2); + tester.truncate(0); + assert_eq!(unsafe { DROPS }, 5); + unsafe { + DROPS = 0; + } + } +} + +#[test] fn issue_53529() { use crate::boxed::Box; |
