envision 0.15.1

A ratatui framework for collaborative TUI development with headless testing support
Documentation
use super::*;

#[test]
fn test_node_new() {
    let node = TreeNode::new("Label", "data");
    assert_eq!(node.label(), "Label");
    assert_eq!(node.data(), &"data");
    assert!(!node.is_expanded());
    assert!(!node.has_children());
}

#[test]
fn test_node_new_expanded() {
    let node: TreeNode<()> = TreeNode::new_expanded("Label", ());
    assert!(node.is_expanded());
}

#[test]
fn test_node_set_label() {
    let mut node = TreeNode::new("Old", ());
    node.set_label("New");
    assert_eq!(node.label(), "New");
}

#[test]
fn test_node_data_mut() {
    let mut node = TreeNode::new("Label", 42);
    *node.data_mut() = 100;
    assert_eq!(node.data(), &100);
}

#[test]
fn test_node_add_child() {
    let mut parent = TreeNode::new("Parent", ());
    parent.add_child(TreeNode::new("Child 1", ()));
    parent.add_child(TreeNode::new("Child 2", ()));

    assert!(parent.has_children());
    assert_eq!(parent.children().len(), 2);
}

#[test]
fn test_node_children_mut() {
    let mut parent = TreeNode::new("Parent", ());
    parent.add_child(TreeNode::new("Child", ()));

    parent.children_mut()[0].set_label("Modified");
    assert_eq!(parent.children()[0].label(), "Modified");
}

#[test]
fn test_node_expand_collapse() {
    let mut node = TreeNode::new("Node", ());
    assert!(!node.is_expanded());

    node.expand();
    assert!(node.is_expanded());

    node.collapse();
    assert!(!node.is_expanded());
}

#[test]
fn test_node_toggle() {
    let mut node = TreeNode::new("Node", ());
    assert!(!node.is_expanded());

    node.toggle();
    assert!(node.is_expanded());

    node.toggle();
    assert!(!node.is_expanded());
}

#[test]
fn test_node_set_expanded() {
    let mut node = TreeNode::new("Node", ());
    node.set_expanded(true);
    assert!(node.is_expanded());
    node.set_expanded(false);
    assert!(!node.is_expanded());
}

#[test]
fn test_node_clone() {
    let mut node = TreeNode::new("Parent", "data");
    node.add_child(TreeNode::new("Child", "child_data"));
    node.expand();

    let cloned = node.clone();
    assert_eq!(cloned.label(), "Parent");
    assert_eq!(cloned.data(), &"data");
    assert!(cloned.is_expanded());
    assert_eq!(cloned.children().len(), 1);
}