rpk-common 0.1.0

RPK common fields between config tool and firmware builder
Documentation
use super::*;

#[test]
fn speed_test() {
    let config = MouseConfig {
        movement: MouseAnalogSetting {
            curve: (0.08, 0.5),
            max_time: 2_000.0,
            min_ticks_per_ms: 0.02,
            max_ticks_per_ms: 3.0,
        },
        scroll: MouseAnalogSetting {
            curve: (0.0, 0.0),
            max_time: 5_000.0,
            min_ticks_per_ms: 0.01,
            max_ticks_per_ms: 0.5,
        },
    };

    let time_since_last_report = 32.0;
    let mm = MouseMove {
        start: 5,
        fraction: RefCell::new(0.0),
        delta: -1,
    };
    let ms = MouseMove {
        start: 5,
        fraction: RefCell::new(0.0),
        delta: 1,
    };

    let now = 21;

    assert_eq!(
        config
            .movement
            .mouse_delta(time_since_last_report, now, &mm),
        0
    );

    {
        let fr = mm.fraction.borrow();
        assert!((*fr - 0.8306).abs() < 1e-4, "wrong fraction: {fr:.4}");
    }

    assert_eq!(
        config.scroll.mouse_delta(time_since_last_report, now, &ms),
        0
    );

    let now = 37;

    assert_eq!(
        config
            .movement
            .mouse_delta(time_since_last_report, now, &mm),
        -1
    );

    let now = 100;

    assert_eq!(
        config
            .movement
            .mouse_delta(time_since_last_report, now, &mm),
        -2
    );

    let now = 5000;
    assert_eq!(
        config
            .movement
            .mouse_delta(time_since_last_report, now, &mm),
        -97
    );

    {
        let fr = mm.fraction.borrow();
        assert!((*fr - 0.4568).abs() < 1e-4, "{fr:.4}");
    }
}