#![cfg(not(miri))] // FIXME: takes too long use hashbrown::HashSet; use rand::{distributions::Alphanumeric, rngs::SmallRng, Rng, SeedableRng}; #[test] fn test_hashset_insert_remove() { let mut m: HashSet> = HashSet::new(); //let num: u32 = 4096; //let tx: Vec> = (0..num).map(|i| (i..(16 + i)).collect()).collect(); let seed: [u8; 16] = [ 130, 220, 246, 217, 111, 124, 221, 189, 190, 234, 121, 93, 67, 95, 100, 43, ]; let rng = &mut SmallRng::from_seed(seed); let tx: Vec> = (0..4096) .map(|_| (rng.sample_iter(&Alphanumeric).take(32).collect())) .collect(); for _ in 0..32 { for i in 0..4096 { assert_eq!(m.contains(&tx[i].clone()), false); assert_eq!(m.insert(tx[i].clone()), true); } for i in 0..4096 { println!("removing {} {:?}", i, tx[i]); assert_eq!(m.remove(&tx[i]), true); } } }