osu-file-parser 1.1.0

A crate to parse an osu! beatmap file
Documentation
use crate::osu_file::{hitobjects::HitObject, VersionedFromStr, VersionedToString};
use pretty_assertions::assert_eq;

#[test]
fn hitobjects_parse() {
    let hitcircle_str = "221,350,9780,1,0,0:0:0:0:";
    let slider_str = "31,85,3049,2,0,B|129:55|123:136|228:86,1,172.51,2|0,3:2|0:2,0:2:0:0:";
    let spinner_str = "256,192,33598,12,0,431279,0:0:0:0:";
    let osu_mania_hold_str = "51,192,350,128,2,849:0:0:0:0:";

    let hitcircle = HitObject::from_str(hitcircle_str, 14).unwrap().unwrap();
    let slider = HitObject::from_str(slider_str, 14).unwrap().unwrap();
    let spinner = HitObject::from_str(spinner_str, 14).unwrap().unwrap();
    let osu_mania_hold = HitObject::from_str(osu_mania_hold_str, 14)
        .unwrap()
        .unwrap();

    assert_eq!(hitcircle_str, hitcircle.to_string(14).unwrap());
    assert_eq!(slider_str, slider.to_string(14).unwrap());
    assert_eq!(spinner_str, spinner.to_string(14).unwrap());
    assert_eq!(osu_mania_hold_str, osu_mania_hold.to_string(14).unwrap());
}

#[test]
fn short_hand() {
    let hitcircle_str = "221,350,9780,1,0";
    let slider_str = "31,85,3049,2,0,B|129:55|123:136|228:86,1,172.51";

    let hitcircle = HitObject::from_str(hitcircle_str, 14).unwrap().unwrap();
    let slider = HitObject::from_str(slider_str, 14).unwrap().unwrap();

    assert_eq!(hitcircle_str, hitcircle.to_string(14).unwrap());
    assert_eq!(slider_str, slider.to_string(14).unwrap());
}