test: add alphanumeric generator

Add an `alphanumeric` function for generating alphanumeric strings.
This commit is contained in:
Fintan Halpenny 2024-11-21 11:35:50 +00:00
parent 8953ec4c87
commit 86119473b7
1 changed files with 19 additions and 0 deletions

View File

@ -84,6 +84,25 @@ pub fn nonempty_storage(size: usize) -> MockStorage {
storage
}
/// Generate a `String` of length `size`, only containing alphanumeric
/// characters, i.e. [A-Za-z0-9]
pub fn alphanumeric(size: usize) -> String {
let mut s = String::with_capacity(size);
for _ in 0..size {
let choice = gen::<u8>(size).clamp(0, 3);
let c = match choice {
// Generate A-Z
0 => gen::<u8>(size).clamp(0x41, 0x5A),
// Generate a-z
1 => gen::<u8>(size).clamp(0x61, 0x7A),
// Generate 0-9
_ => gen::<u8>(size).clamp(0x30, 0x39),
};
s.push(char::from(c));
}
s
}
pub fn gen<T: Arbitrary>(size: usize) -> T {
let mut gen = qcheck::Gen::new(size);