diff options
Diffstat (limited to 'src/test/ui/zero-sized/zero-sized-linkedlist-push.rs')
-rw-r--r-- | src/test/ui/zero-sized/zero-sized-linkedlist-push.rs | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/test/ui/zero-sized/zero-sized-linkedlist-push.rs b/src/test/ui/zero-sized/zero-sized-linkedlist-push.rs new file mode 100644 index 000000000..03724085f --- /dev/null +++ b/src/test/ui/zero-sized/zero-sized-linkedlist-push.rs @@ -0,0 +1,29 @@ +// run-pass +use std::collections::LinkedList; +use std::iter::Iterator; + +fn main() { + const N: usize = 8; + + // Test that for all possible sequences of push_front / push_back, + // we end up with a LinkedList of the correct size + + for len in 0..N { + let mut tester = LinkedList::new(); + assert_eq!(tester.len(), 0); + assert_eq!(tester.front(), None); + for case in 0..(1 << len) { + assert_eq!(tester.len(), 0); + for bit in 0..len { + if case & (1 << bit) != 0 { + tester.push_front(()); + } else { + tester.push_back(()); + } + } + assert_eq!(tester.len(), len); + assert_eq!(tester.iter().count(), len); + tester.clear(); + } + } +} |