From f7381fa6997a4949e0bb2ee6e79b06d234c24886 Mon Sep 17 00:00:00 2001 From: bluss Date: Sun, 1 Sep 2019 13:41:30 +0200 Subject: [PATCH] TEST: Add test for extending array of ZST This demonstrates a bug in current extend. --- tests/tests.rs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/tests/tests.rs b/tests/tests.rs index 8f07ef7..306689c 100644 --- a/tests/tests.rs +++ b/tests/tests.rs @@ -640,3 +640,23 @@ fn test_newish_stable_uses_maybe_uninit() { assert!(cfg!(has_stable_maybe_uninit)); } } + +#[test] +fn test_extend_zst() { + let mut range = 0..10; + #[derive(Copy, Clone, PartialEq, Debug)] + struct Z; // Zero sized type + + let mut array: ArrayVec<[_; 5]> = range.by_ref().map(|_| Z).collect(); + assert_eq!(&array[..], &[Z; 5]); + assert_eq!(range.next(), Some(5)); + + array.extend(range.by_ref().map(|_| Z)); + assert_eq!(range.next(), Some(6)); + + let mut array: ArrayVec<[_; 10]> = (0..3).map(|_| Z).collect(); + assert_eq!(&array[..], &[Z; 3]); + array.extend((3..5).map(|_| Z)); + assert_eq!(&array[..], &[Z; 5]); + assert_eq!(array.len(), 5); +}