summaryrefslogtreecommitdiffstats
path: root/vendor/hashbrown-0.12.3/tests/set.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/hashbrown-0.12.3/tests/set.rs')
-rw-r--r--vendor/hashbrown-0.12.3/tests/set.rs34
1 files changed, 34 insertions, 0 deletions
diff --git a/vendor/hashbrown-0.12.3/tests/set.rs b/vendor/hashbrown-0.12.3/tests/set.rs
new file mode 100644
index 000000000..5ae1ec98e
--- /dev/null
+++ b/vendor/hashbrown-0.12.3/tests/set.rs
@@ -0,0 +1,34 @@
+#![cfg(not(miri))] // FIXME: takes too long
+
+use hashbrown::HashSet;
+use rand::{distributions::Alphanumeric, rngs::SmallRng, Rng, SeedableRng};
+use std::iter;
+
+#[test]
+fn test_hashset_insert_remove() {
+ let mut m: HashSet<Vec<char>> = HashSet::new();
+ let seed = u64::from_le_bytes(*b"testseed");
+
+ let rng = &mut SmallRng::seed_from_u64(seed);
+ let tx: Vec<Vec<char>> = iter::repeat_with(|| {
+ rng.sample_iter(&Alphanumeric)
+ .take(32)
+ .map(char::from)
+ .collect()
+ })
+ .take(4096)
+ .collect();
+
+ // more readable with explicit `true` / `false`
+ #[allow(clippy::bool_assert_comparison)]
+ for _ in 0..32 {
+ for x in &tx {
+ assert_eq!(m.contains(x), false);
+ assert_eq!(m.insert(x.clone()), true);
+ }
+ for (i, x) in tx.iter().enumerate() {
+ println!("removing {} {:?}", i, x);
+ assert_eq!(m.remove(x), true);
+ }
+ }
+}