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/YGAlignContentTest.html
10 #include <gtest/gtest.h>
11 #include <yoga/Yoga.h>
13 TEST(YogaTest, align_content_flex_start) {
14 const YGConfigRef config = YGConfigNew();
16 const YGNodeRef root = YGNodeNewWithConfig(config);
17 YGNodeStyleSetFlexDirection(root, YGFlexDirectionRow);
18 YGNodeStyleSetFlexWrap(root, YGWrapWrap);
19 YGNodeStyleSetWidth(root, 130);
20 YGNodeStyleSetHeight(root, 100);
22 const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
23 YGNodeStyleSetWidth(root_child0, 50);
24 YGNodeStyleSetHeight(root_child0, 10);
25 YGNodeInsertChild(root, root_child0, 0);
27 const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
28 YGNodeStyleSetWidth(root_child1, 50);
29 YGNodeStyleSetHeight(root_child1, 10);
30 YGNodeInsertChild(root, root_child1, 1);
32 const YGNodeRef root_child2 = YGNodeNewWithConfig(config);
33 YGNodeStyleSetWidth(root_child2, 50);
34 YGNodeStyleSetHeight(root_child2, 10);
35 YGNodeInsertChild(root, root_child2, 2);
37 const YGNodeRef root_child3 = YGNodeNewWithConfig(config);
38 YGNodeStyleSetWidth(root_child3, 50);
39 YGNodeStyleSetHeight(root_child3, 10);
40 YGNodeInsertChild(root, root_child3, 3);
42 const YGNodeRef root_child4 = YGNodeNewWithConfig(config);
43 YGNodeStyleSetWidth(root_child4, 50);
44 YGNodeStyleSetHeight(root_child4, 10);
45 YGNodeInsertChild(root, root_child4, 4);
46 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
48 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
49 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
50 ASSERT_FLOAT_EQ(130, 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(50, YGNodeLayoutGetWidth(root_child0));
56 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child0));
58 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child1));
59 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
60 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child1));
61 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child1));
63 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child2));
64 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetTop(root_child2));
65 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child2));
66 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child2));
68 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child3));
69 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetTop(root_child3));
70 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child3));
71 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child3));
73 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child4));
74 ASSERT_FLOAT_EQ(20, YGNodeLayoutGetTop(root_child4));
75 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child4));
76 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child4));
78 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
80 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
81 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
82 ASSERT_FLOAT_EQ(130, YGNodeLayoutGetWidth(root));
83 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
85 ASSERT_FLOAT_EQ(80, YGNodeLayoutGetLeft(root_child0));
86 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
87 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child0));
88 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child0));
90 ASSERT_FLOAT_EQ(30, YGNodeLayoutGetLeft(root_child1));
91 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
92 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child1));
93 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child1));
95 ASSERT_FLOAT_EQ(80, YGNodeLayoutGetLeft(root_child2));
96 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetTop(root_child2));
97 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child2));
98 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child2));
100 ASSERT_FLOAT_EQ(30, YGNodeLayoutGetLeft(root_child3));
101 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetTop(root_child3));
102 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child3));
103 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child3));
105 ASSERT_FLOAT_EQ(80, YGNodeLayoutGetLeft(root_child4));
106 ASSERT_FLOAT_EQ(20, YGNodeLayoutGetTop(root_child4));
107 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child4));
108 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child4));
110 YGNodeFreeRecursive(root);
112 YGConfigFree(config);
115 TEST(YogaTest, align_content_flex_start_without_height_on_children) {
116 const YGConfigRef config = YGConfigNew();
118 const YGNodeRef root = YGNodeNewWithConfig(config);
119 YGNodeStyleSetFlexWrap(root, YGWrapWrap);
120 YGNodeStyleSetWidth(root, 100);
121 YGNodeStyleSetHeight(root, 100);
123 const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
124 YGNodeStyleSetWidth(root_child0, 50);
125 YGNodeInsertChild(root, root_child0, 0);
127 const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
128 YGNodeStyleSetWidth(root_child1, 50);
129 YGNodeStyleSetHeight(root_child1, 10);
130 YGNodeInsertChild(root, root_child1, 1);
132 const YGNodeRef root_child2 = YGNodeNewWithConfig(config);
133 YGNodeStyleSetWidth(root_child2, 50);
134 YGNodeInsertChild(root, root_child2, 2);
136 const YGNodeRef root_child3 = YGNodeNewWithConfig(config);
137 YGNodeStyleSetWidth(root_child3, 50);
138 YGNodeStyleSetHeight(root_child3, 10);
139 YGNodeInsertChild(root, root_child3, 3);
141 const YGNodeRef root_child4 = YGNodeNewWithConfig(config);
142 YGNodeStyleSetWidth(root_child4, 50);
143 YGNodeInsertChild(root, root_child4, 4);
144 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
146 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
147 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
148 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
149 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
151 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
152 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
153 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child0));
154 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child0));
156 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1));
157 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
158 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child1));
159 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child1));
161 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child2));
162 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetTop(root_child2));
163 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child2));
164 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child2));
166 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child3));
167 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetTop(root_child3));
168 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child3));
169 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child3));
171 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child4));
172 ASSERT_FLOAT_EQ(20, YGNodeLayoutGetTop(root_child4));
173 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child4));
174 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child4));
176 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
178 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
179 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
180 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
181 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
183 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child0));
184 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
185 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child0));
186 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child0));
188 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child1));
189 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
190 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child1));
191 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child1));
193 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child2));
194 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetTop(root_child2));
195 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child2));
196 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child2));
198 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child3));
199 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetTop(root_child3));
200 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child3));
201 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child3));
203 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child4));
204 ASSERT_FLOAT_EQ(20, YGNodeLayoutGetTop(root_child4));
205 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child4));
206 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child4));
208 YGNodeFreeRecursive(root);
210 YGConfigFree(config);
213 TEST(YogaTest, align_content_flex_start_with_flex) {
214 const YGConfigRef config = YGConfigNew();
216 const YGNodeRef root = YGNodeNewWithConfig(config);
217 YGNodeStyleSetFlexWrap(root, YGWrapWrap);
218 YGNodeStyleSetWidth(root, 100);
219 YGNodeStyleSetHeight(root, 120);
221 const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
222 YGNodeStyleSetFlexGrow(root_child0, 1);
223 YGNodeStyleSetFlexBasisPercent(root_child0, 0);
224 YGNodeStyleSetWidth(root_child0, 50);
225 YGNodeInsertChild(root, root_child0, 0);
227 const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
228 YGNodeStyleSetFlexGrow(root_child1, 1);
229 YGNodeStyleSetFlexBasisPercent(root_child1, 0);
230 YGNodeStyleSetWidth(root_child1, 50);
231 YGNodeStyleSetHeight(root_child1, 10);
232 YGNodeInsertChild(root, root_child1, 1);
234 const YGNodeRef root_child2 = YGNodeNewWithConfig(config);
235 YGNodeStyleSetWidth(root_child2, 50);
236 YGNodeInsertChild(root, root_child2, 2);
238 const YGNodeRef root_child3 = YGNodeNewWithConfig(config);
239 YGNodeStyleSetFlexGrow(root_child3, 1);
240 YGNodeStyleSetFlexShrink(root_child3, 1);
241 YGNodeStyleSetFlexBasisPercent(root_child3, 0);
242 YGNodeStyleSetWidth(root_child3, 50);
243 YGNodeInsertChild(root, root_child3, 3);
245 const YGNodeRef root_child4 = YGNodeNewWithConfig(config);
246 YGNodeStyleSetWidth(root_child4, 50);
247 YGNodeInsertChild(root, root_child4, 4);
248 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
250 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
251 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
252 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
253 ASSERT_FLOAT_EQ(120, YGNodeLayoutGetHeight(root));
255 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
256 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
257 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child0));
258 ASSERT_FLOAT_EQ(40, YGNodeLayoutGetHeight(root_child0));
260 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1));
261 ASSERT_FLOAT_EQ(40, YGNodeLayoutGetTop(root_child1));
262 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child1));
263 ASSERT_FLOAT_EQ(40, YGNodeLayoutGetHeight(root_child1));
265 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child2));
266 ASSERT_FLOAT_EQ(80, YGNodeLayoutGetTop(root_child2));
267 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child2));
268 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child2));
270 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child3));
271 ASSERT_FLOAT_EQ(80, YGNodeLayoutGetTop(root_child3));
272 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child3));
273 ASSERT_FLOAT_EQ(40, YGNodeLayoutGetHeight(root_child3));
275 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child4));
276 ASSERT_FLOAT_EQ(120, YGNodeLayoutGetTop(root_child4));
277 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child4));
278 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child4));
280 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
282 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
283 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
284 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
285 ASSERT_FLOAT_EQ(120, YGNodeLayoutGetHeight(root));
287 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child0));
288 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
289 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child0));
290 ASSERT_FLOAT_EQ(40, YGNodeLayoutGetHeight(root_child0));
292 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child1));
293 ASSERT_FLOAT_EQ(40, YGNodeLayoutGetTop(root_child1));
294 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child1));
295 ASSERT_FLOAT_EQ(40, YGNodeLayoutGetHeight(root_child1));
297 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child2));
298 ASSERT_FLOAT_EQ(80, YGNodeLayoutGetTop(root_child2));
299 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child2));
300 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child2));
302 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child3));
303 ASSERT_FLOAT_EQ(80, YGNodeLayoutGetTop(root_child3));
304 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child3));
305 ASSERT_FLOAT_EQ(40, YGNodeLayoutGetHeight(root_child3));
307 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child4));
308 ASSERT_FLOAT_EQ(120, YGNodeLayoutGetTop(root_child4));
309 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child4));
310 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child4));
312 YGNodeFreeRecursive(root);
314 YGConfigFree(config);
317 TEST(YogaTest, align_content_flex_end) {
318 const YGConfigRef config = YGConfigNew();
320 const YGNodeRef root = YGNodeNewWithConfig(config);
321 YGNodeStyleSetAlignContent(root, YGAlignFlexEnd);
322 YGNodeStyleSetFlexWrap(root, YGWrapWrap);
323 YGNodeStyleSetWidth(root, 100);
324 YGNodeStyleSetHeight(root, 100);
326 const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
327 YGNodeStyleSetWidth(root_child0, 50);
328 YGNodeStyleSetHeight(root_child0, 10);
329 YGNodeInsertChild(root, root_child0, 0);
331 const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
332 YGNodeStyleSetWidth(root_child1, 50);
333 YGNodeStyleSetHeight(root_child1, 10);
334 YGNodeInsertChild(root, root_child1, 1);
336 const YGNodeRef root_child2 = YGNodeNewWithConfig(config);
337 YGNodeStyleSetWidth(root_child2, 50);
338 YGNodeStyleSetHeight(root_child2, 10);
339 YGNodeInsertChild(root, root_child2, 2);
341 const YGNodeRef root_child3 = YGNodeNewWithConfig(config);
342 YGNodeStyleSetWidth(root_child3, 50);
343 YGNodeStyleSetHeight(root_child3, 10);
344 YGNodeInsertChild(root, root_child3, 3);
346 const YGNodeRef root_child4 = YGNodeNewWithConfig(config);
347 YGNodeStyleSetWidth(root_child4, 50);
348 YGNodeStyleSetHeight(root_child4, 10);
349 YGNodeInsertChild(root, root_child4, 4);
350 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
352 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
353 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
354 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
355 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
357 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
358 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
359 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child0));
360 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child0));
362 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1));
363 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetTop(root_child1));
364 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child1));
365 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child1));
367 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child2));
368 ASSERT_FLOAT_EQ(20, YGNodeLayoutGetTop(root_child2));
369 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child2));
370 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child2));
372 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child3));
373 ASSERT_FLOAT_EQ(30, YGNodeLayoutGetTop(root_child3));
374 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child3));
375 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child3));
377 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child4));
378 ASSERT_FLOAT_EQ(40, YGNodeLayoutGetTop(root_child4));
379 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child4));
380 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child4));
382 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
384 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
385 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
386 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
387 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
389 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child0));
390 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
391 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child0));
392 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child0));
394 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child1));
395 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetTop(root_child1));
396 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child1));
397 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child1));
399 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child2));
400 ASSERT_FLOAT_EQ(20, YGNodeLayoutGetTop(root_child2));
401 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child2));
402 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child2));
404 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child3));
405 ASSERT_FLOAT_EQ(30, YGNodeLayoutGetTop(root_child3));
406 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child3));
407 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child3));
409 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child4));
410 ASSERT_FLOAT_EQ(40, YGNodeLayoutGetTop(root_child4));
411 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child4));
412 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child4));
414 YGNodeFreeRecursive(root);
416 YGConfigFree(config);
419 TEST(YogaTest, align_content_stretch) {
420 const YGConfigRef config = YGConfigNew();
422 const YGNodeRef root = YGNodeNewWithConfig(config);
423 YGNodeStyleSetAlignContent(root, YGAlignStretch);
424 YGNodeStyleSetFlexWrap(root, YGWrapWrap);
425 YGNodeStyleSetWidth(root, 150);
426 YGNodeStyleSetHeight(root, 100);
428 const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
429 YGNodeStyleSetWidth(root_child0, 50);
430 YGNodeInsertChild(root, root_child0, 0);
432 const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
433 YGNodeStyleSetWidth(root_child1, 50);
434 YGNodeInsertChild(root, root_child1, 1);
436 const YGNodeRef root_child2 = YGNodeNewWithConfig(config);
437 YGNodeStyleSetWidth(root_child2, 50);
438 YGNodeInsertChild(root, root_child2, 2);
440 const YGNodeRef root_child3 = YGNodeNewWithConfig(config);
441 YGNodeStyleSetWidth(root_child3, 50);
442 YGNodeInsertChild(root, root_child3, 3);
444 const YGNodeRef root_child4 = YGNodeNewWithConfig(config);
445 YGNodeStyleSetWidth(root_child4, 50);
446 YGNodeInsertChild(root, root_child4, 4);
447 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
449 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
450 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
451 ASSERT_FLOAT_EQ(150, YGNodeLayoutGetWidth(root));
452 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
454 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
455 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
456 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child0));
457 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child0));
459 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1));
460 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
461 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child1));
462 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child1));
464 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child2));
465 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child2));
466 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child2));
467 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child2));
469 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child3));
470 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child3));
471 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child3));
472 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child3));
474 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child4));
475 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child4));
476 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child4));
477 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child4));
479 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
481 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
482 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
483 ASSERT_FLOAT_EQ(150, YGNodeLayoutGetWidth(root));
484 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
486 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetLeft(root_child0));
487 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
488 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child0));
489 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child0));
491 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetLeft(root_child1));
492 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
493 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child1));
494 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child1));
496 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetLeft(root_child2));
497 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child2));
498 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child2));
499 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child2));
501 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetLeft(root_child3));
502 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child3));
503 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child3));
504 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child3));
506 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetLeft(root_child4));
507 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child4));
508 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child4));
509 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child4));
511 YGNodeFreeRecursive(root);
513 YGConfigFree(config);
516 TEST(YogaTest, align_content_spacebetween) {
517 const YGConfigRef config = YGConfigNew();
519 const YGNodeRef root = YGNodeNewWithConfig(config);
520 YGNodeStyleSetFlexDirection(root, YGFlexDirectionRow);
521 YGNodeStyleSetAlignContent(root, YGAlignSpaceBetween);
522 YGNodeStyleSetFlexWrap(root, YGWrapWrap);
523 YGNodeStyleSetWidth(root, 130);
524 YGNodeStyleSetHeight(root, 100);
526 const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
527 YGNodeStyleSetWidth(root_child0, 50);
528 YGNodeStyleSetHeight(root_child0, 10);
529 YGNodeInsertChild(root, root_child0, 0);
531 const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
532 YGNodeStyleSetWidth(root_child1, 50);
533 YGNodeStyleSetHeight(root_child1, 10);
534 YGNodeInsertChild(root, root_child1, 1);
536 const YGNodeRef root_child2 = YGNodeNewWithConfig(config);
537 YGNodeStyleSetWidth(root_child2, 50);
538 YGNodeStyleSetHeight(root_child2, 10);
539 YGNodeInsertChild(root, root_child2, 2);
541 const YGNodeRef root_child3 = YGNodeNewWithConfig(config);
542 YGNodeStyleSetWidth(root_child3, 50);
543 YGNodeStyleSetHeight(root_child3, 10);
544 YGNodeInsertChild(root, root_child3, 3);
546 const YGNodeRef root_child4 = YGNodeNewWithConfig(config);
547 YGNodeStyleSetWidth(root_child4, 50);
548 YGNodeStyleSetHeight(root_child4, 10);
549 YGNodeInsertChild(root, root_child4, 4);
550 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
552 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
553 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
554 ASSERT_FLOAT_EQ(130, YGNodeLayoutGetWidth(root));
555 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
557 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
558 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
559 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child0));
560 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child0));
562 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child1));
563 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
564 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child1));
565 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child1));
567 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child2));
568 ASSERT_FLOAT_EQ(45, YGNodeLayoutGetTop(root_child2));
569 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child2));
570 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child2));
572 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child3));
573 ASSERT_FLOAT_EQ(45, YGNodeLayoutGetTop(root_child3));
574 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child3));
575 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child3));
577 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child4));
578 ASSERT_FLOAT_EQ(90, YGNodeLayoutGetTop(root_child4));
579 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child4));
580 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child4));
582 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
584 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
585 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
586 ASSERT_FLOAT_EQ(130, YGNodeLayoutGetWidth(root));
587 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
589 ASSERT_FLOAT_EQ(80, YGNodeLayoutGetLeft(root_child0));
590 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
591 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child0));
592 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child0));
594 ASSERT_FLOAT_EQ(30, YGNodeLayoutGetLeft(root_child1));
595 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
596 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child1));
597 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child1));
599 ASSERT_FLOAT_EQ(80, YGNodeLayoutGetLeft(root_child2));
600 ASSERT_FLOAT_EQ(45, YGNodeLayoutGetTop(root_child2));
601 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child2));
602 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child2));
604 ASSERT_FLOAT_EQ(30, YGNodeLayoutGetLeft(root_child3));
605 ASSERT_FLOAT_EQ(45, YGNodeLayoutGetTop(root_child3));
606 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child3));
607 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child3));
609 ASSERT_FLOAT_EQ(80, YGNodeLayoutGetLeft(root_child4));
610 ASSERT_FLOAT_EQ(90, YGNodeLayoutGetTop(root_child4));
611 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child4));
612 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child4));
614 YGNodeFreeRecursive(root);
616 YGConfigFree(config);
619 TEST(YogaTest, align_content_spacearound) {
620 const YGConfigRef config = YGConfigNew();
622 const YGNodeRef root = YGNodeNewWithConfig(config);
623 YGNodeStyleSetFlexDirection(root, YGFlexDirectionRow);
624 YGNodeStyleSetAlignContent(root, YGAlignSpaceAround);
625 YGNodeStyleSetFlexWrap(root, YGWrapWrap);
626 YGNodeStyleSetWidth(root, 140);
627 YGNodeStyleSetHeight(root, 120);
629 const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
630 YGNodeStyleSetWidth(root_child0, 50);
631 YGNodeStyleSetHeight(root_child0, 10);
632 YGNodeInsertChild(root, root_child0, 0);
634 const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
635 YGNodeStyleSetWidth(root_child1, 50);
636 YGNodeStyleSetHeight(root_child1, 10);
637 YGNodeInsertChild(root, root_child1, 1);
639 const YGNodeRef root_child2 = YGNodeNewWithConfig(config);
640 YGNodeStyleSetWidth(root_child2, 50);
641 YGNodeStyleSetHeight(root_child2, 10);
642 YGNodeInsertChild(root, root_child2, 2);
644 const YGNodeRef root_child3 = YGNodeNewWithConfig(config);
645 YGNodeStyleSetWidth(root_child3, 50);
646 YGNodeStyleSetHeight(root_child3, 10);
647 YGNodeInsertChild(root, root_child3, 3);
649 const YGNodeRef root_child4 = YGNodeNewWithConfig(config);
650 YGNodeStyleSetWidth(root_child4, 50);
651 YGNodeStyleSetHeight(root_child4, 10);
652 YGNodeInsertChild(root, root_child4, 4);
653 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
655 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
656 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
657 ASSERT_FLOAT_EQ(140, YGNodeLayoutGetWidth(root));
658 ASSERT_FLOAT_EQ(120, YGNodeLayoutGetHeight(root));
660 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
661 ASSERT_FLOAT_EQ(15, YGNodeLayoutGetTop(root_child0));
662 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child0));
663 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child0));
665 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child1));
666 ASSERT_FLOAT_EQ(15, YGNodeLayoutGetTop(root_child1));
667 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child1));
668 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child1));
670 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child2));
671 ASSERT_FLOAT_EQ(55, YGNodeLayoutGetTop(root_child2));
672 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child2));
673 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child2));
675 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child3));
676 ASSERT_FLOAT_EQ(55, YGNodeLayoutGetTop(root_child3));
677 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child3));
678 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child3));
680 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child4));
681 ASSERT_FLOAT_EQ(95, YGNodeLayoutGetTop(root_child4));
682 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child4));
683 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child4));
685 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
687 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
688 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
689 ASSERT_FLOAT_EQ(140, YGNodeLayoutGetWidth(root));
690 ASSERT_FLOAT_EQ(120, YGNodeLayoutGetHeight(root));
692 ASSERT_FLOAT_EQ(90, YGNodeLayoutGetLeft(root_child0));
693 ASSERT_FLOAT_EQ(15, YGNodeLayoutGetTop(root_child0));
694 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child0));
695 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child0));
697 ASSERT_FLOAT_EQ(40, YGNodeLayoutGetLeft(root_child1));
698 ASSERT_FLOAT_EQ(15, YGNodeLayoutGetTop(root_child1));
699 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child1));
700 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child1));
702 ASSERT_FLOAT_EQ(90, YGNodeLayoutGetLeft(root_child2));
703 ASSERT_FLOAT_EQ(55, YGNodeLayoutGetTop(root_child2));
704 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child2));
705 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child2));
707 ASSERT_FLOAT_EQ(40, YGNodeLayoutGetLeft(root_child3));
708 ASSERT_FLOAT_EQ(55, YGNodeLayoutGetTop(root_child3));
709 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child3));
710 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child3));
712 ASSERT_FLOAT_EQ(90, YGNodeLayoutGetLeft(root_child4));
713 ASSERT_FLOAT_EQ(95, YGNodeLayoutGetTop(root_child4));
714 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child4));
715 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child4));
717 YGNodeFreeRecursive(root);
719 YGConfigFree(config);
722 TEST(YogaTest, align_content_stretch_row) {
723 const YGConfigRef config = YGConfigNew();
725 const YGNodeRef root = YGNodeNewWithConfig(config);
726 YGNodeStyleSetFlexDirection(root, YGFlexDirectionRow);
727 YGNodeStyleSetAlignContent(root, YGAlignStretch);
728 YGNodeStyleSetFlexWrap(root, YGWrapWrap);
729 YGNodeStyleSetWidth(root, 150);
730 YGNodeStyleSetHeight(root, 100);
732 const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
733 YGNodeStyleSetWidth(root_child0, 50);
734 YGNodeInsertChild(root, root_child0, 0);
736 const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
737 YGNodeStyleSetWidth(root_child1, 50);
738 YGNodeInsertChild(root, root_child1, 1);
740 const YGNodeRef root_child2 = YGNodeNewWithConfig(config);
741 YGNodeStyleSetWidth(root_child2, 50);
742 YGNodeInsertChild(root, root_child2, 2);
744 const YGNodeRef root_child3 = YGNodeNewWithConfig(config);
745 YGNodeStyleSetWidth(root_child3, 50);
746 YGNodeInsertChild(root, root_child3, 3);
748 const YGNodeRef root_child4 = YGNodeNewWithConfig(config);
749 YGNodeStyleSetWidth(root_child4, 50);
750 YGNodeInsertChild(root, root_child4, 4);
751 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
753 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
754 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
755 ASSERT_FLOAT_EQ(150, YGNodeLayoutGetWidth(root));
756 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
758 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
759 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
760 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child0));
761 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child0));
763 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child1));
764 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
765 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child1));
766 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child1));
768 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetLeft(root_child2));
769 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child2));
770 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child2));
771 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child2));
773 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child3));
774 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetTop(root_child3));
775 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child3));
776 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child3));
778 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child4));
779 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetTop(root_child4));
780 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child4));
781 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child4));
783 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
785 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
786 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
787 ASSERT_FLOAT_EQ(150, YGNodeLayoutGetWidth(root));
788 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
790 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetLeft(root_child0));
791 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
792 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child0));
793 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child0));
795 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child1));
796 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
797 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child1));
798 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child1));
800 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child2));
801 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child2));
802 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child2));
803 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child2));
805 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetLeft(root_child3));
806 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetTop(root_child3));
807 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child3));
808 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child3));
810 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child4));
811 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetTop(root_child4));
812 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child4));
813 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child4));
815 YGNodeFreeRecursive(root);
817 YGConfigFree(config);
820 TEST(YogaTest, align_content_stretch_row_with_children) {
821 const YGConfigRef config = YGConfigNew();
823 const YGNodeRef root = YGNodeNewWithConfig(config);
824 YGNodeStyleSetFlexDirection(root, YGFlexDirectionRow);
825 YGNodeStyleSetAlignContent(root, YGAlignStretch);
826 YGNodeStyleSetFlexWrap(root, YGWrapWrap);
827 YGNodeStyleSetWidth(root, 150);
828 YGNodeStyleSetHeight(root, 100);
830 const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
831 YGNodeStyleSetWidth(root_child0, 50);
832 YGNodeInsertChild(root, root_child0, 0);
834 const YGNodeRef root_child0_child0 = YGNodeNewWithConfig(config);
835 YGNodeStyleSetFlexGrow(root_child0_child0, 1);
836 YGNodeStyleSetFlexShrink(root_child0_child0, 1);
837 YGNodeStyleSetFlexBasisPercent(root_child0_child0, 0);
838 YGNodeInsertChild(root_child0, root_child0_child0, 0);
840 const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
841 YGNodeStyleSetWidth(root_child1, 50);
842 YGNodeInsertChild(root, root_child1, 1);
844 const YGNodeRef root_child2 = YGNodeNewWithConfig(config);
845 YGNodeStyleSetWidth(root_child2, 50);
846 YGNodeInsertChild(root, root_child2, 2);
848 const YGNodeRef root_child3 = YGNodeNewWithConfig(config);
849 YGNodeStyleSetWidth(root_child3, 50);
850 YGNodeInsertChild(root, root_child3, 3);
852 const YGNodeRef root_child4 = YGNodeNewWithConfig(config);
853 YGNodeStyleSetWidth(root_child4, 50);
854 YGNodeInsertChild(root, root_child4, 4);
855 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
857 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
858 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
859 ASSERT_FLOAT_EQ(150, YGNodeLayoutGetWidth(root));
860 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
862 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
863 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
864 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child0));
865 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child0));
867 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0_child0));
868 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0_child0));
869 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child0_child0));
870 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child0_child0));
872 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child1));
873 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
874 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child1));
875 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child1));
877 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetLeft(root_child2));
878 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child2));
879 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child2));
880 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child2));
882 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child3));
883 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetTop(root_child3));
884 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child3));
885 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child3));
887 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child4));
888 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetTop(root_child4));
889 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child4));
890 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child4));
892 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
894 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
895 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
896 ASSERT_FLOAT_EQ(150, YGNodeLayoutGetWidth(root));
897 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
899 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetLeft(root_child0));
900 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
901 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child0));
902 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child0));
904 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0_child0));
905 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0_child0));
906 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child0_child0));
907 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child0_child0));
909 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child1));
910 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
911 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child1));
912 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child1));
914 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child2));
915 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child2));
916 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child2));
917 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child2));
919 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetLeft(root_child3));
920 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetTop(root_child3));
921 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child3));
922 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child3));
924 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child4));
925 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetTop(root_child4));
926 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child4));
927 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child4));
929 YGNodeFreeRecursive(root);
931 YGConfigFree(config);
934 TEST(YogaTest, align_content_stretch_row_with_flex) {
935 const YGConfigRef config = YGConfigNew();
937 const YGNodeRef root = YGNodeNewWithConfig(config);
938 YGNodeStyleSetFlexDirection(root, YGFlexDirectionRow);
939 YGNodeStyleSetAlignContent(root, YGAlignStretch);
940 YGNodeStyleSetFlexWrap(root, YGWrapWrap);
941 YGNodeStyleSetWidth(root, 150);
942 YGNodeStyleSetHeight(root, 100);
944 const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
945 YGNodeStyleSetWidth(root_child0, 50);
946 YGNodeInsertChild(root, root_child0, 0);
948 const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
949 YGNodeStyleSetFlexGrow(root_child1, 1);
950 YGNodeStyleSetFlexShrink(root_child1, 1);
951 YGNodeStyleSetFlexBasisPercent(root_child1, 0);
952 YGNodeStyleSetWidth(root_child1, 50);
953 YGNodeInsertChild(root, root_child1, 1);
955 const YGNodeRef root_child2 = YGNodeNewWithConfig(config);
956 YGNodeStyleSetWidth(root_child2, 50);
957 YGNodeInsertChild(root, root_child2, 2);
959 const YGNodeRef root_child3 = YGNodeNewWithConfig(config);
960 YGNodeStyleSetFlexGrow(root_child3, 1);
961 YGNodeStyleSetFlexShrink(root_child3, 1);
962 YGNodeStyleSetFlexBasisPercent(root_child3, 0);
963 YGNodeStyleSetWidth(root_child3, 50);
964 YGNodeInsertChild(root, root_child3, 3);
966 const YGNodeRef root_child4 = YGNodeNewWithConfig(config);
967 YGNodeStyleSetWidth(root_child4, 50);
968 YGNodeInsertChild(root, root_child4, 4);
969 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
971 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
972 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
973 ASSERT_FLOAT_EQ(150, YGNodeLayoutGetWidth(root));
974 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
976 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
977 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
978 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child0));
979 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0));
981 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child1));
982 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
983 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetWidth(root_child1));
984 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child1));
986 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child2));
987 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child2));
988 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child2));
989 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child2));
991 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetLeft(root_child3));
992 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child3));
993 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetWidth(root_child3));
994 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child3));
996 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetLeft(root_child4));
997 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child4));
998 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child4));
999 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child4));
1001 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
1003 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
1004 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
1005 ASSERT_FLOAT_EQ(150, YGNodeLayoutGetWidth(root));
1006 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
1008 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetLeft(root_child0));
1009 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
1010 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child0));
1011 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0));
1013 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetLeft(root_child1));
1014 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
1015 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetWidth(root_child1));
1016 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child1));
1018 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child2));
1019 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child2));
1020 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child2));
1021 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child2));
1023 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child3));
1024 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child3));
1025 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetWidth(root_child3));
1026 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child3));
1028 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child4));
1029 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child4));
1030 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child4));
1031 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child4));
1033 YGNodeFreeRecursive(root);
1035 YGConfigFree(config);
1038 TEST(YogaTest, align_content_stretch_row_with_flex_no_shrink) {
1039 const YGConfigRef config = YGConfigNew();
1041 const YGNodeRef root = YGNodeNewWithConfig(config);
1042 YGNodeStyleSetFlexDirection(root, YGFlexDirectionRow);
1043 YGNodeStyleSetAlignContent(root, YGAlignStretch);
1044 YGNodeStyleSetFlexWrap(root, YGWrapWrap);
1045 YGNodeStyleSetWidth(root, 150);
1046 YGNodeStyleSetHeight(root, 100);
1048 const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
1049 YGNodeStyleSetWidth(root_child0, 50);
1050 YGNodeInsertChild(root, root_child0, 0);
1052 const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
1053 YGNodeStyleSetFlexGrow(root_child1, 1);
1054 YGNodeStyleSetFlexShrink(root_child1, 1);
1055 YGNodeStyleSetFlexBasisPercent(root_child1, 0);
1056 YGNodeStyleSetWidth(root_child1, 50);
1057 YGNodeInsertChild(root, root_child1, 1);
1059 const YGNodeRef root_child2 = YGNodeNewWithConfig(config);
1060 YGNodeStyleSetWidth(root_child2, 50);
1061 YGNodeInsertChild(root, root_child2, 2);
1063 const YGNodeRef root_child3 = YGNodeNewWithConfig(config);
1064 YGNodeStyleSetFlexGrow(root_child3, 1);
1065 YGNodeStyleSetFlexBasisPercent(root_child3, 0);
1066 YGNodeStyleSetWidth(root_child3, 50);
1067 YGNodeInsertChild(root, root_child3, 3);
1069 const YGNodeRef root_child4 = YGNodeNewWithConfig(config);
1070 YGNodeStyleSetWidth(root_child4, 50);
1071 YGNodeInsertChild(root, root_child4, 4);
1072 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
1074 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
1075 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
1076 ASSERT_FLOAT_EQ(150, YGNodeLayoutGetWidth(root));
1077 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
1079 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
1080 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
1081 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child0));
1082 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0));
1084 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child1));
1085 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
1086 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetWidth(root_child1));
1087 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child1));
1089 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child2));
1090 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child2));
1091 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child2));
1092 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child2));
1094 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetLeft(root_child3));
1095 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child3));
1096 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetWidth(root_child3));
1097 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child3));
1099 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetLeft(root_child4));
1100 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child4));
1101 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child4));
1102 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child4));
1104 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
1106 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
1107 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
1108 ASSERT_FLOAT_EQ(150, YGNodeLayoutGetWidth(root));
1109 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
1111 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetLeft(root_child0));
1112 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
1113 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child0));
1114 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0));
1116 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetLeft(root_child1));
1117 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
1118 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetWidth(root_child1));
1119 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child1));
1121 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child2));
1122 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child2));
1123 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child2));
1124 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child2));
1126 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child3));
1127 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child3));
1128 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetWidth(root_child3));
1129 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child3));
1131 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child4));
1132 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child4));
1133 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child4));
1134 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child4));
1136 YGNodeFreeRecursive(root);
1138 YGConfigFree(config);
1141 TEST(YogaTest, align_content_stretch_row_with_margin) {
1142 const YGConfigRef config = YGConfigNew();
1144 const YGNodeRef root = YGNodeNewWithConfig(config);
1145 YGNodeStyleSetFlexDirection(root, YGFlexDirectionRow);
1146 YGNodeStyleSetAlignContent(root, YGAlignStretch);
1147 YGNodeStyleSetFlexWrap(root, YGWrapWrap);
1148 YGNodeStyleSetWidth(root, 150);
1149 YGNodeStyleSetHeight(root, 100);
1151 const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
1152 YGNodeStyleSetWidth(root_child0, 50);
1153 YGNodeInsertChild(root, root_child0, 0);
1155 const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
1156 YGNodeStyleSetMargin(root_child1, YGEdgeLeft, 10);
1157 YGNodeStyleSetMargin(root_child1, YGEdgeTop, 10);
1158 YGNodeStyleSetMargin(root_child1, YGEdgeRight, 10);
1159 YGNodeStyleSetMargin(root_child1, YGEdgeBottom, 10);
1160 YGNodeStyleSetWidth(root_child1, 50);
1161 YGNodeInsertChild(root, root_child1, 1);
1163 const YGNodeRef root_child2 = YGNodeNewWithConfig(config);
1164 YGNodeStyleSetWidth(root_child2, 50);
1165 YGNodeInsertChild(root, root_child2, 2);
1167 const YGNodeRef root_child3 = YGNodeNewWithConfig(config);
1168 YGNodeStyleSetMargin(root_child3, YGEdgeLeft, 10);
1169 YGNodeStyleSetMargin(root_child3, YGEdgeTop, 10);
1170 YGNodeStyleSetMargin(root_child3, YGEdgeRight, 10);
1171 YGNodeStyleSetMargin(root_child3, YGEdgeBottom, 10);
1172 YGNodeStyleSetWidth(root_child3, 50);
1173 YGNodeInsertChild(root, root_child3, 3);
1175 const YGNodeRef root_child4 = YGNodeNewWithConfig(config);
1176 YGNodeStyleSetWidth(root_child4, 50);
1177 YGNodeInsertChild(root, root_child4, 4);
1178 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
1180 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
1181 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
1182 ASSERT_FLOAT_EQ(150, YGNodeLayoutGetWidth(root));
1183 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
1185 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
1186 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
1187 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child0));
1188 ASSERT_FLOAT_EQ(40, YGNodeLayoutGetHeight(root_child0));
1190 ASSERT_FLOAT_EQ(60, YGNodeLayoutGetLeft(root_child1));
1191 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetTop(root_child1));
1192 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child1));
1193 ASSERT_FLOAT_EQ(20, YGNodeLayoutGetHeight(root_child1));
1195 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child2));
1196 ASSERT_FLOAT_EQ(40, YGNodeLayoutGetTop(root_child2));
1197 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child2));
1198 ASSERT_FLOAT_EQ(40, YGNodeLayoutGetHeight(root_child2));
1200 ASSERT_FLOAT_EQ(60, YGNodeLayoutGetLeft(root_child3));
1201 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetTop(root_child3));
1202 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child3));
1203 ASSERT_FLOAT_EQ(20, YGNodeLayoutGetHeight(root_child3));
1205 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child4));
1206 ASSERT_FLOAT_EQ(80, YGNodeLayoutGetTop(root_child4));
1207 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child4));
1208 ASSERT_FLOAT_EQ(20, YGNodeLayoutGetHeight(root_child4));
1210 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
1212 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
1213 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
1214 ASSERT_FLOAT_EQ(150, YGNodeLayoutGetWidth(root));
1215 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
1217 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetLeft(root_child0));
1218 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
1219 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child0));
1220 ASSERT_FLOAT_EQ(40, YGNodeLayoutGetHeight(root_child0));
1222 ASSERT_FLOAT_EQ(40, YGNodeLayoutGetLeft(root_child1));
1223 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetTop(root_child1));
1224 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child1));
1225 ASSERT_FLOAT_EQ(20, YGNodeLayoutGetHeight(root_child1));
1227 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetLeft(root_child2));
1228 ASSERT_FLOAT_EQ(40, YGNodeLayoutGetTop(root_child2));
1229 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child2));
1230 ASSERT_FLOAT_EQ(40, YGNodeLayoutGetHeight(root_child2));
1232 ASSERT_FLOAT_EQ(40, YGNodeLayoutGetLeft(root_child3));
1233 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetTop(root_child3));
1234 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child3));
1235 ASSERT_FLOAT_EQ(20, YGNodeLayoutGetHeight(root_child3));
1237 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetLeft(root_child4));
1238 ASSERT_FLOAT_EQ(80, YGNodeLayoutGetTop(root_child4));
1239 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child4));
1240 ASSERT_FLOAT_EQ(20, YGNodeLayoutGetHeight(root_child4));
1242 YGNodeFreeRecursive(root);
1244 YGConfigFree(config);
1247 TEST(YogaTest, align_content_stretch_row_with_padding) {
1248 const YGConfigRef config = YGConfigNew();
1250 const YGNodeRef root = YGNodeNewWithConfig(config);
1251 YGNodeStyleSetFlexDirection(root, YGFlexDirectionRow);
1252 YGNodeStyleSetAlignContent(root, YGAlignStretch);
1253 YGNodeStyleSetFlexWrap(root, YGWrapWrap);
1254 YGNodeStyleSetWidth(root, 150);
1255 YGNodeStyleSetHeight(root, 100);
1257 const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
1258 YGNodeStyleSetWidth(root_child0, 50);
1259 YGNodeInsertChild(root, root_child0, 0);
1261 const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
1262 YGNodeStyleSetPadding(root_child1, YGEdgeLeft, 10);
1263 YGNodeStyleSetPadding(root_child1, YGEdgeTop, 10);
1264 YGNodeStyleSetPadding(root_child1, YGEdgeRight, 10);
1265 YGNodeStyleSetPadding(root_child1, YGEdgeBottom, 10);
1266 YGNodeStyleSetWidth(root_child1, 50);
1267 YGNodeInsertChild(root, root_child1, 1);
1269 const YGNodeRef root_child2 = YGNodeNewWithConfig(config);
1270 YGNodeStyleSetWidth(root_child2, 50);
1271 YGNodeInsertChild(root, root_child2, 2);
1273 const YGNodeRef root_child3 = YGNodeNewWithConfig(config);
1274 YGNodeStyleSetPadding(root_child3, YGEdgeLeft, 10);
1275 YGNodeStyleSetPadding(root_child3, YGEdgeTop, 10);
1276 YGNodeStyleSetPadding(root_child3, YGEdgeRight, 10);
1277 YGNodeStyleSetPadding(root_child3, YGEdgeBottom, 10);
1278 YGNodeStyleSetWidth(root_child3, 50);
1279 YGNodeInsertChild(root, root_child3, 3);
1281 const YGNodeRef root_child4 = YGNodeNewWithConfig(config);
1282 YGNodeStyleSetWidth(root_child4, 50);
1283 YGNodeInsertChild(root, root_child4, 4);
1284 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
1286 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
1287 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
1288 ASSERT_FLOAT_EQ(150, YGNodeLayoutGetWidth(root));
1289 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
1291 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
1292 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
1293 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child0));
1294 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child0));
1296 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child1));
1297 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
1298 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child1));
1299 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child1));
1301 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetLeft(root_child2));
1302 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child2));
1303 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child2));
1304 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child2));
1306 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child3));
1307 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetTop(root_child3));
1308 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child3));
1309 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child3));
1311 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child4));
1312 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetTop(root_child4));
1313 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child4));
1314 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child4));
1316 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
1318 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
1319 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
1320 ASSERT_FLOAT_EQ(150, YGNodeLayoutGetWidth(root));
1321 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
1323 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetLeft(root_child0));
1324 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
1325 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child0));
1326 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child0));
1328 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child1));
1329 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
1330 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child1));
1331 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child1));
1333 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child2));
1334 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child2));
1335 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child2));
1336 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child2));
1338 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetLeft(root_child3));
1339 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetTop(root_child3));
1340 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child3));
1341 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child3));
1343 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child4));
1344 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetTop(root_child4));
1345 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child4));
1346 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child4));
1348 YGNodeFreeRecursive(root);
1350 YGConfigFree(config);
1353 TEST(YogaTest, align_content_stretch_row_with_single_row) {
1354 const YGConfigRef config = YGConfigNew();
1356 const YGNodeRef root = YGNodeNewWithConfig(config);
1357 YGNodeStyleSetFlexDirection(root, YGFlexDirectionRow);
1358 YGNodeStyleSetAlignContent(root, YGAlignStretch);
1359 YGNodeStyleSetFlexWrap(root, YGWrapWrap);
1360 YGNodeStyleSetWidth(root, 150);
1361 YGNodeStyleSetHeight(root, 100);
1363 const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
1364 YGNodeStyleSetWidth(root_child0, 50);
1365 YGNodeInsertChild(root, root_child0, 0);
1367 const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
1368 YGNodeStyleSetWidth(root_child1, 50);
1369 YGNodeInsertChild(root, root_child1, 1);
1370 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
1372 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
1373 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
1374 ASSERT_FLOAT_EQ(150, YGNodeLayoutGetWidth(root));
1375 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
1377 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
1378 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
1379 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child0));
1380 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0));
1382 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child1));
1383 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
1384 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child1));
1385 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child1));
1387 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
1389 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
1390 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
1391 ASSERT_FLOAT_EQ(150, YGNodeLayoutGetWidth(root));
1392 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
1394 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetLeft(root_child0));
1395 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
1396 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child0));
1397 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0));
1399 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child1));
1400 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
1401 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child1));
1402 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child1));
1404 YGNodeFreeRecursive(root);
1406 YGConfigFree(config);
1409 TEST(YogaTest, align_content_stretch_row_with_fixed_height) {
1410 const YGConfigRef config = YGConfigNew();
1412 const YGNodeRef root = YGNodeNewWithConfig(config);
1413 YGNodeStyleSetFlexDirection(root, YGFlexDirectionRow);
1414 YGNodeStyleSetAlignContent(root, YGAlignStretch);
1415 YGNodeStyleSetFlexWrap(root, YGWrapWrap);
1416 YGNodeStyleSetWidth(root, 150);
1417 YGNodeStyleSetHeight(root, 100);
1419 const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
1420 YGNodeStyleSetWidth(root_child0, 50);
1421 YGNodeInsertChild(root, root_child0, 0);
1423 const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
1424 YGNodeStyleSetWidth(root_child1, 50);
1425 YGNodeStyleSetHeight(root_child1, 60);
1426 YGNodeInsertChild(root, root_child1, 1);
1428 const YGNodeRef root_child2 = YGNodeNewWithConfig(config);
1429 YGNodeStyleSetWidth(root_child2, 50);
1430 YGNodeInsertChild(root, root_child2, 2);
1432 const YGNodeRef root_child3 = YGNodeNewWithConfig(config);
1433 YGNodeStyleSetWidth(root_child3, 50);
1434 YGNodeInsertChild(root, root_child3, 3);
1436 const YGNodeRef root_child4 = YGNodeNewWithConfig(config);
1437 YGNodeStyleSetWidth(root_child4, 50);
1438 YGNodeInsertChild(root, root_child4, 4);
1439 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
1441 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
1442 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
1443 ASSERT_FLOAT_EQ(150, YGNodeLayoutGetWidth(root));
1444 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
1446 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
1447 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
1448 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child0));
1449 ASSERT_FLOAT_EQ(80, YGNodeLayoutGetHeight(root_child0));
1451 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child1));
1452 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
1453 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child1));
1454 ASSERT_FLOAT_EQ(60, YGNodeLayoutGetHeight(root_child1));
1456 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetLeft(root_child2));
1457 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child2));
1458 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child2));
1459 ASSERT_FLOAT_EQ(80, YGNodeLayoutGetHeight(root_child2));
1461 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child3));
1462 ASSERT_FLOAT_EQ(80, YGNodeLayoutGetTop(root_child3));
1463 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child3));
1464 ASSERT_FLOAT_EQ(20, YGNodeLayoutGetHeight(root_child3));
1466 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child4));
1467 ASSERT_FLOAT_EQ(80, YGNodeLayoutGetTop(root_child4));
1468 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child4));
1469 ASSERT_FLOAT_EQ(20, YGNodeLayoutGetHeight(root_child4));
1471 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
1473 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
1474 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
1475 ASSERT_FLOAT_EQ(150, YGNodeLayoutGetWidth(root));
1476 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
1478 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetLeft(root_child0));
1479 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
1480 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child0));
1481 ASSERT_FLOAT_EQ(80, YGNodeLayoutGetHeight(root_child0));
1483 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child1));
1484 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
1485 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child1));
1486 ASSERT_FLOAT_EQ(60, YGNodeLayoutGetHeight(root_child1));
1488 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child2));
1489 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child2));
1490 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child2));
1491 ASSERT_FLOAT_EQ(80, YGNodeLayoutGetHeight(root_child2));
1493 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetLeft(root_child3));
1494 ASSERT_FLOAT_EQ(80, YGNodeLayoutGetTop(root_child3));
1495 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child3));
1496 ASSERT_FLOAT_EQ(20, YGNodeLayoutGetHeight(root_child3));
1498 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child4));
1499 ASSERT_FLOAT_EQ(80, YGNodeLayoutGetTop(root_child4));
1500 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child4));
1501 ASSERT_FLOAT_EQ(20, YGNodeLayoutGetHeight(root_child4));
1503 YGNodeFreeRecursive(root);
1505 YGConfigFree(config);
1508 TEST(YogaTest, align_content_stretch_row_with_max_height) {
1509 const YGConfigRef config = YGConfigNew();
1511 const YGNodeRef root = YGNodeNewWithConfig(config);
1512 YGNodeStyleSetFlexDirection(root, YGFlexDirectionRow);
1513 YGNodeStyleSetAlignContent(root, YGAlignStretch);
1514 YGNodeStyleSetFlexWrap(root, YGWrapWrap);
1515 YGNodeStyleSetWidth(root, 150);
1516 YGNodeStyleSetHeight(root, 100);
1518 const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
1519 YGNodeStyleSetWidth(root_child0, 50);
1520 YGNodeInsertChild(root, root_child0, 0);
1522 const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
1523 YGNodeStyleSetWidth(root_child1, 50);
1524 YGNodeStyleSetMaxHeight(root_child1, 20);
1525 YGNodeInsertChild(root, root_child1, 1);
1527 const YGNodeRef root_child2 = YGNodeNewWithConfig(config);
1528 YGNodeStyleSetWidth(root_child2, 50);
1529 YGNodeInsertChild(root, root_child2, 2);
1531 const YGNodeRef root_child3 = YGNodeNewWithConfig(config);
1532 YGNodeStyleSetWidth(root_child3, 50);
1533 YGNodeInsertChild(root, root_child3, 3);
1535 const YGNodeRef root_child4 = YGNodeNewWithConfig(config);
1536 YGNodeStyleSetWidth(root_child4, 50);
1537 YGNodeInsertChild(root, root_child4, 4);
1538 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
1540 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
1541 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
1542 ASSERT_FLOAT_EQ(150, YGNodeLayoutGetWidth(root));
1543 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
1545 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
1546 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
1547 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child0));
1548 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child0));
1550 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child1));
1551 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
1552 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child1));
1553 ASSERT_FLOAT_EQ(20, YGNodeLayoutGetHeight(root_child1));
1555 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetLeft(root_child2));
1556 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child2));
1557 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child2));
1558 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child2));
1560 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child3));
1561 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetTop(root_child3));
1562 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child3));
1563 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child3));
1565 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child4));
1566 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetTop(root_child4));
1567 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child4));
1568 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child4));
1570 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
1572 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
1573 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
1574 ASSERT_FLOAT_EQ(150, YGNodeLayoutGetWidth(root));
1575 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
1577 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetLeft(root_child0));
1578 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
1579 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child0));
1580 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child0));
1582 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child1));
1583 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
1584 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child1));
1585 ASSERT_FLOAT_EQ(20, YGNodeLayoutGetHeight(root_child1));
1587 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child2));
1588 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child2));
1589 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child2));
1590 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child2));
1592 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetLeft(root_child3));
1593 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetTop(root_child3));
1594 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child3));
1595 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child3));
1597 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child4));
1598 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetTop(root_child4));
1599 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child4));
1600 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child4));
1602 YGNodeFreeRecursive(root);
1604 YGConfigFree(config);
1607 TEST(YogaTest, align_content_stretch_row_with_min_height) {
1608 const YGConfigRef config = YGConfigNew();
1610 const YGNodeRef root = YGNodeNewWithConfig(config);
1611 YGNodeStyleSetFlexDirection(root, YGFlexDirectionRow);
1612 YGNodeStyleSetAlignContent(root, YGAlignStretch);
1613 YGNodeStyleSetFlexWrap(root, YGWrapWrap);
1614 YGNodeStyleSetWidth(root, 150);
1615 YGNodeStyleSetHeight(root, 100);
1617 const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
1618 YGNodeStyleSetWidth(root_child0, 50);
1619 YGNodeInsertChild(root, root_child0, 0);
1621 const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
1622 YGNodeStyleSetWidth(root_child1, 50);
1623 YGNodeStyleSetMinHeight(root_child1, 80);
1624 YGNodeInsertChild(root, root_child1, 1);
1626 const YGNodeRef root_child2 = YGNodeNewWithConfig(config);
1627 YGNodeStyleSetWidth(root_child2, 50);
1628 YGNodeInsertChild(root, root_child2, 2);
1630 const YGNodeRef root_child3 = YGNodeNewWithConfig(config);
1631 YGNodeStyleSetWidth(root_child3, 50);
1632 YGNodeInsertChild(root, root_child3, 3);
1634 const YGNodeRef root_child4 = YGNodeNewWithConfig(config);
1635 YGNodeStyleSetWidth(root_child4, 50);
1636 YGNodeInsertChild(root, root_child4, 4);
1637 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
1639 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
1640 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
1641 ASSERT_FLOAT_EQ(150, YGNodeLayoutGetWidth(root));
1642 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
1644 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
1645 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
1646 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child0));
1647 ASSERT_FLOAT_EQ(90, YGNodeLayoutGetHeight(root_child0));
1649 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child1));
1650 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
1651 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child1));
1652 ASSERT_FLOAT_EQ(90, YGNodeLayoutGetHeight(root_child1));
1654 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetLeft(root_child2));
1655 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child2));
1656 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child2));
1657 ASSERT_FLOAT_EQ(90, YGNodeLayoutGetHeight(root_child2));
1659 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child3));
1660 ASSERT_FLOAT_EQ(90, YGNodeLayoutGetTop(root_child3));
1661 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child3));
1662 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child3));
1664 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child4));
1665 ASSERT_FLOAT_EQ(90, YGNodeLayoutGetTop(root_child4));
1666 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child4));
1667 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child4));
1669 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
1671 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
1672 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
1673 ASSERT_FLOAT_EQ(150, YGNodeLayoutGetWidth(root));
1674 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
1676 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetLeft(root_child0));
1677 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
1678 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child0));
1679 ASSERT_FLOAT_EQ(90, YGNodeLayoutGetHeight(root_child0));
1681 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child1));
1682 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
1683 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child1));
1684 ASSERT_FLOAT_EQ(90, YGNodeLayoutGetHeight(root_child1));
1686 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child2));
1687 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child2));
1688 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child2));
1689 ASSERT_FLOAT_EQ(90, YGNodeLayoutGetHeight(root_child2));
1691 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetLeft(root_child3));
1692 ASSERT_FLOAT_EQ(90, YGNodeLayoutGetTop(root_child3));
1693 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child3));
1694 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child3));
1696 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child4));
1697 ASSERT_FLOAT_EQ(90, YGNodeLayoutGetTop(root_child4));
1698 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child4));
1699 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child4));
1701 YGNodeFreeRecursive(root);
1703 YGConfigFree(config);
1706 TEST(YogaTest, align_content_stretch_column) {
1707 const YGConfigRef config = YGConfigNew();
1709 const YGNodeRef root = YGNodeNewWithConfig(config);
1710 YGNodeStyleSetAlignContent(root, YGAlignStretch);
1711 YGNodeStyleSetFlexWrap(root, YGWrapWrap);
1712 YGNodeStyleSetWidth(root, 100);
1713 YGNodeStyleSetHeight(root, 150);
1715 const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
1716 YGNodeStyleSetHeight(root_child0, 50);
1717 YGNodeInsertChild(root, root_child0, 0);
1719 const YGNodeRef root_child0_child0 = YGNodeNewWithConfig(config);
1720 YGNodeStyleSetFlexGrow(root_child0_child0, 1);
1721 YGNodeStyleSetFlexShrink(root_child0_child0, 1);
1722 YGNodeStyleSetFlexBasisPercent(root_child0_child0, 0);
1723 YGNodeInsertChild(root_child0, root_child0_child0, 0);
1725 const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
1726 YGNodeStyleSetFlexGrow(root_child1, 1);
1727 YGNodeStyleSetFlexShrink(root_child1, 1);
1728 YGNodeStyleSetFlexBasisPercent(root_child1, 0);
1729 YGNodeStyleSetHeight(root_child1, 50);
1730 YGNodeInsertChild(root, root_child1, 1);
1732 const YGNodeRef root_child2 = YGNodeNewWithConfig(config);
1733 YGNodeStyleSetHeight(root_child2, 50);
1734 YGNodeInsertChild(root, root_child2, 2);
1736 const YGNodeRef root_child3 = YGNodeNewWithConfig(config);
1737 YGNodeStyleSetHeight(root_child3, 50);
1738 YGNodeInsertChild(root, root_child3, 3);
1740 const YGNodeRef root_child4 = YGNodeNewWithConfig(config);
1741 YGNodeStyleSetHeight(root_child4, 50);
1742 YGNodeInsertChild(root, root_child4, 4);
1743 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
1745 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
1746 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
1747 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
1748 ASSERT_FLOAT_EQ(150, YGNodeLayoutGetHeight(root));
1750 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
1751 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
1752 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child0));
1753 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child0));
1755 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0_child0));
1756 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0_child0));
1757 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child0_child0));
1758 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child0_child0));
1760 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1));
1761 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetTop(root_child1));
1762 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child1));
1763 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child1));
1765 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child2));
1766 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetTop(root_child2));
1767 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child2));
1768 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child2));
1770 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child3));
1771 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetTop(root_child3));
1772 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child3));
1773 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child3));
1775 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child4));
1776 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child4));
1777 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child4));
1778 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child4));
1780 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
1782 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
1783 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
1784 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
1785 ASSERT_FLOAT_EQ(150, YGNodeLayoutGetHeight(root));
1787 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child0));
1788 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
1789 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child0));
1790 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child0));
1792 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0_child0));
1793 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0_child0));
1794 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child0_child0));
1795 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child0_child0));
1797 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child1));
1798 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetTop(root_child1));
1799 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child1));
1800 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child1));
1802 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child2));
1803 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetTop(root_child2));
1804 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child2));
1805 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child2));
1807 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child3));
1808 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetTop(root_child3));
1809 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child3));
1810 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child3));
1812 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child4));
1813 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child4));
1814 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child4));
1815 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child4));
1817 YGNodeFreeRecursive(root);
1819 YGConfigFree(config);
1822 TEST(YogaTest, align_content_stretch_is_not_overriding_align_items) {
1823 const YGConfigRef config = YGConfigNew();
1825 const YGNodeRef root = YGNodeNewWithConfig(config);
1826 YGNodeStyleSetAlignContent(root, YGAlignStretch);
1828 const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
1829 YGNodeStyleSetFlexDirection(root_child0, YGFlexDirectionRow);
1830 YGNodeStyleSetAlignContent(root_child0, YGAlignStretch);
1831 YGNodeStyleSetAlignItems(root_child0, YGAlignCenter);
1832 YGNodeStyleSetWidth(root_child0, 100);
1833 YGNodeStyleSetHeight(root_child0, 100);
1834 YGNodeInsertChild(root, root_child0, 0);
1836 const YGNodeRef root_child0_child0 = YGNodeNewWithConfig(config);
1837 YGNodeStyleSetAlignContent(root_child0_child0, YGAlignStretch);
1838 YGNodeStyleSetWidth(root_child0_child0, 10);
1839 YGNodeStyleSetHeight(root_child0_child0, 10);
1840 YGNodeInsertChild(root_child0, root_child0_child0, 0);
1841 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
1843 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
1844 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
1845 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
1846 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
1848 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
1849 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
1850 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0));
1851 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0));
1853 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0_child0));
1854 ASSERT_FLOAT_EQ(45, YGNodeLayoutGetTop(root_child0_child0));
1855 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0_child0));
1856 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child0_child0));
1858 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
1860 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
1861 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
1862 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
1863 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
1865 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
1866 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
1867 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0));
1868 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0));
1870 ASSERT_FLOAT_EQ(90, YGNodeLayoutGetLeft(root_child0_child0));
1871 ASSERT_FLOAT_EQ(45, YGNodeLayoutGetTop(root_child0_child0));
1872 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0_child0));
1873 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child0_child0));
1875 YGNodeFreeRecursive(root);
1877 YGConfigFree(config);