tawasuyu

tawasuyu/taffy

A high performance rust-powered UI layout library

HTML 5334Rust 85Markdown 12TOML 91813 Definiciones

⎇ a26a7d4db504ae855ff17373114a23981a726f5e tests/node.rs Rust · 126 líneas · 4.0 KB Historia Quién tocó qué crudo

Add unit tests for node api a26a7d4db · Emil Sjölander ·

1#[cfg(test)]
2mod node {
3    use stretch::node::Node;
4    use stretch::style::*;
5
6    #[test]
7    fn children() {
8        let child1 = Node::new(Style::default(), vec![]);
9        let child2 = Node::new(Style::default(), vec![]);
10        let node = Node::new(Style::default(), vec![&child1, &child2]);
11
12        assert_eq!(node.children().len(), 2);
13        assert_eq!(node.children()[0], child1);
14        assert_eq!(node.children()[1], child2);
15    }
16
17    #[test]
18    fn add_child() {
19        let mut node = Node::new(Style::default(), vec![]);
20        assert_eq!(node.children().len(), 0);
21
22        node.add_child(&Node::new(Style::default(), vec![]));
23        assert_eq!(node.children().len(), 1);
24
25        node.add_child(&Node::new(Style::default(), vec![]));
26        assert_eq!(node.children().len(), 2);
27    }
28
29    #[test]
30    fn remove_child() {
31        let child1 = Node::new(Style::default(), vec![]);
32        let child2 = Node::new(Style::default(), vec![]);
33
34        let mut node = Node::new(Style::default(), vec![&child1, &child2]);
35        assert_eq!(node.children().len(), 2);
36
37        node.remove_child(&child1);
38        assert_eq!(node.children().len(), 1);
39        assert_eq!(node.children()[0], child2);
40
41        node.remove_child(&child2);
42        assert_eq!(node.children().len(), 0);
43    }
44
45    #[test]
46    fn remove_child_at_index() {
47        let child1 = Node::new(Style::default(), vec![]);
48        let child2 = Node::new(Style::default(), vec![]);
49
50        let mut node = Node::new(Style::default(), vec![&child1, &child2]);
51        assert_eq!(node.children().len(), 2);
52
53        node.remove_child_at_index(0);
54        assert_eq!(node.children().len(), 1);
55        assert_eq!(node.children()[0], child2);
56
57        node.remove_child_at_index(0);
58        assert_eq!(node.children().len(), 0);
59    }
60
61    #[test]
62    fn replace_child_at_index() {
63        let child1 = Node::new(Style::default(), vec![]);
64        let child2 = Node::new(Style::default(), vec![]);
65
66        let mut node = Node::new(Style::default(), vec![&child1]);
67        assert_eq!(node.children().len(), 1);
68        assert_eq!(node.children()[0], child1);
69
70        node.replace_child_at_index(0, &child2);
71        assert_eq!(node.children().len(), 1);
72        assert_eq!(node.children()[0], child2);
73    }
74
75    #[test]
76    fn set_children() {
77        let child1 = Node::new(Style::default(), vec![]);
78        let child2 = Node::new(Style::default(), vec![]);
79        let mut node = Node::new(Style::default(), vec![&child1, &child2]);
80
81        assert_eq!(node.children().len(), 2);
82        assert_eq!(node.children()[0], child1);
83        assert_eq!(node.children()[1], child2);
84
85        let child3 = Node::new(Style::default(), vec![]);
86        let child4 = Node::new(Style::default(), vec![]);
87        node.set_children(vec![&child3, &child4]);
88
89        assert_eq!(node.children().len(), 2);
90        assert_eq!(node.children()[0], child3);
91        assert_eq!(node.children()[1], child4);
92    }
93
94    #[test]
95    fn set_style() {
96        let mut node = Node::new(Style::default(), vec![]);
97        assert_eq!(node.style().display, Display::Flex);
98
99        node.set_style(Style { display: Display::None, ..Style::default() });
100        assert_eq!(node.style().display, Display::None);
101    }
102
103    #[test]
104    fn mark_dirty() {
105        let mut child1 = Node::new(Style::default(), vec![]);
106        let mut child2 = Node::new(Style::default(), vec![]);
107        let mut node = Node::new(Style::default(), vec![&child1, &child2]);
108
109        node.compute_layout(stretch::geometry::Size::undefined()).unwrap();
110
111        assert_eq!(child1.is_dirty(), false);
112        assert_eq!(child2.is_dirty(), false);
113        assert_eq!(node.is_dirty(), false);
114
115        node.mark_dirty();
116        assert_eq!(child1.is_dirty(), false);
117        assert_eq!(child2.is_dirty(), false);
118        assert_eq!(node.is_dirty(), true);
119
120        node.compute_layout(stretch::geometry::Size::undefined()).unwrap();
121        child1.mark_dirty();
122        assert_eq!(child1.is_dirty(), true);
123        assert_eq!(child2.is_dirty(), false);
124        assert_eq!(node.is_dirty(), true);
125    }
126}