gioser

tawasuyu/taffy

A high performance rust-powered UI layout library

Rust 1090HTML 1022Markdown 12TOML 84418 Definiciones

⎇ 9950fe891998e1d08e8b79ce5cc6320efda0941f tests/node.rs Rust · 136 líneas · 4.4 KB Historia Quién tocó qué crudo

Load of small fixes, updates API, and added tests af085fac4 · Emil Sjölander ·

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