tip 0.3.1

Time in percent. A time converter.
Documentation
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);
}