dancepredictor 0.1.1

StepMania Step Generator
Documentation
use crate::{DanceStage, FootPlacement, StepGraph};
use danceparser::{NoteKind, Row};

#[test]
fn test_graph_brackets_instead_of_jumps() {
    let dance_stage = DanceStage::ddr_solo();
    let mut graph = StepGraph::new(dance_stage);
    let dt = 0.1;
    graph.append(
        1.0 * dt,
        &Row {
            columns: vec![
                NoteKind::Tap,
                NoteKind::Empty,
                NoteKind::Empty,
                NoteKind::Empty,
            ],
        },
    );
    graph.append(
        2.0 * dt,
        &Row {
            columns: vec![
                NoteKind::Empty,
                NoteKind::Empty,
                NoteKind::Tap,
                NoteKind::Tap,
            ],
        },
    );
    graph.append(
        3.0 * dt,
        &Row {
            columns: vec![
                NoteKind::Tap,
                NoteKind::Empty,
                NoteKind::Empty,
                NoteKind::Empty,
            ],
        },
    );
    graph.append(
        4.0 * dt,
        &Row {
            columns: vec![
                NoteKind::Empty,
                NoteKind::Tap,
                NoteKind::Empty,
                NoteKind::Tap,
            ],
        },
    );
    assert_eq!(
        graph.compute_path(),
        vec![
            FootPlacement::parse("L---").unwrap(),
            FootPlacement::parse("L-rR").unwrap(),
            FootPlacement::parse("L-rR").unwrap(),
            FootPlacement::parse("LR-r").unwrap(),
        ]
    );
}

#[test]
fn test_graph_jumps_instead_of_brackets() {
    let dance_stage = DanceStage::ddr_solo();
    let mut graph = StepGraph::new(dance_stage);
    let dt = 0.5;
    graph.append(
        1.0 * dt,
        &Row {
            columns: vec![
                NoteKind::Tap,
                NoteKind::Empty,
                NoteKind::Empty,
                NoteKind::Empty,
            ],
        },
    );
    graph.append(
        2.0 * dt,
        &Row {
            columns: vec![
                NoteKind::Empty,
                NoteKind::Empty,
                NoteKind::Tap,
                NoteKind::Tap,
            ],
        },
    );
    graph.append(
        3.0 * dt,
        &Row {
            columns: vec![
                NoteKind::Tap,
                NoteKind::Empty,
                NoteKind::Empty,
                NoteKind::Empty,
            ],
        },
    );
    assert_eq!(
        graph.compute_path(),
        vec![
            FootPlacement::parse("L---").unwrap(),
            FootPlacement::parse("--LR").unwrap(),
            FootPlacement::parse("L--R").unwrap(),
        ]
    );
}