tests.rs (1610B)
1 use rand_chacha; 2 3 macro_rules! create_test { 4 ( $wordlist_name: ident, $test_name: ident, $expected: expr ) => { 5 #[test] 6 fn $test_name() { 7 use diceware_wordlists::$wordlist_name; 8 use rand::prelude::SeedableRng; 9 use rand::prelude::SliceRandom; 10 use rand_chacha::ChaCha12Rng; 11 12 fn make_vektor<'a>() -> Vec<&'a str> { 13 let seed: [u8; 32] = [0; 32]; 14 let mut rng: ChaCha12Rng = SeedableRng::from_seed(seed); 15 16 let mut vector: Vec<&str> = vec![]; 17 for _ in 0..4 { 18 let word: &str = $wordlist_name.choose(&mut rng).unwrap(); 19 vector.push(word); 20 } 21 vector 22 } 23 let wanted: Vec<&str> = $expected.into_iter().collect(); 24 25 let got = make_vektor(); 26 27 assert_eq!(got, wanted); 28 } 29 }; 30 } 31 32 create_test!( 33 BEALE_WORDLIST, 34 beale_rng_test, 35 vec!["io", "gavel", "beam", "time"] 36 ); 37 38 create_test!( 39 REINHOLD_WORDLIST, 40 reinhold_rng_test, 41 vec!["india", "gamma", "bcd", "theme"] 42 ); 43 44 create_test!( 45 MINILOCK_WORDLIST, 46 minilock_rng_test, 47 vec!["hoed", "femininity", "bedsit", "stabbings"] 48 ); 49 50 create_test!( 51 EFF_LONG_WORDLIST, 52 eff_long_rng_test, 53 vec!["helpless", "fever", "blooming", "sublease"] 54 ); 55 create_test!( 56 EFF_SHORT_WORDLIST_1, 57 eff_short_1_rng_test, 58 vec!["five", "boat", "shape", "bony"] 59 ); 60 create_test!( 61 EFF_SHORT_WORDLIST_2_0, 62 eff_short_2_0_rng_test, 63 vec!["family", "aseptic", "renovator", "atlas"] 64 );