use super::*;
#[test]
fn validate_ass_names() {
assert!(validate_ass_name("Default"));
assert!(validate_ass_name("MyStyle"));
assert!(validate_ass_name("Style with spaces"));
assert!(!validate_ass_name("")); assert!(!validate_ass_name("Style,Name")); assert!(!validate_ass_name("Style:Name")); assert!(!validate_ass_name("Style{Name")); assert!(!validate_ass_name("Style\nName")); }
#[test]
fn normalize_field_values() {
assert_eq!(normalize_field_value(" value "), "value");
assert_eq!(normalize_field_value("\tvalue\t"), "value");
assert_eq!(normalize_field_value("value"), "value");
}
#[test]
fn numeric_parsing() {
assert_eq!(parse_numeric::<i32>("42").unwrap(), 42);
assert!((parse_numeric::<f32>("3.15").unwrap() - 3.15).abs() < f32::EPSILON);
assert!(parse_numeric::<i32>("invalid").is_err());
}
#[test]
fn validate_ass_name_edge_cases() {
assert!(validate_ass_name("Style\tName"));
assert!(!validate_ass_name("Style\nName")); assert!(!validate_ass_name("Style\rName")); assert!(!validate_ass_name("Style\x00Name")); assert!(!validate_ass_name("Style\x7FName"));
assert!(!validate_ass_name(",Style")); assert!(!validate_ass_name("Style,")); assert!(!validate_ass_name(":Style")); assert!(!validate_ass_name("Style:")); assert!(!validate_ass_name("{Style")); assert!(!validate_ass_name("Style}"));
let long_name = "a".repeat(1000);
assert!(validate_ass_name(&long_name));
assert!(validate_ass_name("Style中文"));
assert!(validate_ass_name("Style🎭"));
assert!(validate_ass_name("Стиль"));
}
#[test]
fn normalize_field_value_edge_cases() {
assert_eq!(normalize_field_value(""), "");
assert_eq!(normalize_field_value(" "), "");
assert_eq!(normalize_field_value("\t\t\t"), "");
assert_eq!(normalize_field_value(" \t \t "), "");
assert_eq!(normalize_field_value(" \t value \t "), "value");
assert_eq!(normalize_field_value("\n\rvalue\n\r"), "value");
assert_eq!(normalize_field_value(" val ue "), "val ue");
assert_eq!(normalize_field_value(" val\tue "), "val\tue");
}
#[test]
#[allow(clippy::float_cmp, clippy::approx_constant)]
fn parse_numeric_edge_cases() {
assert_eq!(parse_numeric::<u8>("255").unwrap(), 255u8);
assert!(parse_numeric::<u8>("256").is_err());
assert_eq!(parse_numeric::<i8>("127").unwrap(), 127i8);
assert_eq!(parse_numeric::<i8>("-128").unwrap(), -128i8);
assert!(parse_numeric::<i8>("128").is_err());
assert_eq!(parse_numeric::<f32>("0.0").unwrap(), 0.0f32);
assert_eq!(parse_numeric::<f32>("-0.0").unwrap(), -0.0f32);
assert!(parse_numeric::<f32>("inf").is_ok());
assert!(parse_numeric::<f32>("-inf").is_ok());
assert_eq!(parse_numeric::<i32>(" 42 ").unwrap(), 42i32);
assert_eq!(parse_numeric::<f32>(" \t 3.14 \t ").unwrap(), 3.14f32);
assert_eq!(parse_numeric::<i32>("00042").unwrap(), 42i32);
assert_eq!(parse_numeric::<f32>("0003.140").unwrap(), 3.14f32);
assert_eq!(parse_numeric::<f32>("1e2").unwrap(), 100.0f32);
assert_eq!(parse_numeric::<f32>("1.5e-2").unwrap(), 0.015f32);
assert!(parse_numeric::<i32>("").is_err());
assert!(parse_numeric::<i32>("abc").is_err());
assert!(parse_numeric::<i32>("12.34").is_err()); assert!(parse_numeric::<f32>("12.34.56").is_err()); }