cranpose-app-shell 0.1.147

Application orchestration shell for Cranpose
Documentation
use super::*;

#[test]
fn reader_reveal_rejects_hidden_and_disabled_ancestors_or_targets() {
    for blocked_target in [false, true] {
        for hidden in [false, true] {
            let target = SemanticsNode {
                node_id: 2,
                ..Default::default()
            };
            let mut root = SemanticsNode {
                node_id: 1,
                children: vec![target],
                ..Default::default()
            };
            assert_eq!(scroll_ancestors(&root, 2), Some(Vec::new()));
            let blocked = if blocked_target {
                &mut root.children[0]
            } else {
                &mut root
            };
            blocked.hidden = hidden;
            blocked.enabled = hidden;
            assert_eq!(scroll_ancestors(&root, 2), None);
        }
    }
}

#[test]
fn reveal_uses_minimal_movement_on_either_axis() {
    let range = Some(ScrollAxisRange::new(100.0, 1000.0, false));
    assert_eq!(axis_delta(20.0, 40.0, 0.0, 120.0, range), 0.0);
    assert_eq!(axis_delta(110.0, 40.0, 0.0, 120.0, range), 30.0);
    assert_eq!(axis_delta(-10.0, 40.0, 0.0, 120.0, range), -10.0);
    assert_eq!(axis_delta(-20.0, 200.0, 0.0, 120.0, range), 0.0);
}

#[test]
fn reveal_respects_reverse_scrolling_and_unavailable_directions() {
    let reversed = Some(ScrollAxisRange::new(100.0, 1000.0, true));
    assert_eq!(axis_delta(110.0, 40.0, 0.0, 120.0, reversed), -30.0);
    let start = Some(ScrollAxisRange::new(0.0, 1000.0, false));
    assert_eq!(axis_delta(-10.0, 40.0, 0.0, 120.0, start), 0.0);
    let end = Some(ScrollAxisRange::new(1000.0, 1000.0, false));
    assert_eq!(axis_delta(110.0, 40.0, 0.0, 120.0, end), 0.0);
}

#[test]
fn reveal_rejects_missing_ranges_and_invalid_geometry() {
    assert_eq!(axis_delta(110.0, 40.0, 0.0, 120.0, None), 0.0);
    let range = Some(ScrollAxisRange::new(0.0, 1000.0, false));
    for size in [0.0, -1.0, f32::NAN, f32::INFINITY] {
        assert_eq!(axis_delta(110.0, size, 0.0, 120.0, range), 0.0);
    }
}