cranpose-testing 0.1.146

Testing utilities and harness for Cranpose
use std::{cell::Cell, rc::Rc};

use cranpose_testing::create_headless_robot_test;
use cranpose_ui::{Box, BoxSpec, Modifier, Size};

#[test]
fn headless_robot_dispatches_pointer_and_accessibility_activation() {
    let count = Rc::new(Cell::new(0));
    let recorded = Rc::clone(&count);
    let mut robot = create_headless_robot_test(200, 100, move || {
        let recorded = Rc::clone(&recorded);
        Box(
            Modifier::empty()
                .size(Size::new(100.0, 48.0))
                .content_description("Increment")
                .clickable(move |_| recorded.set(recorded.get() + 1)),
            BoxSpec::default(),
            || {},
        );
    });
    assert!(robot.click_at(50.0, 24.0));
    assert_eq!(count.get(), 1);
    robot.shell_mut().set_semantics_enabled(true);
    let tree = cranpose_testing::placed_semantics_from_shell(robot.shell_mut()).expect("control");
    let control = tree
        .flatten()
        .into_iter()
        .find(|node| node.clickable)
        .expect("button");
    assert!(
        robot
            .shell_mut()
            .accessibility_activate(control.node_id, None)
    );
    assert_eq!(count.get(), 2);
    assert!(!robot.click_at(150.0, 75.0));
    assert_eq!(count.get(), 2);
}