subtr-actor 0.9.1

Rocket League replay transformer
Documentation
use super::*;

fn rush_event(is_team_0: bool, attackers: usize, defenders: usize) -> RushEvent {
    RushEvent {
        start_time: 1.0,
        start_frame: 10,
        end_time: 2.0,
        end_frame: 20,
        is_team_0,
        attackers,
        defenders,
    }
}

#[test]
fn rush_stats_records_events_as_labeled_counts() {
    let mut stats = RushStats::default();

    stats.record(&rush_event(true, 2, 1));
    stats.record(&rush_event(true, 2, 1));
    stats.record(&rush_event(false, 3, 2));

    assert_eq!(
        stats.rush_count_with_labels(&[StatLabel::new("team", "team_zero")]),
        2
    );
    assert_eq!(
        stats.rush_count_with_labels(&[
            StatLabel::new("team", "team_zero"),
            StatLabel::new("attackers", "2"),
            StatLabel::new("defenders", "1"),
        ]),
        2
    );
    assert_eq!(
        stats.rush_count_with_labels(&[
            StatLabel::new("team", "team_one"),
            StatLabel::new("attackers", "3"),
            StatLabel::new("defenders", "2"),
        ]),
        1
    );
}

#[test]
fn rush_stats_keeps_legacy_fields_synced_from_labeled_counts() {
    let mut stats = RushStats::default();

    stats.record(&rush_event(true, 2, 1));
    stats.record(&rush_event(false, 3, 3));

    assert_eq!(stats.team_zero_count, 1);
    assert_eq!(stats.team_zero_two_v_one_count, 1);
    assert_eq!(stats.team_zero_two_v_two_count, 0);
    assert_eq!(stats.team_one_count, 1);
    assert_eq!(stats.team_one_three_v_three_count, 1);
    assert_eq!(
        stats.for_team(false),
        RushTeamStats {
            count: 1,
            three_v_three_count: 1,
            ..Default::default()
        }
    );
}