use crate::time::Time;
#[test]
fn time_from() {
if let Ok(time) = Time::from("17:30") {
assert_eq!(time.hours, 17);
assert_eq!(time.minutes, 30);
} else {
panic!("Should be able to create time struct");
}
if let Ok(time) = Time::from("0:00") {
assert_eq!(time.hours, 0);
assert_eq!(time.minutes, 0);
} else {
panic!("Should be able to create time struct");
}
if let Ok(_) = Time::from("1:") {
panic!("Should not be able to parse time.(1:)");
}
if let Ok(_) = Time::from(":30") {
panic!("Should not be able to parse time.(:30)");
}
if let Ok(_) = Time::from("-1:30") {
panic!("Should not be able to parse time.(-1:30)");
}
if let Ok(_) = Time::from("10:-30") {
panic!("Should not be able to parse time.(10:-30)");
}
if let Ok(_) = Time::from("24:30") {
panic!("Should not be able to parse time.(24:30)");
}
if let Ok(_) = Time::from("10:61") {
panic!("Should not be able to parse time.(10:61)");
}
if let Err(msg) = Time::from("1") {
assert_eq!(msg, String::from("Invalid time. Use format [hh:mm]."));
} else {
panic!("Should not be able to parse time(1)");
}
}
#[test]
fn time_seconds() -> Result<(), String> {
let time = Time::from("0:0")?;
assert_eq!(time.secs(), 0);
let time = Time::from("12:00")?;
assert_eq!(time.secs(), 43_200);
let time = Time::from("17:30")?;
assert_eq!(time.secs(), 63_000);
Ok(())
}
#[test]
fn time_percent() -> Result<(), String> {
let time = Time::from("0:0")?;
assert_eq!(time.percent(), 0.0);
let time = Time::from("12:00")?;
assert_eq!(time.percent(), 0.5);
let time = Time::from("18:00")?;
assert_eq!(time.percent(), 0.75);
Ok(())
}
#[test]
fn time_str() -> Result<(), String> {
let time = Time::from("0:0")?;
assert_eq!(&time.percent_str(), "0.00%");
let time = Time::from("12:00")?;
assert_eq!(&time.percent_str(), "50.00%");
let time = Time::from("18:00")?;
assert_eq!(&time.percent_str(), "75.00%");
Ok(())
}
#[test]
#[ignore]
fn print_current() {
let time = Time::current();
println!("{}:{}", time.hours, time.minutes);
}