feat: add test common
This commit is contained in:
@@ -52,3 +52,93 @@ pub(crate) fn validate_bitmask(
|
|||||||
|
|
||||||
Ok(())
|
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"));
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user