dpg 0.1.1

generate password(s) using diceware method & crypto secure random numbers
Documentation
#[macro_use]
extern crate dpg;

#[test]
#[should_panic]
fn calling_dpg_without_any_argument_should_fail() {
    let args = vec![s!("./dpg")];
    let options = dpg::option_parser::parse_command_line(args);
    let _passwords = dpg::generate_diceware_passwords(options);
}

#[test]
fn generate_passwords_without_specifying_language() {
    let args = vec![s!("./dpg"), s!("-w:4"), s!("-p:1")];
    let options = dpg::option_parser::parse_command_line(args);
    let passwords = dpg::generate_diceware_passwords(options);
    assert!(passwords.len() > 0);
    assert_eq!(passwords.lines().count(), 1);
}

#[test]
fn generate_password_using_polish_wordlist() {
    let args = vec![s!("./dpg"), s!("-l:pl"), s!("-w:4"), s!("-p:1")];
    let options = dpg::option_parser::parse_command_line(args);
    let passwords = dpg::generate_diceware_passwords(options);
    assert!(passwords.len() > 0);
    assert_eq!(passwords.lines().count(), 1);
}

#[test]
#[should_panic(expected = "2")]
fn generate_password_specifying_unsupported_language_should_fail() {
    let args = vec![s!("./dpg"), s!("-l:xy"), s!("-w:4"), s!("-p:1")];
    let options = dpg::option_parser::parse_command_line(args);
    dpg::generate_diceware_passwords(options);
}

#[test]
#[should_panic(expected = "1")]
fn should_exit_early_if_no_parameters_are_given() {
    let args = vec![s!("dpg")];
    let options = dpg::option_parser::parse_command_line(args);
    dpg::generate_diceware_passwords(options);
}

#[test]
#[should_panic(expected = "2")]
fn should_fail_if_asked_to_generate_password_consisting_of_less_than_1_word() {
    let args = vec![s!("dpg"), s!("-w:0")];
    let options = dpg::option_parser::parse_command_line(args);
    dpg::generate_diceware_passwords(options);
}

#[test]
#[should_panic(expected = "2")]
fn should_fail_if_asked_to_generate_password_longer_than_255_words() {
    let args = vec![s!("dpg"), s!("-w:256")];
    let options = dpg::option_parser::parse_command_line(args);
    dpg::generate_diceware_passwords(options);
}

#[test]
#[should_panic(expected = "3")]
fn should_fail_if_unknown_option_is_used() {
    let args = vec![s!("dpg"), s!("-q:yes")];
    let options = dpg::option_parser::parse_command_line(args);
    dpg::generate_diceware_passwords(options);
}