use super::*;
#[test]
fn parse_hex_valid() {
assert_eq!(parse_hex_u32("FF"), Some(0xFF));
assert_eq!(parse_hex_u32("00FF00FF"), Some(0x00FF_00FF));
assert_eq!(parse_hex_u32("12345678"), Some(0x1234_5678));
assert_eq!(parse_hex_u32("abcdef"), Some(0x00ab_cdef));
assert_eq!(parse_hex_u32("ABCDEF"), Some(0x00AB_CDEF));
}
#[test]
fn parse_hex_invalid() {
assert_eq!(parse_hex_u32("GG"), None);
assert_eq!(parse_hex_u32("123456789"), None); assert_eq!(parse_hex_u32(""), None);
assert_eq!(parse_hex_u32("XYZ"), None);
}
#[test]
fn parse_hex_edge_cases() {
assert_eq!(parse_hex_u32("0"), Some(0));
assert_eq!(parse_hex_u32("F"), Some(15));
assert_eq!(parse_hex_u32("FFFFFFFF"), Some(0xFFFF_FFFF));
assert_eq!(parse_hex_u32("aBcDeF"), Some(0x00ab_cdef));
assert_eq!(parse_hex_u32("AbCdEf"), Some(0x00ab_cdef));
assert_eq!(parse_hex_u32("00000001"), Some(1));
assert_eq!(parse_hex_u32("0000FF00"), Some(0xFF00));
}
#[test]
fn parse_hex_invalid_length() {
assert_eq!(parse_hex_u32("123456789"), None);
assert_eq!(parse_hex_u32("FFFFFFFFF"), None);
}
#[test]
fn parse_hex_invalid_characters() {
assert_eq!(parse_hex_u32("GHIJ"), None);
assert_eq!(parse_hex_u32("123G"), None);
assert_eq!(parse_hex_u32("12 34"), None); assert_eq!(parse_hex_u32("12-34"), None); assert_eq!(parse_hex_u32("FF\n"), None); }
#[test]
fn parse_hex_overflow_handling() {
assert_eq!(parse_hex_u32("FFFFFFFF"), Some(u32::MAX));
}
#[test]
fn parse_hex_scalar_fallback() {
assert_eq!(parse_hex_u32("A"), Some(10));
assert_eq!(parse_hex_u32("FF"), Some(255));
assert_eq!(parse_hex_u32("123"), Some(0x123));
}
#[test]
fn parse_hex_case_sensitivity() {
assert_eq!(parse_hex_u32("abcdef"), parse_hex_u32("ABCDEF"));
assert_eq!(parse_hex_u32("deadbeef"), parse_hex_u32("DEADBEEF"));
}
#[test]
fn parse_hex_maximum_value() {
assert_eq!(parse_hex_u32("FFFFFFFF"), Some(u32::MAX));
assert_eq!(parse_hex_u32("ffffffff"), Some(u32::MAX));
}