From b48a2d756203f2122e61d30f1acc66e391b0bcc2 Mon Sep 17 00:00:00 2001 From: LucasDLTG Date: Mon, 20 Jul 2026 20:31:54 +0200 Subject: [PATCH] feat: add test common --- src/common/validator.rs | 90 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) diff --git a/src/common/validator.rs b/src/common/validator.rs index 500675a..7689a70 100644 --- a/src/common/validator.rs +++ b/src/common/validator.rs @@ -52,3 +52,93 @@ pub(crate) fn validate_bitmask( Ok(()) } + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn validate_range_accepts_bounds() { + assert!(validate_range(0u8, 0..=10, || "".into()).is_ok()); + assert!(validate_range(10u8, 0..=10, || "".into()).is_ok()); + assert!(validate_range(5u8, 0..=10, || "".into()).is_ok()); + } + + #[test] + fn validate_range_rejects_out_of_range() { + let err = validate_range(11u8, 0..=10, || "bad value".into()) + .unwrap_err(); + + assert!(err.to_string().contains("bad value")); + } + + #[test] + fn validate_ascii_padded_accepts_ascii_and_padding() { + assert!(validate_ascii_padded( + b"ABC ", + 4, + b' ', + "name", + ) + .is_ok()); + + assert!(validate_ascii_padded( + &[b'A', 0, 0, 0], + 4, + 0, + "password", + ) + .is_ok()); + } + + #[test] + fn validate_ascii_padded_rejects_wrong_length() { + assert!(validate_ascii_padded( + b"ABC", + 4, + b' ', + "name", + ) + .is_err()); + } + + #[test] + fn validate_ascii_padded_rejects_non_ascii() { + assert!(validate_ascii_padded( + &[0xFF, b'A', b'B', b'C'], + 4, + b' ', + "name", + ) + .is_err()); + } + + #[test] + fn validate_bitmask_accepts_valid_bits() { + assert!(validate_bitmask( + 0b0101, + 0b1111, + || "".into(), + ) + .is_ok()); + + assert!(validate_bitmask( + 0, + 0b1111, + || "".into(), + ) + .is_ok()); + } + + #[test] + fn validate_bitmask_rejects_invalid_bits() { + let err = validate_bitmask( + 0b10000, + 0b01111, + || "invalid mask".into(), + ) + .unwrap_err(); + + assert!(err.to_string().contains("invalid mask")); + } +} \ No newline at end of file