use caesar_cipher_enc_dec::caesar_cipher::{decrypt, decrypt_safe, encrypt, encrypt_safe};
#[test]
fn test_roundtrip_simple() {
let original = "Hello";
let shift = 5;
let encrypted = encrypt(original, shift);
let decrypted = decrypt(&encrypted, shift);
assert_eq!(original, decrypted);
}
#[test]
fn test_roundtrip_full_sentence() {
let original = "The quick brown fox jumps over the lazy dog!";
let shift = 13;
let encrypted = encrypt(original, shift);
let decrypted = decrypt(&encrypted, shift);
assert_eq!(original, decrypted);
}
#[test]
fn test_roundtrip_all_shifts() {
let original = "TestString";
for shift in 0..=25 {
let encrypted = encrypt(original, shift);
let decrypted = decrypt(&encrypted, shift);
assert_eq!(original, decrypted, "Failed for shift {}", shift);
}
}
#[test]
fn test_roundtrip_negative_shifts() {
let original = "NegativeTest";
for shift in -25..=0 {
let encrypted = encrypt(original, shift);
let decrypted = decrypt(&encrypted, shift);
assert_eq!(original, decrypted, "Failed for shift {}", shift);
}
}
#[test]
fn test_roundtrip_using_negative_encrypt() {
let original = "Alternative";
let shift = 7;
let encrypted = encrypt(original, shift);
let decrypted = encrypt(&encrypted, -shift);
assert_eq!(original, decrypted);
}
#[test]
fn test_safe_roundtrip_valid() {
let original = "Hello World";
let shift = 10;
let encrypted = encrypt_safe(original, shift).unwrap();
let decrypted = decrypt_safe(&encrypted, shift).unwrap();
assert_eq!(original, decrypted);
}
#[test]
fn test_safe_roundtrip_all_valid_shifts() {
let original = "RoundtripTest";
for shift in -25..=25 {
let encrypted = encrypt_safe(original, shift).unwrap();
let decrypted = decrypt_safe(&encrypted, shift).unwrap();
assert_eq!(original, decrypted, "Failed for shift {}", shift);
}
}