use ciphers::{Cipher, CipherInputError, RailFence};
#[test]
fn encipher_small() {
let rail_fence = RailFence::new(4);
let ctext = rail_fence.encipher("DEFENDTHEEASTWALLOFTHECASTLE");
assert_eq!(ctext.unwrap(), "DTTFSEDHSWOTATFNEAALHCLEELEE");
}
#[test]
fn decipher_small() {
let rail_fence = RailFence::new(4);
let ptext = rail_fence.decipher("DTTFSEDHSWOTATFNEAALHCLEELEE");
assert_eq!(ptext.unwrap(), "DEFENDTHEEASTWALLOFTHECASTLE");
}
#[test]
fn encipher_large() {
let rail_fence = RailFence::new(6);
let ctext = rail_fence.encipher("ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ");
assert_eq!(
ctext.unwrap(),
"AKUEOYBJLTVDFNPXZCIMSWCGMQWDHNRXBHLRVEGOQYAIKSUFPZJT"
);
}
#[test]
fn decipher_large() {
let rail_fence = RailFence::new(6);
let ptext = rail_fence.decipher("AKUEOYBJLTVDFNPXZCIMSWCGMQWDHNRXBHLRVEGOQYAIKSUFPZJT");
assert_eq!(
ptext.unwrap(),
"ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ"
);
}
#[test]
fn encipher_lowercase() {
let rail_fence = RailFence::new(4);
let ctext = rail_fence.encipher("defendtheeastwallofthecastle");
assert_eq!(ctext.unwrap(), "dttfsedhswotatfneaalhcleelee");
}
#[test]
fn decipher_lowercase() {
let rail_fence = RailFence::new(4);
let ptext = rail_fence.decipher("dttfsedhswotatfneaalhcleelee");
assert_eq!(ptext.unwrap(), "defendtheeastwallofthecastle");
}
#[test]
#[should_panic]
fn key_eq_0() {
RailFence::new(0);
}
#[test]
fn ptext_non_ascii() {
let rail_fence = RailFence::new(4);
let ctext = rail_fence.encipher("dèfèndtheeastwallofthecastlè");
assert_eq!(ctext, Err(CipherInputError::NotAscii));
}
#[test]
fn ctext_non_ascii() {
let rail_fence = RailFence::new(4);
let ptext = rail_fence.decipher("dttfsèdhswotatfneaalhclèèlèè");
assert_eq!(ptext, Err(CipherInputError::NotAscii));
}