livesplit-core 0.13.0

livesplit-core is a library that provides a lot of functionality for creating a speedrun timer.
Documentation
use super::Component;
use crate::{
    util::tests_helper::{self, make_progress_run_with_splits_opt, run_with_splits, start_run},
    Timer,
};

fn create_timer() -> Timer {
    let mut timer = tests_helper::create_timer(&["A", "B"]);
    run_with_splits(&mut timer, &[12.3, 45.6]);
    timer
}

#[test]
fn is_empty_when_no_attempt_is_started() {
    let component = Component::new();
    let timer = create_timer();
    let state = component.state(&timer);
    assert_eq!(&*state.value, "");
}

#[test]
fn is_not_empty_when_attempt_is_started() {
    let component = Component::new();
    let mut timer = create_timer();
    start_run(&mut timer);
    make_progress_run_with_splits_opt(&mut timer, &[Some(467.23)]);
    let state = component.state(&timer);
    assert_eq!(&*state.value, "33.30");
}

#[test]
fn is_not_empty_when_attempt_is_paused() {
    let component = Component::new();
    let mut timer = create_timer();
    start_run(&mut timer);
    make_progress_run_with_splits_opt(&mut timer, &[Some(467.23)]);
    timer.pause();
    let state = component.state(&timer);
    assert_eq!(&*state.value, "33.30");
}

#[test]
fn is_empty_when_attempt_is_finished() {
    let component = Component::new();
    let mut timer = create_timer();
    start_run(&mut timer);
    make_progress_run_with_splits_opt(&mut timer, &[Some(467.23), Some(742.65)]);
    let state = component.state(&timer);
    assert_eq!(&*state.value, "");
}