use ciphers::{Cipher, CipherInputError, Vigenere};
#[test]
fn encipher_small() {
let vigenere = Vigenere::new("FORTIFICATION");
let ctext = vigenere.encipher("DEFENDTHEEASTWALLOFTHECASTLE");
assert_eq!(ctext.unwrap(), "ISWXVIBJEXIGGBOCEWKBJEVIGGQS");
}
#[test]
fn decipher_small() {
let vigenere = Vigenere::new("FORTIFICATION");
let ptext = vigenere.decipher("ISWXVIBJEXIGGBOCEWKBJEVIGGQS");
assert_eq!(ptext.unwrap(), "DEFENDTHEEASTWALLOFTHECASTLE");
}
#[test]
fn encipher_large() {
let vigenere = Vigenere::new("AYLNOFDXJKRCVSTZWB");
let ctext = vigenere.encipher("ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ");
assert_eq!(
ctext.unwrap(),
"AZNQSKJERTBNHFHOMSSRFIKCBWJLTFZXZGEKKJXACUTOBDLXRPRY"
);
}
#[test]
fn decipher_large() {
let vigenere = Vigenere::new("AYLNOFDXJKRCVSTZWB");
let ptext = vigenere.decipher("AZNQSKJERTBNHFHOMSSRFIKCBWJLTFZXZGEKKJXACUTOBDLXRPRY");
assert_eq!(
ptext.unwrap(),
"ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ"
);
}
#[test]
fn encipher_lowercase() {
let vigenere = Vigenere::new("fortification");
let ctext = vigenere.encipher("defendtheeastwallofthecastle");
assert_eq!(ctext.unwrap(), "ISWXVIBJEXIGGBOCEWKBJEVIGGQS");
}
#[test]
fn decipher_lowercase() {
let vigenere = Vigenere::new("fortification");
let ptext = vigenere.decipher("iswxvibjexiggbocewkbjeviggqs");
assert_eq!(ptext.unwrap(), "DEFENDTHEEASTWALLOFTHECASTLE");
}
#[test]
#[should_panic]
fn key_non_alpha() {
Vigenere::new("fortific4tion");
}
#[test]
fn ptext_non_alpha() {
let vigenere = Vigenere::new("fortification");
let ctext = vigenere.encipher("def3ndtheeastwallofthecastle");
assert_eq!(ctext, Err(CipherInputError::NotAlphabetic));
}
#[test]
fn ctext_non_alpha() {
let vigenere = Vigenere::new("fortification");
let ptext = vigenere.decipher("iswxvibjexiggbocewkbj3viggqs");
assert_eq!(ptext, Err(CipherInputError::NotAlphabetic));
}