Skip to content

Commit 7dce32e

Browse files
committed
Auto merge of #30982 - KiChjang:zst-collections-tests, r=bluss
Fixes #28518.
2 parents 4bb9d45 + aca4e6a commit 7dce32e

File tree

4 files changed

+126
-0
lines changed

4 files changed

+126
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
// Copyright 2013 The Rust Project Developers. See the COPYRIGHT
2+
// file at the top-level directory of this distribution and at
3+
// http://rust-lang.org/COPYRIGHT.
4+
//
5+
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6+
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7+
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8+
// option. This file may not be copied, modified, or distributed
9+
// except according to those terms.
10+
11+
use std::collections::BinaryHeap;
12+
use std::iter::Iterator;
13+
14+
fn main() {
15+
const N: usize = 8;
16+
17+
for len in 0..N {
18+
let mut tester = BinaryHeap::with_capacity(len);
19+
assert_eq!(tester.len(), 0);
20+
assert!(tester.capacity() >= len);
21+
for bit in 0..len {
22+
tester.push(());
23+
}
24+
assert_eq!(tester.len(), len);
25+
assert_eq!(tester.iter().count(), len);
26+
tester.clear();
27+
}
28+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
// Copyright 2013 The Rust Project Developers. See the COPYRIGHT
2+
// file at the top-level directory of this distribution and at
3+
// http://rust-lang.org/COPYRIGHT.
4+
//
5+
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6+
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7+
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8+
// option. This file may not be copied, modified, or distributed
9+
// except according to those terms.
10+
11+
use std::cmp::{Ord, Ordering, PartialOrd};
12+
use std::collections::BTreeMap;
13+
use std::iter::Iterator;
14+
15+
#[derive(Eq, Hash, Debug, Ord, PartialEq, PartialOrd)]
16+
struct Zst;
17+
18+
fn main() {
19+
const N: usize = 8;
20+
21+
for len in 0..N {
22+
let mut tester = BTreeMap::new();
23+
assert_eq!(tester.len(), 0);
24+
for bit in 0..len {
25+
tester.insert(Zst, ());
26+
}
27+
assert_eq!(tester.len(), if len == 0 { 0 } else { 1 });
28+
assert_eq!(tester.iter().count(), if len == 0 { 0 } else { 1 });
29+
assert_eq!(tester.get(&Zst).is_some(), len > 0);
30+
tester.clear();
31+
}
32+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
// Copyright 2013 The Rust Project Developers. See the COPYRIGHT
2+
// file at the top-level directory of this distribution and at
3+
// http://rust-lang.org/COPYRIGHT.
4+
//
5+
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6+
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7+
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8+
// option. This file may not be copied, modified, or distributed
9+
// except according to those terms.
10+
11+
use std::collections::LinkedList;
12+
use std::iter::Iterator;
13+
14+
fn main() {
15+
const N: usize = 8;
16+
17+
// Test that for all possible sequences of push_front / push_back,
18+
// we end up with a LinkedList of the correct size
19+
20+
for len in 0..N {
21+
let mut tester = LinkedList::new();
22+
assert_eq!(tester.len(), 0);
23+
assert_eq!(tester.front(), None);
24+
for case in 0..(1 << len) {
25+
assert_eq!(tester.len(), 0);
26+
for bit in 0..len {
27+
if case & (1 << bit) != 0 {
28+
tester.push_front(());
29+
} else {
30+
tester.push_back(());
31+
}
32+
}
33+
assert_eq!(tester.len(), len);
34+
assert_eq!(tester.iter().count(), len);
35+
tester.clear();
36+
}
37+
}
38+
}
+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
// Copyright 2013 The Rust Project Developers. See the COPYRIGHT
2+
// file at the top-level directory of this distribution and at
3+
// http://rust-lang.org/COPYRIGHT.
4+
//
5+
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6+
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7+
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8+
// option. This file may not be copied, modified, or distributed
9+
// except according to those terms.
10+
11+
use std::iter::Iterator;
12+
use std::vec::Vec;
13+
14+
fn main() {
15+
const N: usize = 8;
16+
17+
for len in 0..N {
18+
let mut tester = Vec::with_capacity(len);
19+
assert_eq!(tester.len(), 0);
20+
assert!(tester.capacity() >= len);
21+
for bit in 0..len {
22+
tester.push(());
23+
}
24+
assert_eq!(tester.len(), len);
25+
assert_eq!(tester.iter().count(), len);
26+
tester.clear();
27+
}
28+
}

0 commit comments

Comments
 (0)