rusty-diceware

Commandline diceware, with or without dice, written in Rustlang.
git clone https://kaka.farm/~git/rusty-diceware
Log | Files | Refs | README | LICENSE

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 );