cranpose-app-shell 0.1.146

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

#[test]
fn retained_redraw_traversal_keeps_wide_child_lists_and_clears_only_attached_nodes() {
    cranpose_ui::AppContext::new().enter(|| {
        let mut applier = MemoryApplier::new();
        let children: Vec<_> = (0..16)
            .map(|_| {
                let node = LayoutNode::new_virtual();
                node.clear_needs_redraw();
                applier.create(Box::new(node))
            })
            .collect();
        let detached = applier.create(Box::new(LayoutNode::new_virtual()));
        let mut parent = LayoutNode::new_virtual();
        parent.clear_needs_redraw();
        parent.children.clone_from(&children);
        let root = applier.create(Box::new(parent));
        for id in [children[0], children[15], detached] {
            applier
                .with_node::<LayoutNode, _>(id, |node| node.mark_needs_redraw())
                .expect("node to redraw");
        }

        let mut dirty = Vec::new();
        collect_retained_redraw_nodes(&mut applier, root, &mut dirty);
        assert_eq!(dirty, [children[0], children[15]]);
        dirty.clear();
        collect_retained_redraw_nodes(&mut applier, root, &mut dirty);
        assert!(dirty.is_empty());
        assert!(
            applier
                .with_node::<LayoutNode, _>(detached, |node| node.needs_redraw())
                .expect("detached node")
        );
    });
}

#[test]
fn the_frame_overlay_is_drawn_on_the_applications_own_window_only() {
    assert!(dev_overlay_belongs_on(RootId::Primary, true));
    assert!(
        !dev_overlay_belongs_on(RootId::Window(7), true),
        "a window of its own would repeat the application's numbers over content it does not own"
    );
    assert!(!dev_overlay_belongs_on(RootId::Primary, false));
}