livesplit-core 0.13.0

livesplit-core is a library that provides a lot of functionality for creating a speedrun timer.
Documentation
use crate::util::tests_helper::create_timer;

#[test]
fn can_set_variable() {
    let mut timer = create_timer(&["A"]);

    assert!(timer.run().metadata().custom_variable("Points").is_none());

    timer.set_custom_variable("Points", "10");
    assert_eq!(
        timer
            .run()
            .metadata()
            .custom_variable_value("Points")
            .unwrap(),
        "10"
    );

    timer.start();

    assert_eq!(
        timer
            .run()
            .metadata()
            .custom_variable_value("Points")
            .unwrap(),
        "10"
    );

    timer.set_custom_variable("Points", "20");

    assert_eq!(
        timer
            .run()
            .metadata()
            .custom_variable_value("Points")
            .unwrap(),
        "20"
    );

    timer.set_custom_variable("Points", "30");

    assert_eq!(
        timer
            .run()
            .metadata()
            .custom_variable_value("Points")
            .unwrap(),
        "30"
    );

    timer.split();

    assert_eq!(
        timer
            .run()
            .metadata()
            .custom_variable_value("Points")
            .unwrap(),
        "30"
    );

    timer.set_custom_variable("Points", "40");

    assert_eq!(
        timer
            .run()
            .metadata()
            .custom_variable_value("Points")
            .unwrap(),
        "40"
    );

    timer.set_custom_variable("Points", "50");

    assert_eq!(
        timer
            .run()
            .metadata()
            .custom_variable_value("Points")
            .unwrap(),
        "50"
    );

    timer.reset(true);

    assert_eq!(
        timer
            .run()
            .metadata()
            .custom_variable_value("Points")
            .unwrap(),
        "50"
    );

    timer.set_custom_variable("Points", "60");

    assert_eq!(
        timer
            .run()
            .metadata()
            .custom_variable_value("Points")
            .unwrap(),
        "60"
    );

    assert!(
        !timer
            .run()
            .metadata()
            .custom_variable("Points")
            .unwrap()
            .is_permanent,
    );
}