2 * Copyright (c) 2014-present, Facebook, Inc.
4 * This source code is licensed under the MIT license found in the
5 * LICENSE file in the root directory of this source tree.
8 // @Generated by gentest/gentest.rb from gentest/fixtures/YGDisplayTest.html
10 #include <gtest/gtest.h>
11 #include <yoga/Yoga.h>
13 TEST(YogaTest, display_none) {
14 const YGConfigRef config = YGConfigNew();
16 const YGNodeRef root = YGNodeNewWithConfig(config);
17 YGNodeStyleSetFlexDirection(root, YGFlexDirectionRow);
18 YGNodeStyleSetWidth(root, 100);
19 YGNodeStyleSetHeight(root, 100);
21 const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
22 YGNodeStyleSetFlexGrow(root_child0, 1);
23 YGNodeInsertChild(root, root_child0, 0);
25 const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
26 YGNodeStyleSetFlexGrow(root_child1, 1);
27 YGNodeStyleSetDisplay(root_child1, YGDisplayNone);
28 YGNodeInsertChild(root, root_child1, 1);
29 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
31 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
32 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
33 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
34 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
36 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
37 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
38 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0));
39 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0));
41 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1));
42 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
43 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetWidth(root_child1));
44 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child1));
46 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
48 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
49 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
50 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
51 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
53 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
54 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
55 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0));
56 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0));
58 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1));
59 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
60 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetWidth(root_child1));
61 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child1));
63 YGNodeFreeRecursive(root);
68 TEST(YogaTest, display_none_fixed_size) {
69 const YGConfigRef config = YGConfigNew();
71 const YGNodeRef root = YGNodeNewWithConfig(config);
72 YGNodeStyleSetFlexDirection(root, YGFlexDirectionRow);
73 YGNodeStyleSetWidth(root, 100);
74 YGNodeStyleSetHeight(root, 100);
76 const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
77 YGNodeStyleSetFlexGrow(root_child0, 1);
78 YGNodeInsertChild(root, root_child0, 0);
80 const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
81 YGNodeStyleSetWidth(root_child1, 20);
82 YGNodeStyleSetHeight(root_child1, 20);
83 YGNodeStyleSetDisplay(root_child1, YGDisplayNone);
84 YGNodeInsertChild(root, root_child1, 1);
85 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
87 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
88 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
89 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
90 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
92 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
93 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
94 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0));
95 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0));
97 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1));
98 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
99 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetWidth(root_child1));
100 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child1));
102 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
104 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
105 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
106 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
107 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
109 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
110 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
111 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0));
112 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0));
114 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1));
115 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
116 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetWidth(root_child1));
117 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child1));
119 YGNodeFreeRecursive(root);
121 YGConfigFree(config);
124 TEST(YogaTest, display_none_with_margin) {
125 const YGConfigRef config = YGConfigNew();
127 const YGNodeRef root = YGNodeNewWithConfig(config);
128 YGNodeStyleSetFlexDirection(root, YGFlexDirectionRow);
129 YGNodeStyleSetWidth(root, 100);
130 YGNodeStyleSetHeight(root, 100);
132 const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
133 YGNodeStyleSetMargin(root_child0, YGEdgeLeft, 10);
134 YGNodeStyleSetMargin(root_child0, YGEdgeTop, 10);
135 YGNodeStyleSetMargin(root_child0, YGEdgeRight, 10);
136 YGNodeStyleSetMargin(root_child0, YGEdgeBottom, 10);
137 YGNodeStyleSetWidth(root_child0, 20);
138 YGNodeStyleSetHeight(root_child0, 20);
139 YGNodeStyleSetDisplay(root_child0, YGDisplayNone);
140 YGNodeInsertChild(root, root_child0, 0);
142 const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
143 YGNodeStyleSetFlexGrow(root_child1, 1);
144 YGNodeInsertChild(root, root_child1, 1);
145 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
147 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
148 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
149 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
150 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
152 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
153 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
154 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetWidth(root_child0));
155 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child0));
157 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1));
158 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
159 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child1));
160 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child1));
162 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
164 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
165 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
166 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
167 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
169 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
170 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
171 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetWidth(root_child0));
172 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child0));
174 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1));
175 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
176 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child1));
177 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child1));
179 YGNodeFreeRecursive(root);
181 YGConfigFree(config);
184 TEST(YogaTest, display_none_with_child) {
185 const YGConfigRef config = YGConfigNew();
187 const YGNodeRef root = YGNodeNewWithConfig(config);
188 YGNodeStyleSetFlexDirection(root, YGFlexDirectionRow);
189 YGNodeStyleSetWidth(root, 100);
190 YGNodeStyleSetHeight(root, 100);
192 const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
193 YGNodeStyleSetFlexGrow(root_child0, 1);
194 YGNodeStyleSetFlexShrink(root_child0, 1);
195 YGNodeStyleSetFlexBasisPercent(root_child0, 0);
196 YGNodeInsertChild(root, root_child0, 0);
198 const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
199 YGNodeStyleSetFlexGrow(root_child1, 1);
200 YGNodeStyleSetFlexShrink(root_child1, 1);
201 YGNodeStyleSetFlexBasisPercent(root_child1, 0);
202 YGNodeStyleSetDisplay(root_child1, YGDisplayNone);
203 YGNodeInsertChild(root, root_child1, 1);
205 const YGNodeRef root_child1_child0 = YGNodeNewWithConfig(config);
206 YGNodeStyleSetFlexGrow(root_child1_child0, 1);
207 YGNodeStyleSetFlexShrink(root_child1_child0, 1);
208 YGNodeStyleSetFlexBasisPercent(root_child1_child0, 0);
209 YGNodeStyleSetWidth(root_child1_child0, 20);
210 YGNodeStyleSetMinWidth(root_child1_child0, 0);
211 YGNodeStyleSetMinHeight(root_child1_child0, 0);
212 YGNodeInsertChild(root_child1, root_child1_child0, 0);
214 const YGNodeRef root_child2 = YGNodeNewWithConfig(config);
215 YGNodeStyleSetFlexGrow(root_child2, 1);
216 YGNodeStyleSetFlexShrink(root_child2, 1);
217 YGNodeStyleSetFlexBasisPercent(root_child2, 0);
218 YGNodeInsertChild(root, root_child2, 2);
219 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
221 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
222 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
223 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
224 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
226 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
227 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
228 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child0));
229 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0));
231 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1));
232 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
233 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetWidth(root_child1));
234 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child1));
236 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1_child0));
237 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1_child0));
238 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetWidth(root_child1_child0));
239 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child1_child0));
241 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child2));
242 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child2));
243 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child2));
244 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child2));
246 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
248 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
249 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
250 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
251 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
253 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child0));
254 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
255 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child0));
256 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0));
258 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1));
259 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
260 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetWidth(root_child1));
261 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child1));
263 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1_child0));
264 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1_child0));
265 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetWidth(root_child1_child0));
266 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child1_child0));
268 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child2));
269 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child2));
270 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child2));
271 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child2));
273 YGNodeFreeRecursive(root);
275 YGConfigFree(config);
278 TEST(YogaTest, display_none_with_position) {
279 const YGConfigRef config = YGConfigNew();
281 const YGNodeRef root = YGNodeNewWithConfig(config);
282 YGNodeStyleSetFlexDirection(root, YGFlexDirectionRow);
283 YGNodeStyleSetWidth(root, 100);
284 YGNodeStyleSetHeight(root, 100);
286 const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
287 YGNodeStyleSetFlexGrow(root_child0, 1);
288 YGNodeInsertChild(root, root_child0, 0);
290 const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
291 YGNodeStyleSetFlexGrow(root_child1, 1);
292 YGNodeStyleSetPosition(root_child1, YGEdgeTop, 10);
293 YGNodeStyleSetDisplay(root_child1, YGDisplayNone);
294 YGNodeInsertChild(root, root_child1, 1);
295 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
297 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
298 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
299 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
300 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
302 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
303 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
304 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0));
305 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0));
307 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1));
308 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
309 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetWidth(root_child1));
310 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child1));
312 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
314 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
315 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
316 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
317 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
319 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
320 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
321 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0));
322 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0));
324 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1));
325 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
326 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetWidth(root_child1));
327 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child1));
329 YGNodeFreeRecursive(root);
331 YGConfigFree(config);