use super::parsing::{
parse_bool_flag, parse_color_with_default, parse_float, parse_font_size, parse_percentage,
parse_u16, parse_u8,
};
#[test]
fn color_parsing() {
assert_eq!(
crate::utils::parse_bgr_color("&H000000FF").unwrap(),
[255, 0, 0, 0]
); assert_eq!(
crate::utils::parse_bgr_color("&H0000FF00").unwrap(),
[0, 255, 0, 0]
); assert_eq!(
crate::utils::parse_bgr_color("&H00FF0000").unwrap(),
[0, 0, 255, 0]
);
assert_eq!(
crate::utils::parse_bgr_color("&h000000FF").unwrap(),
[255, 0, 0, 0]
);
assert_eq!(
crate::utils::parse_bgr_color("&HFF0000").unwrap(),
[0, 0, 255, 0]
); assert_eq!(
crate::utils::parse_bgr_color("&H00FF00").unwrap(),
[0, 255, 0, 0]
); assert_eq!(
crate::utils::parse_bgr_color("&H0000FF").unwrap(),
[255, 0, 0, 0]
); }
#[test]
fn parse_font_size_edge_cases() {
assert!(parse_font_size("-10").is_err()); assert!(parse_font_size("0").is_err()); assert!(parse_font_size("1001").is_err()); assert!(parse_font_size("abc").is_err()); assert!(parse_font_size("").is_err());
assert!(parse_font_size("1").is_ok());
assert!(parse_font_size("72").is_ok());
assert!(parse_font_size("1000").is_ok());
}
#[test]
fn parse_color_with_default_invalid_formats() {
assert!(parse_color_with_default("invalid").is_err());
assert!(parse_color_with_default("&H").is_err());
assert!(parse_color_with_default("&HZZZZZ").is_err());
assert!(parse_color_with_default("12345G").is_err());
let default_color = parse_color_with_default("").unwrap();
assert_eq!(default_color, [255, 255, 255, 255]);
let whitespace_color = parse_color_with_default(" ").unwrap();
assert_eq!(whitespace_color, [255, 255, 255, 255]);
}
#[test]
fn parse_bool_flag_invalid_values() {
assert!(parse_bool_flag("2").is_err());
assert!(parse_bool_flag("-1").is_err());
assert!(parse_bool_flag("true").is_err());
assert!(parse_bool_flag("false").is_err());
assert!(parse_bool_flag("yes").is_err());
assert!(parse_bool_flag("no").is_err());
assert!(parse_bool_flag("").is_err());
assert!(!parse_bool_flag("0").unwrap());
assert!(parse_bool_flag("1").unwrap());
}
#[test]
#[allow(clippy::float_cmp)]
fn parse_percentage_invalid_values() {
assert!(parse_percentage("-10").is_err()); assert!(parse_percentage("1001").is_err()); assert!(parse_percentage("abc").is_err()); assert!(parse_percentage("").is_err());
assert_eq!(parse_percentage("0").unwrap(), 0.0);
assert_eq!(parse_percentage("100").unwrap(), 100.0);
assert_eq!(parse_percentage("1000").unwrap(), 1000.0);
}
#[test]
#[allow(clippy::float_cmp)]
fn parse_float_invalid_values() {
assert!(parse_float("abc").is_err());
assert!(parse_float("").is_err());
assert!(parse_float("1.2.3").is_err());
assert!(parse_float("1.2.3.4").is_err());
assert!(parse_float("not_a_number").is_err());
assert_eq!(parse_float("0").unwrap(), 0.0);
assert_eq!(parse_float("-10.5").unwrap(), -10.5);
assert_eq!(parse_float("123.456").unwrap(), 123.456);
}
#[test]
fn parse_u8_invalid_values() {
assert!(parse_u8("256").is_err()); assert!(parse_u8("-1").is_err()); assert!(parse_u8("abc").is_err()); assert!(parse_u8("").is_err());
assert_eq!(parse_u8("0").unwrap(), 0);
assert_eq!(parse_u8("255").unwrap(), 255);
}
#[test]
fn parse_u16_invalid_values() {
assert!(parse_u16("65536").is_err()); assert!(parse_u16("-1").is_err()); assert!(parse_u16("abc").is_err()); assert!(parse_u16("").is_err());
assert_eq!(parse_u16("0").unwrap(), 0);
assert_eq!(parse_u16("65535").unwrap(), 65535);
}