subtr-actor 0.9.1

Rocket League replay transformer
Documentation
use super::*;
use crate::stats::calculators::ball_control_test_support::*;

#[test]
fn keeps_ground_carry_stats_separate_from_air_dribbles() {
    let player_id = boxcars::RemoteId::Steam(1);
    let mut harness = BallCarryHarness::default();

    for i in 1..=5 {
        let x = i as f32 * 50.0;
        harness.update(
            &frame(i, i as f32 * 0.2),
            &ball(
                glam::Vec3::new(x, 0.0, 120.0),
                glam::Vec3::new(250.0, 0.0, 0.0),
            ),
            &PlayerFrameState {
                players: vec![player(
                    glam::Vec3::new(x, 0.0, 20.0),
                    glam::Vec3::new(250.0, 0.0, 0.0),
                )],
            },
            &touch_state(),
            &LivePlayState {
                is_live_play: true,
                ..LivePlayState::default()
            },
        );
    }

    harness.finish();

    let stats = harness.calculator.player_stats().get(&player_id).unwrap();
    assert_eq!(stats.carry_count, 1);
    assert!(harness
        .calculator
        .player_air_dribble_stats()
        .get(&player_id)
        .is_none());
    assert_eq!(
        harness.calculator.carry_events()[0].kind,
        BallCarryKind::Carry
    );
}