cranpose 0.1.162

Cranpose runtime and UI facade
Documentation
use super::*;

#[test]
fn rotary_encoder_source_is_detected_as_a_bit_flag() {
    assert!(is_rotary_encoder_source(ANDROID_SOURCE_ROTARY_ENCODER));
    assert!(is_rotary_encoder_source(
        ANDROID_SOURCE_ROTARY_ENCODER | 0x0000_0101
    ));
}

#[test]
fn non_rotary_sources_are_rejected() {
    assert!(!is_rotary_encoder_source(0x0000_1002));
    assert!(!is_rotary_encoder_source(0x0000_2002));
    assert!(!is_rotary_encoder_source(0));
}

#[test]
fn rotary_scroll_factor_scales_with_density() {
    let base = cranpose_app_shell::DEFAULT_ROTARY_SCROLL_FACTOR_DP;

    assert_eq!(android_rotary_scroll_factor(1.0), base);
    assert_eq!(android_rotary_scroll_factor(2.0), base * 2.0);
}

#[test]
fn rotary_scroll_factor_rejects_unusable_densities() {
    let base = cranpose_app_shell::DEFAULT_ROTARY_SCROLL_FACTOR_DP;

    assert_eq!(android_rotary_scroll_factor(0.0), base);
    assert_eq!(android_rotary_scroll_factor(-2.0), base);
    assert_eq!(android_rotary_scroll_factor(f32::NAN), base);
    assert!(android_rotary_scroll_factor(f32::INFINITY).is_finite());
}

#[test]
fn tool_type_wins_when_it_identifies_the_device() {
    assert_eq!(
        resolve_pointer_source(AndroidToolKind::Finger, AndroidSourceKind::Mouse),
        PointerSource::Touch
    );
    assert_eq!(
        resolve_pointer_source(AndroidToolKind::Mouse, AndroidSourceKind::Touchscreen),
        PointerSource::Mouse
    );
    assert_eq!(
        resolve_pointer_source(AndroidToolKind::Stylus, AndroidSourceKind::Other),
        PointerSource::Stylus
    );
}

#[test]
fn unreported_tool_type_falls_back_to_touchscreen_source() {
    assert_eq!(
        resolve_pointer_source(
            AndroidToolKind::Indeterminate,
            AndroidSourceKind::Touchscreen
        ),
        PointerSource::Touch
    );
    assert!(PointerSource::Touch.is_touch_like());
}

#[test]
fn unreported_tool_type_uses_the_source_class() {
    assert_eq!(
        resolve_pointer_source(AndroidToolKind::Indeterminate, AndroidSourceKind::Stylus),
        PointerSource::Stylus
    );
    assert_eq!(
        resolve_pointer_source(AndroidToolKind::Indeterminate, AndroidSourceKind::Mouse),
        PointerSource::Mouse
    );
    assert_eq!(
        resolve_pointer_source(AndroidToolKind::Indeterminate, AndroidSourceKind::Other),
        PointerSource::Unknown
    );
}