gioser

tawasuyu/taffy

A high performance rust-powered UI layout library

HTML 5544Rust 89Markdown 11TOML 91930 Definiciones

⎇ 0.1.x tests/node.rs Rust · 191 líneas · 6.9 KB Historia Quién tocó qué crudo

Rename sprawl to taffy (#134) 8936790d6 · Alice Cecile ·

1#[cfg(test)]
2mod node {
3    use taffy::geometry::*;
4    use taffy::node::{MeasureFunc, Taffy};
5    use taffy::style::*;
6
7    #[test]
8    fn children() {
9        let mut taffy = Taffy::new();
10        let child1 = taffy.new_node(Style::default(), &[]).unwrap();
11        let child2 = taffy.new_node(Style::default(), &[]).unwrap();
12        let node = taffy.new_node(Style::default(), &[child1, child2]).unwrap();
13
14        assert_eq!(taffy.child_count(node).unwrap(), 2);
15        assert_eq!(taffy.children(node).unwrap()[0], child1);
16        assert_eq!(taffy.children(node).unwrap()[1], child2);
17    }
18
19    #[test]
20    fn set_measure() {
21        let mut taffy = Taffy::new();
22        let node =
23            taffy.new_leaf(Style::default(), MeasureFunc::Raw(|_| Size { width: 200.0, height: 200.0 })).unwrap();
24        taffy.compute_layout(node, Size::undefined()).unwrap();
25        assert_eq!(taffy.layout(node).unwrap().size.width, 200.0);
26
27        taffy.set_measure(node, Some(MeasureFunc::Raw(|_| Size { width: 100.0, height: 100.0 }))).unwrap();
28        taffy.compute_layout(node, Size::undefined()).unwrap();
29        assert_eq!(taffy.layout(node).unwrap().size.width, 100.0);
30    }
31
32    #[test]
33    fn add_child() {
34        let mut taffy = Taffy::new();
35        let node = taffy.new_node(Style::default(), &[]).unwrap();
36        assert_eq!(taffy.child_count(node).unwrap(), 0);
37
38        let child1 = taffy.new_node(Style::default(), &[]).unwrap();
39        taffy.add_child(node, child1).unwrap();
40        assert_eq!(taffy.child_count(node).unwrap(), 1);
41
42        let child2 = taffy.new_node(Style::default(), &[]).unwrap();
43        taffy.add_child(node, child2).unwrap();
44        assert_eq!(taffy.child_count(node).unwrap(), 2);
45    }
46
47    #[test]
48    fn remove_child() {
49        let mut taffy = Taffy::new();
50
51        let child1 = taffy.new_node(Style::default(), &[]).unwrap();
52        let child2 = taffy.new_node(Style::default(), &[]).unwrap();
53
54        let node = taffy.new_node(Style::default(), &[child1, child2]).unwrap();
55        assert_eq!(taffy.child_count(node).unwrap(), 2);
56
57        taffy.remove_child(node, child1).unwrap();
58        assert_eq!(taffy.child_count(node).unwrap(), 1);
59        assert_eq!(taffy.children(node).unwrap()[0], child2);
60
61        taffy.remove_child(node, child2).unwrap();
62        assert_eq!(taffy.child_count(node).unwrap(), 0);
63    }
64
65    #[test]
66    fn remove_child_at_index() {
67        let mut taffy = Taffy::new();
68
69        let child1 = taffy.new_node(Style::default(), &[]).unwrap();
70        let child2 = taffy.new_node(Style::default(), &[]).unwrap();
71
72        let node = taffy.new_node(Style::default(), &[child1, child2]).unwrap();
73        assert_eq!(taffy.child_count(node).unwrap(), 2);
74
75        taffy.remove_child_at_index(node, 0).unwrap();
76        assert_eq!(taffy.child_count(node).unwrap(), 1);
77        assert_eq!(taffy.children(node).unwrap()[0], child2);
78
79        taffy.remove_child_at_index(node, 0).unwrap();
80        assert_eq!(taffy.child_count(node).unwrap(), 0);
81    }
82
83    #[test]
84    fn replace_child_at_index() {
85        let mut taffy = Taffy::new();
86
87        let child1 = taffy.new_node(Style::default(), &[]).unwrap();
88        let child2 = taffy.new_node(Style::default(), &[]).unwrap();
89
90        let node = taffy.new_node(Style::default(), &[child1]).unwrap();
91        assert_eq!(taffy.child_count(node).unwrap(), 1);
92        assert_eq!(taffy.children(node).unwrap()[0], child1);
93
94        taffy.replace_child_at_index(node, 0, child2).unwrap();
95        assert_eq!(taffy.child_count(node).unwrap(), 1);
96        assert_eq!(taffy.children(node).unwrap()[0], child2);
97    }
98
99    #[test]
100    fn remove() {
101        let mut taffy = Taffy::new();
102
103        let style2 = Style { flex_direction: FlexDirection::Column, ..Style::default() };
104
105        // Build a linear tree layout: <0> <- <1> <- <2>
106        let node2 = taffy.new_node(style2, &[]).unwrap();
107        let node1 = taffy.new_node(Style::default(), &[node2]).unwrap();
108        let node0 = taffy.new_node(Style::default(), &[node1]).unwrap();
109
110        assert_eq!(taffy.children(node0).unwrap().as_slice(), &[node1]);
111
112        // Disconnect the tree: <0> <2>
113        taffy.remove(node1);
114
115        assert!(taffy.style(node1).is_err());
116
117        assert!(taffy.children(node0).unwrap().is_empty());
118        assert!(taffy.children(node2).unwrap().is_empty());
119        assert_eq!(taffy.style(node2).unwrap().flex_direction, style2.flex_direction);
120    }
121
122    #[test]
123    fn set_children() {
124        let mut taffy = Taffy::new();
125
126        let child1 = taffy.new_node(Style::default(), &[]).unwrap();
127        let child2 = taffy.new_node(Style::default(), &[]).unwrap();
128        let node = taffy.new_node(Style::default(), &[child1, child2]).unwrap();
129
130        assert_eq!(taffy.child_count(node).unwrap(), 2);
131        assert_eq!(taffy.children(node).unwrap()[0], child1);
132        assert_eq!(taffy.children(node).unwrap()[1], child2);
133
134        let child3 = taffy.new_node(Style::default(), &[]).unwrap();
135        let child4 = taffy.new_node(Style::default(), &[]).unwrap();
136        taffy.set_children(node, &[child3, child4]).unwrap();
137
138        assert_eq!(taffy.child_count(node).unwrap(), 2);
139        assert_eq!(taffy.children(node).unwrap()[0], child3);
140        assert_eq!(taffy.children(node).unwrap()[1], child4);
141    }
142
143    #[test]
144    fn set_style() {
145        let mut taffy = Taffy::new();
146
147        let node = taffy.new_node(Style::default(), &[]).unwrap();
148        assert_eq!(taffy.style(node).unwrap().display, Display::Flex);
149
150        taffy.set_style(node, Style { display: Display::None, ..Style::default() }).unwrap();
151        assert_eq!(taffy.style(node).unwrap().display, Display::None);
152    }
153
154    #[test]
155    fn mark_dirty() {
156        let mut taffy = Taffy::new();
157
158        let child1 = taffy.new_node(Style::default(), &[]).unwrap();
159        let child2 = taffy.new_node(Style::default(), &[]).unwrap();
160        let node = taffy.new_node(Style::default(), &[child1, child2]).unwrap();
161
162        taffy.compute_layout(node, taffy::geometry::Size::undefined()).unwrap();
163
164        assert_eq!(taffy.dirty(child1).unwrap(), false);
165        assert_eq!(taffy.dirty(child2).unwrap(), false);
166        assert_eq!(taffy.dirty(node).unwrap(), false);
167
168        taffy.mark_dirty(node).unwrap();
169        assert_eq!(taffy.dirty(child1).unwrap(), false);
170        assert_eq!(taffy.dirty(child2).unwrap(), false);
171        assert_eq!(taffy.dirty(node).unwrap(), true);
172
173        taffy.compute_layout(node, taffy::geometry::Size::undefined()).unwrap();
174        taffy.mark_dirty(child1).unwrap();
175        assert_eq!(taffy.dirty(child1).unwrap(), true);
176        assert_eq!(taffy.dirty(child2).unwrap(), false);
177        assert_eq!(taffy.dirty(node).unwrap(), true);
178    }
179
180    #[test]
181    fn remove_last_node() {
182        let mut taffy = Taffy::new();
183
184        let parent = taffy.new_node(Style::default(), &[]).unwrap();
185        let child = taffy.new_node(Style::default(), &[]).unwrap();
186        taffy.add_child(parent, child).unwrap();
187
188        taffy.remove(child);
189        taffy.remove(parent);
190    }
191}