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/YGFlexTest.html
10 #include <gtest/gtest.h>
11 #include <yoga/Yoga.h>
13 TEST(YogaTest, flex_basis_flex_grow_column) {
14 const YGConfigRef config = YGConfigNew();
16 const YGNodeRef root = YGNodeNewWithConfig(config);
17 YGNodeStyleSetWidth(root, 100);
18 YGNodeStyleSetHeight(root, 100);
20 const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
21 YGNodeStyleSetFlexGrow(root_child0, 1);
22 YGNodeStyleSetFlexBasis(root_child0, 50);
23 YGNodeInsertChild(root, root_child0, 0);
25 const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
26 YGNodeStyleSetFlexGrow(root_child1, 1);
27 YGNodeInsertChild(root, root_child1, 1);
28 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
30 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
31 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
32 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
33 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
35 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
36 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
37 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0));
38 ASSERT_FLOAT_EQ(75, YGNodeLayoutGetHeight(root_child0));
40 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1));
41 ASSERT_FLOAT_EQ(75, YGNodeLayoutGetTop(root_child1));
42 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child1));
43 ASSERT_FLOAT_EQ(25, YGNodeLayoutGetHeight(root_child1));
45 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
47 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
48 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
49 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
50 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
52 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
53 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
54 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0));
55 ASSERT_FLOAT_EQ(75, YGNodeLayoutGetHeight(root_child0));
57 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1));
58 ASSERT_FLOAT_EQ(75, YGNodeLayoutGetTop(root_child1));
59 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child1));
60 ASSERT_FLOAT_EQ(25, YGNodeLayoutGetHeight(root_child1));
62 YGNodeFreeRecursive(root);
67 TEST(YogaTest, flex_basis_flex_grow_row) {
68 const YGConfigRef config = YGConfigNew();
70 const YGNodeRef root = YGNodeNewWithConfig(config);
71 YGNodeStyleSetFlexDirection(root, YGFlexDirectionRow);
72 YGNodeStyleSetWidth(root, 100);
73 YGNodeStyleSetHeight(root, 100);
75 const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
76 YGNodeStyleSetFlexGrow(root_child0, 1);
77 YGNodeStyleSetFlexBasis(root_child0, 50);
78 YGNodeInsertChild(root, root_child0, 0);
80 const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
81 YGNodeStyleSetFlexGrow(root_child1, 1);
82 YGNodeInsertChild(root, root_child1, 1);
83 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
85 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
86 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
87 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
88 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
90 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
91 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
92 ASSERT_FLOAT_EQ(75, YGNodeLayoutGetWidth(root_child0));
93 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0));
95 ASSERT_FLOAT_EQ(75, YGNodeLayoutGetLeft(root_child1));
96 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
97 ASSERT_FLOAT_EQ(25, YGNodeLayoutGetWidth(root_child1));
98 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child1));
100 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
102 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
103 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
104 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
105 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
107 ASSERT_FLOAT_EQ(25, YGNodeLayoutGetLeft(root_child0));
108 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
109 ASSERT_FLOAT_EQ(75, YGNodeLayoutGetWidth(root_child0));
110 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0));
112 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1));
113 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
114 ASSERT_FLOAT_EQ(25, YGNodeLayoutGetWidth(root_child1));
115 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child1));
117 YGNodeFreeRecursive(root);
119 YGConfigFree(config);
122 TEST(YogaTest, flex_basis_flex_shrink_column) {
123 const YGConfigRef config = YGConfigNew();
125 const YGNodeRef root = YGNodeNewWithConfig(config);
126 YGNodeStyleSetWidth(root, 100);
127 YGNodeStyleSetHeight(root, 100);
129 const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
130 YGNodeStyleSetFlexShrink(root_child0, 1);
131 YGNodeStyleSetFlexBasis(root_child0, 100);
132 YGNodeInsertChild(root, root_child0, 0);
134 const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
135 YGNodeStyleSetFlexBasis(root_child1, 50);
136 YGNodeInsertChild(root, root_child1, 1);
137 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
139 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
140 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
141 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
142 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
144 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
145 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
146 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0));
147 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child0));
149 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1));
150 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetTop(root_child1));
151 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child1));
152 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child1));
154 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
156 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
157 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
158 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
159 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
161 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
162 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
163 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0));
164 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child0));
166 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1));
167 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetTop(root_child1));
168 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child1));
169 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child1));
171 YGNodeFreeRecursive(root);
173 YGConfigFree(config);
176 TEST(YogaTest, flex_basis_flex_shrink_row) {
177 const YGConfigRef config = YGConfigNew();
179 const YGNodeRef root = YGNodeNewWithConfig(config);
180 YGNodeStyleSetFlexDirection(root, YGFlexDirectionRow);
181 YGNodeStyleSetWidth(root, 100);
182 YGNodeStyleSetHeight(root, 100);
184 const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
185 YGNodeStyleSetFlexShrink(root_child0, 1);
186 YGNodeStyleSetFlexBasis(root_child0, 100);
187 YGNodeInsertChild(root, root_child0, 0);
189 const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
190 YGNodeStyleSetFlexBasis(root_child1, 50);
191 YGNodeInsertChild(root, root_child1, 1);
192 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
194 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
195 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
196 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
197 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
199 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
200 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
201 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child0));
202 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0));
204 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child1));
205 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
206 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child1));
207 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child1));
209 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
211 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
212 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
213 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
214 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
216 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child0));
217 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
218 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child0));
219 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0));
221 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1));
222 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
223 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child1));
224 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child1));
226 YGNodeFreeRecursive(root);
228 YGConfigFree(config);
231 TEST(YogaTest, flex_shrink_to_zero) {
232 const YGConfigRef config = YGConfigNew();
234 const YGNodeRef root = YGNodeNewWithConfig(config);
235 YGNodeStyleSetHeight(root, 75);
237 const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
238 YGNodeStyleSetWidth(root_child0, 50);
239 YGNodeStyleSetHeight(root_child0, 50);
240 YGNodeInsertChild(root, root_child0, 0);
242 const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
243 YGNodeStyleSetFlexShrink(root_child1, 1);
244 YGNodeStyleSetWidth(root_child1, 50);
245 YGNodeStyleSetHeight(root_child1, 50);
246 YGNodeInsertChild(root, root_child1, 1);
248 const YGNodeRef root_child2 = YGNodeNewWithConfig(config);
249 YGNodeStyleSetWidth(root_child2, 50);
250 YGNodeStyleSetHeight(root_child2, 50);
251 YGNodeInsertChild(root, root_child2, 2);
252 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
254 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
255 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
256 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root));
257 ASSERT_FLOAT_EQ(75, YGNodeLayoutGetHeight(root));
259 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
260 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
261 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child0));
262 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child0));
264 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1));
265 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetTop(root_child1));
266 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child1));
267 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child1));
269 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child2));
270 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetTop(root_child2));
271 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child2));
272 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child2));
274 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
276 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
277 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
278 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root));
279 ASSERT_FLOAT_EQ(75, YGNodeLayoutGetHeight(root));
281 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
282 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
283 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child0));
284 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child0));
286 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1));
287 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetTop(root_child1));
288 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child1));
289 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child1));
291 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child2));
292 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetTop(root_child2));
293 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child2));
294 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child2));
296 YGNodeFreeRecursive(root);
298 YGConfigFree(config);
301 TEST(YogaTest, flex_basis_overrides_main_size) {
302 const YGConfigRef config = YGConfigNew();
304 const YGNodeRef root = YGNodeNewWithConfig(config);
305 YGNodeStyleSetWidth(root, 100);
306 YGNodeStyleSetHeight(root, 100);
308 const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
309 YGNodeStyleSetFlexGrow(root_child0, 1);
310 YGNodeStyleSetFlexBasis(root_child0, 50);
311 YGNodeStyleSetHeight(root_child0, 20);
312 YGNodeInsertChild(root, root_child0, 0);
314 const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
315 YGNodeStyleSetFlexGrow(root_child1, 1);
316 YGNodeStyleSetHeight(root_child1, 10);
317 YGNodeInsertChild(root, root_child1, 1);
319 const YGNodeRef root_child2 = YGNodeNewWithConfig(config);
320 YGNodeStyleSetFlexGrow(root_child2, 1);
321 YGNodeStyleSetHeight(root_child2, 10);
322 YGNodeInsertChild(root, root_child2, 2);
323 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
325 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
326 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
327 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
328 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
330 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
331 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
332 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0));
333 ASSERT_FLOAT_EQ(60, YGNodeLayoutGetHeight(root_child0));
335 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1));
336 ASSERT_FLOAT_EQ(60, YGNodeLayoutGetTop(root_child1));
337 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child1));
338 ASSERT_FLOAT_EQ(20, YGNodeLayoutGetHeight(root_child1));
340 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child2));
341 ASSERT_FLOAT_EQ(80, YGNodeLayoutGetTop(root_child2));
342 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child2));
343 ASSERT_FLOAT_EQ(20, YGNodeLayoutGetHeight(root_child2));
345 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
347 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
348 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
349 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
350 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
352 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
353 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
354 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0));
355 ASSERT_FLOAT_EQ(60, YGNodeLayoutGetHeight(root_child0));
357 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1));
358 ASSERT_FLOAT_EQ(60, YGNodeLayoutGetTop(root_child1));
359 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child1));
360 ASSERT_FLOAT_EQ(20, YGNodeLayoutGetHeight(root_child1));
362 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child2));
363 ASSERT_FLOAT_EQ(80, YGNodeLayoutGetTop(root_child2));
364 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child2));
365 ASSERT_FLOAT_EQ(20, YGNodeLayoutGetHeight(root_child2));
367 YGNodeFreeRecursive(root);
369 YGConfigFree(config);
372 TEST(YogaTest, flex_grow_shrink_at_most) {
373 const YGConfigRef config = YGConfigNew();
375 const YGNodeRef root = YGNodeNewWithConfig(config);
376 YGNodeStyleSetWidth(root, 100);
377 YGNodeStyleSetHeight(root, 100);
379 const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
380 YGNodeInsertChild(root, root_child0, 0);
382 const YGNodeRef root_child0_child0 = YGNodeNewWithConfig(config);
383 YGNodeStyleSetFlexGrow(root_child0_child0, 1);
384 YGNodeStyleSetFlexShrink(root_child0_child0, 1);
385 YGNodeInsertChild(root_child0, root_child0_child0, 0);
386 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
388 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
389 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
390 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
391 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
393 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
394 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
395 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0));
396 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child0));
398 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0_child0));
399 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0_child0));
400 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0_child0));
401 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child0_child0));
403 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
405 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
406 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
407 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
408 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
410 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
411 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
412 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0));
413 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child0));
415 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0_child0));
416 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0_child0));
417 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0_child0));
418 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child0_child0));
420 YGNodeFreeRecursive(root);
422 YGConfigFree(config);
425 TEST(YogaTest, flex_grow_less_than_factor_one) {
426 const YGConfigRef config = YGConfigNew();
428 const YGNodeRef root = YGNodeNewWithConfig(config);
429 YGNodeStyleSetWidth(root, 200);
430 YGNodeStyleSetHeight(root, 500);
432 const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
433 YGNodeStyleSetFlexGrow(root_child0, 0.2f);
434 YGNodeStyleSetFlexBasis(root_child0, 40);
435 YGNodeInsertChild(root, root_child0, 0);
437 const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
438 YGNodeStyleSetFlexGrow(root_child1, 0.2f);
439 YGNodeInsertChild(root, root_child1, 1);
441 const YGNodeRef root_child2 = YGNodeNewWithConfig(config);
442 YGNodeStyleSetFlexGrow(root_child2, 0.4f);
443 YGNodeInsertChild(root, root_child2, 2);
444 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
446 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
447 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
448 ASSERT_FLOAT_EQ(200, YGNodeLayoutGetWidth(root));
449 ASSERT_FLOAT_EQ(500, YGNodeLayoutGetHeight(root));
451 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
452 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
453 ASSERT_FLOAT_EQ(200, YGNodeLayoutGetWidth(root_child0));
454 ASSERT_FLOAT_EQ(132, YGNodeLayoutGetHeight(root_child0));
456 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1));
457 ASSERT_FLOAT_EQ(132, YGNodeLayoutGetTop(root_child1));
458 ASSERT_FLOAT_EQ(200, YGNodeLayoutGetWidth(root_child1));
459 ASSERT_FLOAT_EQ(92, YGNodeLayoutGetHeight(root_child1));
461 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child2));
462 ASSERT_FLOAT_EQ(224, YGNodeLayoutGetTop(root_child2));
463 ASSERT_FLOAT_EQ(200, YGNodeLayoutGetWidth(root_child2));
464 ASSERT_FLOAT_EQ(184, YGNodeLayoutGetHeight(root_child2));
466 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
468 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
469 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
470 ASSERT_FLOAT_EQ(200, YGNodeLayoutGetWidth(root));
471 ASSERT_FLOAT_EQ(500, YGNodeLayoutGetHeight(root));
473 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
474 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
475 ASSERT_FLOAT_EQ(200, YGNodeLayoutGetWidth(root_child0));
476 ASSERT_FLOAT_EQ(132, YGNodeLayoutGetHeight(root_child0));
478 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1));
479 ASSERT_FLOAT_EQ(132, YGNodeLayoutGetTop(root_child1));
480 ASSERT_FLOAT_EQ(200, YGNodeLayoutGetWidth(root_child1));
481 ASSERT_FLOAT_EQ(92, YGNodeLayoutGetHeight(root_child1));
483 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child2));
484 ASSERT_FLOAT_EQ(224, YGNodeLayoutGetTop(root_child2));
485 ASSERT_FLOAT_EQ(200, YGNodeLayoutGetWidth(root_child2));
486 ASSERT_FLOAT_EQ(184, YGNodeLayoutGetHeight(root_child2));
488 YGNodeFreeRecursive(root);
490 YGConfigFree(config);