1#[test]
2fn absolute_layout_within_border() {
3 let mut taffy = taffy::Taffy::new();
4 let node0 = taffy
5 .new_node(
6 taffy::style::Style {
7 position_type: taffy::style::PositionType::Absolute,
8 size: taffy::geometry::Size {
9 width: taffy::style::Dimension::Points(50f32),
10 height: taffy::style::Dimension::Points(50f32),
11 ..Default::default()
12 },
13 position: taffy::geometry::Rect {
14 start: taffy::style::Dimension::Points(0f32),
15 top: taffy::style::Dimension::Points(0f32),
16 ..Default::default()
17 },
18 ..Default::default()
19 },
20 &[],
21 )
22 .unwrap();
23 let node1 = taffy
24 .new_node(
25 taffy::style::Style {
26 position_type: taffy::style::PositionType::Absolute,
27 size: taffy::geometry::Size {
28 width: taffy::style::Dimension::Points(50f32),
29 height: taffy::style::Dimension::Points(50f32),
30 ..Default::default()
31 },
32 position: taffy::geometry::Rect {
33 end: taffy::style::Dimension::Points(0f32),
34 bottom: taffy::style::Dimension::Points(0f32),
35 ..Default::default()
36 },
37 ..Default::default()
38 },
39 &[],
40 )
41 .unwrap();
42 let node2 = taffy
43 .new_node(
44 taffy::style::Style {
45 position_type: taffy::style::PositionType::Absolute,
46 size: taffy::geometry::Size {
47 width: taffy::style::Dimension::Points(50f32),
48 height: taffy::style::Dimension::Points(50f32),
49 ..Default::default()
50 },
51 margin: taffy::geometry::Rect {
52 start: taffy::style::Dimension::Points(10f32),
53 end: taffy::style::Dimension::Points(10f32),
54 top: taffy::style::Dimension::Points(10f32),
55 bottom: taffy::style::Dimension::Points(10f32),
56 ..Default::default()
57 },
58 position: taffy::geometry::Rect {
59 start: taffy::style::Dimension::Points(0f32),
60 top: taffy::style::Dimension::Points(0f32),
61 ..Default::default()
62 },
63 ..Default::default()
64 },
65 &[],
66 )
67 .unwrap();
68 let node3 = taffy
69 .new_node(
70 taffy::style::Style {
71 position_type: taffy::style::PositionType::Absolute,
72 size: taffy::geometry::Size {
73 width: taffy::style::Dimension::Points(50f32),
74 height: taffy::style::Dimension::Points(50f32),
75 ..Default::default()
76 },
77 margin: taffy::geometry::Rect {
78 start: taffy::style::Dimension::Points(10f32),
79 end: taffy::style::Dimension::Points(10f32),
80 top: taffy::style::Dimension::Points(10f32),
81 bottom: taffy::style::Dimension::Points(10f32),
82 ..Default::default()
83 },
84 position: taffy::geometry::Rect {
85 end: taffy::style::Dimension::Points(0f32),
86 bottom: taffy::style::Dimension::Points(0f32),
87 ..Default::default()
88 },
89 ..Default::default()
90 },
91 &[],
92 )
93 .unwrap();
94 let node = taffy
95 .new_node(
96 taffy::style::Style {
97 size: taffy::geometry::Size {
98 width: taffy::style::Dimension::Points(100f32),
99 height: taffy::style::Dimension::Points(100f32),
100 ..Default::default()
101 },
102 padding: taffy::geometry::Rect {
103 start: taffy::style::Dimension::Points(10f32),
104 end: taffy::style::Dimension::Points(10f32),
105 top: taffy::style::Dimension::Points(10f32),
106 bottom: taffy::style::Dimension::Points(10f32),
107 ..Default::default()
108 },
109 border: taffy::geometry::Rect {
110 start: taffy::style::Dimension::Points(10f32),
111 end: taffy::style::Dimension::Points(10f32),
112 top: taffy::style::Dimension::Points(10f32),
113 bottom: taffy::style::Dimension::Points(10f32),
114 ..Default::default()
115 },
116 ..Default::default()
117 },
118 &[node0, node1, node2, node3],
119 )
120 .unwrap();
121 taffy.compute_layout(node, taffy::geometry::Size::undefined()).unwrap();
122 assert_eq!(taffy.layout(node).unwrap().size.width, 100f32);
123 assert_eq!(taffy.layout(node).unwrap().size.height, 100f32);
124 assert_eq!(taffy.layout(node).unwrap().location.x, 0f32);
125 assert_eq!(taffy.layout(node).unwrap().location.y, 0f32);
126 assert_eq!(taffy.layout(node0).unwrap().size.width, 50f32);
127 assert_eq!(taffy.layout(node0).unwrap().size.height, 50f32);
128 assert_eq!(taffy.layout(node0).unwrap().location.x, 10f32);
129 assert_eq!(taffy.layout(node0).unwrap().location.y, 10f32);
130 assert_eq!(taffy.layout(node1).unwrap().size.width, 50f32);
131 assert_eq!(taffy.layout(node1).unwrap().size.height, 50f32);
132 assert_eq!(taffy.layout(node1).unwrap().location.x, 40f32);
133 assert_eq!(taffy.layout(node1).unwrap().location.y, 40f32);
134 assert_eq!(taffy.layout(node2).unwrap().size.width, 50f32);
135 assert_eq!(taffy.layout(node2).unwrap().size.height, 50f32);
136 assert_eq!(taffy.layout(node2).unwrap().location.x, 20f32);
137 assert_eq!(taffy.layout(node2).unwrap().location.y, 20f32);
138 assert_eq!(taffy.layout(node3).unwrap().size.width, 50f32);
139 assert_eq!(taffy.layout(node3).unwrap().size.height, 50f32);
140 assert_eq!(taffy.layout(node3).unwrap().location.x, 30f32);
141 assert_eq!(taffy.layout(node3).unwrap().location.y, 30f32);
142}