use crate::random::{Alphabet, RandomStringGenerator};
#[test]
fn test_random_string_generation() {
let generator = RandomStringGenerator::new(&[Alphabet::Lowercase]).unwrap();
let length = 16;
let random_string = generator.generate(length, None).unwrap();
assert_eq!(random_string.len(), length);
assert!(random_string
.chars()
.all(|c| "abcdefghijklmnopqrstuvwxyz".contains(c)));
}
#[test]
fn test_custom_alphabet() {
let generator = RandomStringGenerator::new(&[Alphabet::Uppercase, Alphabet::Digits]).unwrap();
let random_string = generator.generate(8, None).unwrap();
let allowed_chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
assert!(random_string.chars().all(|c| allowed_chars.contains(c)));
}
#[test]
fn test_no_valid_characters() {
assert!(RandomStringGenerator::new(&[]).is_err());
}
#[test]
fn test_invalid_length() {
let generator = RandomStringGenerator::new(&[Alphabet::Lowercase]).unwrap();
assert!(generator.generate(0, None).is_err());
}
#[test]
fn test_override_alphabet() {
let generator = RandomStringGenerator::new(&[Alphabet::Lowercase]).unwrap();
let random_string = generator.generate(10, Some(Alphabet::Uppercase)).unwrap();
let allowed_chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
assert!(random_string.chars().all(|c| allowed_chars.contains(c)));
}
#[test]
fn test_digits_alphabet() {
let generator = RandomStringGenerator::new(&[Alphabet::Digits]).unwrap();
let random_string = generator.generate(10, None).unwrap();
let allowed_chars = "0123456789";
assert!(random_string.chars().all(|c| allowed_chars.contains(c)));
}
#[test]
fn test_special_characters() {
let generator = RandomStringGenerator::new(&[Alphabet::Special]).unwrap();
let random_string = generator.generate(5, None).unwrap();
let allowed_chars = "-_";
assert!(random_string.chars().all(|c| allowed_chars.contains(c)));
}
#[test]
fn test_multiple_alphabets() {
let generator = RandomStringGenerator::new(&[
Alphabet::Lowercase,
Alphabet::Uppercase,
Alphabet::Digits,
Alphabet::Special,
])
.unwrap();
let random_string = generator.generate(20, None).unwrap();
let allowed_chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_";
assert!(random_string.chars().all(|c| allowed_chars.contains(c)));
}