Radish alpha
h
Radicle Heartwood Protocol & Stack
Radicle
Git (anonymous pull)
Log in to clone via SSH
test: add alphanumeric generator
Fintan Halpenny committed 8 months ago
commit 8ba5db042629e69ff9acb1c3f90b12131e26b26f
parent 2147aa8fb74bf78b152f39abdbdf682ffd80db11
1 file changed +19 -0
modified crates/radicle/src/test/arbitrary.rs
@@ -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);