hail_core 0.3.0

a library for implementing a speedrun timer
Documentation
mod common;
use common::*;
use hail_core::types::*;

#[test]
#[ignore]
fn status_changes() {
    let mut s = init_noofset();
    s.request(StateChangeRequest::Split);
    s.update();
    sleep(100); // t = 100
    s.update();
    assert!(!s.in_offset());
    s.update();
    assert_eq!(s.rta.active_gold_status, SplitStatus::Ahead); // ahead at this point
    sleep(750); // t = 850
    s.update();
    assert_eq!(s.rta.active_gold_status, SplitStatus::Behind); // should be behind by 50ms
    s.request(StateChangeRequest::Split);
    s.update();
    assert_eq!(s.rta.active_gold_status, SplitStatus::Ahead); // still ahead since the second segment hasn't ended yet
    sleep(60); // t = 910
    s.update();
    assert_eq!(s.rta.active_gold_status, SplitStatus::Gaining); // behind but less behind than before (gained 40ms)
    s.request(StateChangeRequest::Split);
    s.update();
    sleep(40); // t = 950
    s.request(StateChangeRequest::Split);
    s.update();
    assert_eq!(s.rta.active_gold_status, SplitStatus::Ahead);
    sleep(140); // t = 1090
    s.update();
    assert_eq!(s.rta.active_gold_status, SplitStatus::Losing); // we have lost 40ms
}