summaryrefslogtreecommitdiffstats
path: root/third_party/rust/hashbrown/tests/set.rs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 19:33:14 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 19:33:14 +0000
commit36d22d82aa202bb199967e9512281e9a53db42c9 (patch)
tree105e8c98ddea1c1e4784a60a5a6410fa416be2de /third_party/rust/hashbrown/tests/set.rs
parentInitial commit. (diff)
downloadfirefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.tar.xz
firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.zip
Adding upstream version 115.7.0esr.upstream/115.7.0esrupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'third_party/rust/hashbrown/tests/set.rs')
-rw-r--r--third_party/rust/hashbrown/tests/set.rs34
1 files changed, 34 insertions, 0 deletions
diff --git a/third_party/rust/hashbrown/tests/set.rs b/third_party/rust/hashbrown/tests/set.rs
new file mode 100644
index 0000000000..5ae1ec98ec
--- /dev/null
+++ b/third_party/rust/hashbrown/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);
+ }
+ }
+}