use super::*;
#[test]
fn parse_ass_times() {
assert_eq!(parse_ass_time("0:00:00.00").unwrap(), 0);
assert_eq!(parse_ass_time("0:00:01.00").unwrap(), 100);
assert_eq!(parse_ass_time("0:01:00.00").unwrap(), 6000);
assert_eq!(parse_ass_time("1:00:00.00").unwrap(), 360_000);
assert_eq!(parse_ass_time("0:01:30.50").unwrap(), 9050);
}
#[test]
fn parse_ass_times_invalid() {
assert!(parse_ass_time("invalid").is_err());
assert!(parse_ass_time("0:60:00.00").is_err()); assert!(parse_ass_time("0:00:60.00").is_err()); assert!(parse_ass_time("0:00:00.xx").is_err()); }
#[test]
fn parse_ass_time_fractional_is_libass_faithful() {
assert_eq!(parse_ass_time("0:00:00.5").unwrap(), 5); assert_eq!(parse_ass_time("0:00:00.05").unwrap(), 5); assert_eq!(parse_ass_time("0:00:00.50").unwrap(), 50); assert_eq!(parse_ass_time("0:00:00.098").unwrap(), 98); assert_eq!(parse_ass_time("0:00:27.021").unwrap(), 2721);
assert_eq!(parse_ass_time("0:00:00.100").unwrap(), 100);
assert_eq!(parse_ass_time("0:00:30.150").unwrap(), 3150);
}
#[test]
fn format_ass_times() {
assert_eq!(format_ass_time(0), "0:00:00.00");
assert_eq!(format_ass_time(100), "0:00:01.00");
assert_eq!(format_ass_time(6000), "0:01:00.00");
assert_eq!(format_ass_time(360_000), "1:00:00.00");
assert_eq!(format_ass_time(9050), "0:01:30.50");
}
#[test]
fn parse_ass_time_edge_cases() {
assert!(parse_ass_time("23:59:59.99").is_ok());
assert_eq!(parse_ass_time("0:0:0.0").unwrap(), 0);
assert_eq!(parse_ass_time("0:00:00.0").unwrap(), 0);
assert_eq!(parse_ass_time("0:00:00.00").unwrap(), 0);
assert!(parse_ass_time("0:00").is_err());
assert!(parse_ass_time("0").is_err());
assert!(parse_ass_time("").is_err());
assert!(parse_ass_time("0:0:0:0.0").is_err());
assert!(parse_ass_time("0:0:0.0.0").is_ok());
assert!(parse_ass_time("-1:00:00.00").is_err());
assert!(parse_ass_time("0:-1:00.00").is_err());
assert!(parse_ass_time("0:00:-1.00").is_err());
assert!(parse_ass_time("0:00:00.-1").is_err());
assert!(parse_ass_time("a:00:00.00").is_err());
assert!(parse_ass_time("0:b:00.00").is_err());
assert!(parse_ass_time("0:00:c.00").is_err());
assert!(parse_ass_time("0:00:00.d").is_err());
assert!(parse_ass_time("0:60:00.00").is_err()); assert!(parse_ass_time("0:00:60.00").is_err()); assert_eq!(parse_ass_time("0:00:00.100").unwrap(), 100); }
#[test]
fn format_ass_time_edge_cases() {
assert_eq!(format_ass_time(u32::MAX), "11930:27:52.95");
assert_eq!(format_ass_time(99), "0:00:00.99");
assert_eq!(format_ass_time(5999), "0:00:59.99");
assert_eq!(format_ass_time(359_999), "0:59:59.99");
assert_eq!(format_ass_time(1), "0:00:00.01");
assert_eq!(format_ass_time(10), "0:00:00.10");
assert_eq!(format_ass_time(601), "0:00:06.01");
assert_eq!(format_ass_time(3661), "0:00:36.61");
}