osu-file-parser 1.1.0

A crate to parse an osu! beatmap file
Documentation
use crate::osu_file::{events::storyboard::cmds::Command, VersionedFromStr};

#[test]
fn storyboard_cmd_errors() {
    let missing_easing = "F";
    let invalid_easing = "F,this is wrong!,123";
    let missing_start_time = "F,0";
    let invalid_start_time = "F,0,foo";
    let missing_end_time = "F,0,0";
    let invalid_end_time = "F,0,0,foo";
    let missing_command_params = "F,0,0,0";
    let invalid_event = "foo,0,0,0,0,0,0";
    let missing_loop_count = "L,0";

    assert_eq!(
        "Unknown command type",
        Command::from_str(invalid_event, 14)
            .unwrap_err()
            .to_string()
    );
    assert_eq!(
        "Missing `easing` field",
        Command::from_str(missing_easing, 14)
            .unwrap_err()
            .to_string()
    );
    assert_eq!(
        "Invalid `easing` value",
        Command::from_str(invalid_easing, 14)
            .unwrap_err()
            .to_string()
    );
    assert_eq!(
        "Missing `start_time` field",
        Command::from_str(missing_start_time, 14)
            .unwrap_err()
            .to_string()
    );
    assert_eq!(
        "Invalid `start_time` value",
        Command::from_str(invalid_start_time, 14)
            .unwrap_err()
            .to_string()
    );
    assert_eq!(
        "Missing `end_time` field",
        Command::from_str(missing_end_time, 14)
            .unwrap_err()
            .to_string()
    );
    assert_eq!(
        "Invalid `end_time` value",
        Command::from_str(invalid_end_time, 14)
            .unwrap_err()
            .to_string()
    );
    assert_eq!(
        "Missing `start_opacity` field",
        Command::from_str(missing_command_params, 14)
            .unwrap_err()
            .to_string()
    );
    assert_eq!(
        "Missing `loop_count` field",
        Command::from_str(missing_loop_count, 14)
            .unwrap_err()
            .to_string()
    );
}

#[test]
fn continuing_error() {
    let colour_invalid_red = "C,0,0,1,foo";
    let missing_green = "C,0,0,1,255";
    let invalid_continuing_red = "C,0,0,0,255,255,255,foo";
    let missing_second_field = "V,0,0,0,0.5";

    assert_eq!(
        "Invalid continuing colour value",
        Command::from_str(invalid_continuing_red, 14)
            .unwrap_err()
            .to_string()
    );
    assert_eq!(
        "Invalid `red` value",
        Command::from_str(colour_invalid_red, 14)
            .unwrap_err()
            .to_string()
    );
    assert_eq!(
        "Missing `green` field",
        Command::from_str(missing_green, 14)
            .unwrap_err()
            .to_string()
    );
    assert_eq!(
        "Missing `scale_y` field",
        Command::from_str(missing_second_field, 14)
            .unwrap_err()
            .to_string()
    );
}