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/YGJustifyContentTest.html
10 #include <gtest/gtest.h>
11 #include <yoga/Yoga.h>
13 TEST(YogaTest, justify_content_row_flex_start) {
14 const YGConfigRef config = YGConfigNew();
16 const YGNodeRef root = YGNodeNewWithConfig(config);
17 YGNodeStyleSetFlexDirection(root, YGFlexDirectionRow);
18 YGNodeStyleSetWidth(root, 102);
19 YGNodeStyleSetHeight(root, 102);
21 const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
22 YGNodeStyleSetWidth(root_child0, 10);
23 YGNodeInsertChild(root, root_child0, 0);
25 const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
26 YGNodeStyleSetWidth(root_child1, 10);
27 YGNodeInsertChild(root, root_child1, 1);
29 const YGNodeRef root_child2 = YGNodeNewWithConfig(config);
30 YGNodeStyleSetWidth(root_child2, 10);
31 YGNodeInsertChild(root, root_child2, 2);
32 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
34 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
35 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
36 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetWidth(root));
37 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetHeight(root));
39 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
40 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
41 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0));
42 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetHeight(root_child0));
44 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetLeft(root_child1));
45 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
46 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child1));
47 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetHeight(root_child1));
49 ASSERT_FLOAT_EQ(20, YGNodeLayoutGetLeft(root_child2));
50 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child2));
51 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child2));
52 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetHeight(root_child2));
54 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
56 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
57 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
58 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetWidth(root));
59 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetHeight(root));
61 ASSERT_FLOAT_EQ(92, YGNodeLayoutGetLeft(root_child0));
62 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
63 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0));
64 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetHeight(root_child0));
66 ASSERT_FLOAT_EQ(82, YGNodeLayoutGetLeft(root_child1));
67 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
68 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child1));
69 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetHeight(root_child1));
71 ASSERT_FLOAT_EQ(72, YGNodeLayoutGetLeft(root_child2));
72 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child2));
73 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child2));
74 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetHeight(root_child2));
76 YGNodeFreeRecursive(root);
81 TEST(YogaTest, justify_content_row_flex_end) {
82 const YGConfigRef config = YGConfigNew();
84 const YGNodeRef root = YGNodeNewWithConfig(config);
85 YGNodeStyleSetFlexDirection(root, YGFlexDirectionRow);
86 YGNodeStyleSetJustifyContent(root, YGJustifyFlexEnd);
87 YGNodeStyleSetWidth(root, 102);
88 YGNodeStyleSetHeight(root, 102);
90 const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
91 YGNodeStyleSetWidth(root_child0, 10);
92 YGNodeInsertChild(root, root_child0, 0);
94 const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
95 YGNodeStyleSetWidth(root_child1, 10);
96 YGNodeInsertChild(root, root_child1, 1);
98 const YGNodeRef root_child2 = YGNodeNewWithConfig(config);
99 YGNodeStyleSetWidth(root_child2, 10);
100 YGNodeInsertChild(root, root_child2, 2);
101 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
103 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
104 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
105 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetWidth(root));
106 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetHeight(root));
108 ASSERT_FLOAT_EQ(72, YGNodeLayoutGetLeft(root_child0));
109 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
110 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0));
111 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetHeight(root_child0));
113 ASSERT_FLOAT_EQ(82, YGNodeLayoutGetLeft(root_child1));
114 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
115 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child1));
116 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetHeight(root_child1));
118 ASSERT_FLOAT_EQ(92, YGNodeLayoutGetLeft(root_child2));
119 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child2));
120 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child2));
121 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetHeight(root_child2));
123 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
125 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
126 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
127 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetWidth(root));
128 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetHeight(root));
130 ASSERT_FLOAT_EQ(20, YGNodeLayoutGetLeft(root_child0));
131 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
132 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0));
133 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetHeight(root_child0));
135 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetLeft(root_child1));
136 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
137 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child1));
138 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetHeight(root_child1));
140 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child2));
141 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child2));
142 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child2));
143 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetHeight(root_child2));
145 YGNodeFreeRecursive(root);
147 YGConfigFree(config);
150 TEST(YogaTest, justify_content_row_center) {
151 const YGConfigRef config = YGConfigNew();
153 const YGNodeRef root = YGNodeNewWithConfig(config);
154 YGNodeStyleSetFlexDirection(root, YGFlexDirectionRow);
155 YGNodeStyleSetJustifyContent(root, YGJustifyCenter);
156 YGNodeStyleSetWidth(root, 102);
157 YGNodeStyleSetHeight(root, 102);
159 const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
160 YGNodeStyleSetWidth(root_child0, 10);
161 YGNodeInsertChild(root, root_child0, 0);
163 const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
164 YGNodeStyleSetWidth(root_child1, 10);
165 YGNodeInsertChild(root, root_child1, 1);
167 const YGNodeRef root_child2 = YGNodeNewWithConfig(config);
168 YGNodeStyleSetWidth(root_child2, 10);
169 YGNodeInsertChild(root, root_child2, 2);
170 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
172 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
173 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
174 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetWidth(root));
175 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetHeight(root));
177 ASSERT_FLOAT_EQ(36, YGNodeLayoutGetLeft(root_child0));
178 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
179 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0));
180 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetHeight(root_child0));
182 ASSERT_FLOAT_EQ(46, YGNodeLayoutGetLeft(root_child1));
183 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
184 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child1));
185 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetHeight(root_child1));
187 ASSERT_FLOAT_EQ(56, YGNodeLayoutGetLeft(root_child2));
188 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child2));
189 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child2));
190 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetHeight(root_child2));
192 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
194 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
195 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
196 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetWidth(root));
197 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetHeight(root));
199 ASSERT_FLOAT_EQ(56, YGNodeLayoutGetLeft(root_child0));
200 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
201 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0));
202 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetHeight(root_child0));
204 ASSERT_FLOAT_EQ(46, YGNodeLayoutGetLeft(root_child1));
205 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
206 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child1));
207 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetHeight(root_child1));
209 ASSERT_FLOAT_EQ(36, YGNodeLayoutGetLeft(root_child2));
210 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child2));
211 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child2));
212 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetHeight(root_child2));
214 YGNodeFreeRecursive(root);
216 YGConfigFree(config);
219 TEST(YogaTest, justify_content_row_space_between) {
220 const YGConfigRef config = YGConfigNew();
222 const YGNodeRef root = YGNodeNewWithConfig(config);
223 YGNodeStyleSetFlexDirection(root, YGFlexDirectionRow);
224 YGNodeStyleSetJustifyContent(root, YGJustifySpaceBetween);
225 YGNodeStyleSetWidth(root, 102);
226 YGNodeStyleSetHeight(root, 102);
228 const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
229 YGNodeStyleSetWidth(root_child0, 10);
230 YGNodeInsertChild(root, root_child0, 0);
232 const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
233 YGNodeStyleSetWidth(root_child1, 10);
234 YGNodeInsertChild(root, root_child1, 1);
236 const YGNodeRef root_child2 = YGNodeNewWithConfig(config);
237 YGNodeStyleSetWidth(root_child2, 10);
238 YGNodeInsertChild(root, root_child2, 2);
239 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
241 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
242 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
243 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetWidth(root));
244 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetHeight(root));
246 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
247 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
248 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0));
249 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetHeight(root_child0));
251 ASSERT_FLOAT_EQ(46, YGNodeLayoutGetLeft(root_child1));
252 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
253 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child1));
254 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetHeight(root_child1));
256 ASSERT_FLOAT_EQ(92, YGNodeLayoutGetLeft(root_child2));
257 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child2));
258 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child2));
259 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetHeight(root_child2));
261 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
263 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
264 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
265 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetWidth(root));
266 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetHeight(root));
268 ASSERT_FLOAT_EQ(92, YGNodeLayoutGetLeft(root_child0));
269 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
270 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0));
271 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetHeight(root_child0));
273 ASSERT_FLOAT_EQ(46, YGNodeLayoutGetLeft(root_child1));
274 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
275 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child1));
276 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetHeight(root_child1));
278 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child2));
279 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child2));
280 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child2));
281 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetHeight(root_child2));
283 YGNodeFreeRecursive(root);
285 YGConfigFree(config);
288 TEST(YogaTest, justify_content_row_space_around) {
289 const YGConfigRef config = YGConfigNew();
291 const YGNodeRef root = YGNodeNewWithConfig(config);
292 YGNodeStyleSetFlexDirection(root, YGFlexDirectionRow);
293 YGNodeStyleSetJustifyContent(root, YGJustifySpaceAround);
294 YGNodeStyleSetWidth(root, 102);
295 YGNodeStyleSetHeight(root, 102);
297 const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
298 YGNodeStyleSetWidth(root_child0, 10);
299 YGNodeInsertChild(root, root_child0, 0);
301 const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
302 YGNodeStyleSetWidth(root_child1, 10);
303 YGNodeInsertChild(root, root_child1, 1);
305 const YGNodeRef root_child2 = YGNodeNewWithConfig(config);
306 YGNodeStyleSetWidth(root_child2, 10);
307 YGNodeInsertChild(root, root_child2, 2);
308 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
310 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
311 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
312 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetWidth(root));
313 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetHeight(root));
315 ASSERT_FLOAT_EQ(12, YGNodeLayoutGetLeft(root_child0));
316 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
317 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0));
318 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetHeight(root_child0));
320 ASSERT_FLOAT_EQ(46, YGNodeLayoutGetLeft(root_child1));
321 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
322 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child1));
323 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetHeight(root_child1));
325 ASSERT_FLOAT_EQ(80, YGNodeLayoutGetLeft(root_child2));
326 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child2));
327 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child2));
328 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetHeight(root_child2));
330 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
332 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
333 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
334 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetWidth(root));
335 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetHeight(root));
337 ASSERT_FLOAT_EQ(80, YGNodeLayoutGetLeft(root_child0));
338 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
339 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0));
340 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetHeight(root_child0));
342 ASSERT_FLOAT_EQ(46, YGNodeLayoutGetLeft(root_child1));
343 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
344 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child1));
345 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetHeight(root_child1));
347 ASSERT_FLOAT_EQ(12, YGNodeLayoutGetLeft(root_child2));
348 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child2));
349 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child2));
350 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetHeight(root_child2));
352 YGNodeFreeRecursive(root);
354 YGConfigFree(config);
357 TEST(YogaTest, justify_content_column_flex_start) {
358 const YGConfigRef config = YGConfigNew();
360 const YGNodeRef root = YGNodeNewWithConfig(config);
361 YGNodeStyleSetWidth(root, 102);
362 YGNodeStyleSetHeight(root, 102);
364 const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
365 YGNodeStyleSetHeight(root_child0, 10);
366 YGNodeInsertChild(root, root_child0, 0);
368 const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
369 YGNodeStyleSetHeight(root_child1, 10);
370 YGNodeInsertChild(root, root_child1, 1);
372 const YGNodeRef root_child2 = YGNodeNewWithConfig(config);
373 YGNodeStyleSetHeight(root_child2, 10);
374 YGNodeInsertChild(root, root_child2, 2);
375 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
377 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
378 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
379 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetWidth(root));
380 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetHeight(root));
382 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
383 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
384 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetWidth(root_child0));
385 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child0));
387 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1));
388 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetTop(root_child1));
389 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetWidth(root_child1));
390 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child1));
392 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child2));
393 ASSERT_FLOAT_EQ(20, YGNodeLayoutGetTop(root_child2));
394 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetWidth(root_child2));
395 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child2));
397 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
399 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
400 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
401 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetWidth(root));
402 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetHeight(root));
404 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
405 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
406 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetWidth(root_child0));
407 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child0));
409 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1));
410 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetTop(root_child1));
411 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetWidth(root_child1));
412 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child1));
414 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child2));
415 ASSERT_FLOAT_EQ(20, YGNodeLayoutGetTop(root_child2));
416 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetWidth(root_child2));
417 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child2));
419 YGNodeFreeRecursive(root);
421 YGConfigFree(config);
424 TEST(YogaTest, justify_content_column_flex_end) {
425 const YGConfigRef config = YGConfigNew();
427 const YGNodeRef root = YGNodeNewWithConfig(config);
428 YGNodeStyleSetJustifyContent(root, YGJustifyFlexEnd);
429 YGNodeStyleSetWidth(root, 102);
430 YGNodeStyleSetHeight(root, 102);
432 const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
433 YGNodeStyleSetHeight(root_child0, 10);
434 YGNodeInsertChild(root, root_child0, 0);
436 const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
437 YGNodeStyleSetHeight(root_child1, 10);
438 YGNodeInsertChild(root, root_child1, 1);
440 const YGNodeRef root_child2 = YGNodeNewWithConfig(config);
441 YGNodeStyleSetHeight(root_child2, 10);
442 YGNodeInsertChild(root, root_child2, 2);
443 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
445 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
446 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
447 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetWidth(root));
448 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetHeight(root));
450 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
451 ASSERT_FLOAT_EQ(72, YGNodeLayoutGetTop(root_child0));
452 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetWidth(root_child0));
453 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child0));
455 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1));
456 ASSERT_FLOAT_EQ(82, YGNodeLayoutGetTop(root_child1));
457 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetWidth(root_child1));
458 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child1));
460 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child2));
461 ASSERT_FLOAT_EQ(92, YGNodeLayoutGetTop(root_child2));
462 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetWidth(root_child2));
463 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child2));
465 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
467 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
468 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
469 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetWidth(root));
470 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetHeight(root));
472 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
473 ASSERT_FLOAT_EQ(72, YGNodeLayoutGetTop(root_child0));
474 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetWidth(root_child0));
475 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child0));
477 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1));
478 ASSERT_FLOAT_EQ(82, YGNodeLayoutGetTop(root_child1));
479 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetWidth(root_child1));
480 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child1));
482 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child2));
483 ASSERT_FLOAT_EQ(92, YGNodeLayoutGetTop(root_child2));
484 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetWidth(root_child2));
485 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child2));
487 YGNodeFreeRecursive(root);
489 YGConfigFree(config);
492 TEST(YogaTest, justify_content_column_center) {
493 const YGConfigRef config = YGConfigNew();
495 const YGNodeRef root = YGNodeNewWithConfig(config);
496 YGNodeStyleSetJustifyContent(root, YGJustifyCenter);
497 YGNodeStyleSetWidth(root, 102);
498 YGNodeStyleSetHeight(root, 102);
500 const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
501 YGNodeStyleSetHeight(root_child0, 10);
502 YGNodeInsertChild(root, root_child0, 0);
504 const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
505 YGNodeStyleSetHeight(root_child1, 10);
506 YGNodeInsertChild(root, root_child1, 1);
508 const YGNodeRef root_child2 = YGNodeNewWithConfig(config);
509 YGNodeStyleSetHeight(root_child2, 10);
510 YGNodeInsertChild(root, root_child2, 2);
511 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
513 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
514 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
515 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetWidth(root));
516 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetHeight(root));
518 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
519 ASSERT_FLOAT_EQ(36, YGNodeLayoutGetTop(root_child0));
520 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetWidth(root_child0));
521 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child0));
523 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1));
524 ASSERT_FLOAT_EQ(46, YGNodeLayoutGetTop(root_child1));
525 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetWidth(root_child1));
526 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child1));
528 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child2));
529 ASSERT_FLOAT_EQ(56, YGNodeLayoutGetTop(root_child2));
530 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetWidth(root_child2));
531 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child2));
533 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
535 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
536 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
537 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetWidth(root));
538 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetHeight(root));
540 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
541 ASSERT_FLOAT_EQ(36, YGNodeLayoutGetTop(root_child0));
542 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetWidth(root_child0));
543 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child0));
545 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1));
546 ASSERT_FLOAT_EQ(46, YGNodeLayoutGetTop(root_child1));
547 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetWidth(root_child1));
548 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child1));
550 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child2));
551 ASSERT_FLOAT_EQ(56, YGNodeLayoutGetTop(root_child2));
552 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetWidth(root_child2));
553 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child2));
555 YGNodeFreeRecursive(root);
557 YGConfigFree(config);
560 TEST(YogaTest, justify_content_column_space_between) {
561 const YGConfigRef config = YGConfigNew();
563 const YGNodeRef root = YGNodeNewWithConfig(config);
564 YGNodeStyleSetJustifyContent(root, YGJustifySpaceBetween);
565 YGNodeStyleSetWidth(root, 102);
566 YGNodeStyleSetHeight(root, 102);
568 const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
569 YGNodeStyleSetHeight(root_child0, 10);
570 YGNodeInsertChild(root, root_child0, 0);
572 const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
573 YGNodeStyleSetHeight(root_child1, 10);
574 YGNodeInsertChild(root, root_child1, 1);
576 const YGNodeRef root_child2 = YGNodeNewWithConfig(config);
577 YGNodeStyleSetHeight(root_child2, 10);
578 YGNodeInsertChild(root, root_child2, 2);
579 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
581 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
582 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
583 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetWidth(root));
584 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetHeight(root));
586 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
587 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
588 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetWidth(root_child0));
589 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child0));
591 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1));
592 ASSERT_FLOAT_EQ(46, YGNodeLayoutGetTop(root_child1));
593 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetWidth(root_child1));
594 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child1));
596 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child2));
597 ASSERT_FLOAT_EQ(92, YGNodeLayoutGetTop(root_child2));
598 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetWidth(root_child2));
599 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child2));
601 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
603 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
604 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
605 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetWidth(root));
606 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetHeight(root));
608 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
609 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
610 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetWidth(root_child0));
611 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child0));
613 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1));
614 ASSERT_FLOAT_EQ(46, YGNodeLayoutGetTop(root_child1));
615 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetWidth(root_child1));
616 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child1));
618 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child2));
619 ASSERT_FLOAT_EQ(92, YGNodeLayoutGetTop(root_child2));
620 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetWidth(root_child2));
621 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child2));
623 YGNodeFreeRecursive(root);
625 YGConfigFree(config);
628 TEST(YogaTest, justify_content_column_space_around) {
629 const YGConfigRef config = YGConfigNew();
631 const YGNodeRef root = YGNodeNewWithConfig(config);
632 YGNodeStyleSetJustifyContent(root, YGJustifySpaceAround);
633 YGNodeStyleSetWidth(root, 102);
634 YGNodeStyleSetHeight(root, 102);
636 const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
637 YGNodeStyleSetHeight(root_child0, 10);
638 YGNodeInsertChild(root, root_child0, 0);
640 const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
641 YGNodeStyleSetHeight(root_child1, 10);
642 YGNodeInsertChild(root, root_child1, 1);
644 const YGNodeRef root_child2 = YGNodeNewWithConfig(config);
645 YGNodeStyleSetHeight(root_child2, 10);
646 YGNodeInsertChild(root, root_child2, 2);
647 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
649 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
650 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
651 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetWidth(root));
652 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetHeight(root));
654 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
655 ASSERT_FLOAT_EQ(12, YGNodeLayoutGetTop(root_child0));
656 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetWidth(root_child0));
657 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child0));
659 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1));
660 ASSERT_FLOAT_EQ(46, YGNodeLayoutGetTop(root_child1));
661 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetWidth(root_child1));
662 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child1));
664 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child2));
665 ASSERT_FLOAT_EQ(80, YGNodeLayoutGetTop(root_child2));
666 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetWidth(root_child2));
667 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child2));
669 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
671 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
672 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
673 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetWidth(root));
674 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetHeight(root));
676 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
677 ASSERT_FLOAT_EQ(12, YGNodeLayoutGetTop(root_child0));
678 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetWidth(root_child0));
679 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child0));
681 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1));
682 ASSERT_FLOAT_EQ(46, YGNodeLayoutGetTop(root_child1));
683 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetWidth(root_child1));
684 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child1));
686 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child2));
687 ASSERT_FLOAT_EQ(80, YGNodeLayoutGetTop(root_child2));
688 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetWidth(root_child2));
689 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child2));
691 YGNodeFreeRecursive(root);
693 YGConfigFree(config);
696 TEST(YogaTest, justify_content_row_min_width_and_margin) {
697 const YGConfigRef config = YGConfigNew();
699 const YGNodeRef root = YGNodeNewWithConfig(config);
700 YGNodeStyleSetFlexDirection(root, YGFlexDirectionRow);
701 YGNodeStyleSetJustifyContent(root, YGJustifyCenter);
702 YGNodeStyleSetMargin(root, YGEdgeLeft, 100);
703 YGNodeStyleSetMinWidth(root, 50);
705 const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
706 YGNodeStyleSetWidth(root_child0, 20);
707 YGNodeStyleSetHeight(root_child0, 20);
708 YGNodeInsertChild(root, root_child0, 0);
709 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
711 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetLeft(root));
712 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
713 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root));
714 ASSERT_FLOAT_EQ(20, YGNodeLayoutGetHeight(root));
716 ASSERT_FLOAT_EQ(15, YGNodeLayoutGetLeft(root_child0));
717 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
718 ASSERT_FLOAT_EQ(20, YGNodeLayoutGetWidth(root_child0));
719 ASSERT_FLOAT_EQ(20, YGNodeLayoutGetHeight(root_child0));
721 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
723 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetLeft(root));
724 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
725 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root));
726 ASSERT_FLOAT_EQ(20, YGNodeLayoutGetHeight(root));
728 ASSERT_FLOAT_EQ(15, YGNodeLayoutGetLeft(root_child0));
729 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
730 ASSERT_FLOAT_EQ(20, YGNodeLayoutGetWidth(root_child0));
731 ASSERT_FLOAT_EQ(20, YGNodeLayoutGetHeight(root_child0));
733 YGNodeFreeRecursive(root);
735 YGConfigFree(config);
738 TEST(YogaTest, justify_content_row_max_width_and_margin) {
739 const YGConfigRef config = YGConfigNew();
741 const YGNodeRef root = YGNodeNewWithConfig(config);
742 YGNodeStyleSetFlexDirection(root, YGFlexDirectionRow);
743 YGNodeStyleSetJustifyContent(root, YGJustifyCenter);
744 YGNodeStyleSetMargin(root, YGEdgeLeft, 100);
745 YGNodeStyleSetWidth(root, 100);
746 YGNodeStyleSetMaxWidth(root, 80);
748 const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
749 YGNodeStyleSetWidth(root_child0, 20);
750 YGNodeStyleSetHeight(root_child0, 20);
751 YGNodeInsertChild(root, root_child0, 0);
752 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
754 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetLeft(root));
755 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
756 ASSERT_FLOAT_EQ(80, YGNodeLayoutGetWidth(root));
757 ASSERT_FLOAT_EQ(20, YGNodeLayoutGetHeight(root));
759 ASSERT_FLOAT_EQ(30, YGNodeLayoutGetLeft(root_child0));
760 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
761 ASSERT_FLOAT_EQ(20, YGNodeLayoutGetWidth(root_child0));
762 ASSERT_FLOAT_EQ(20, YGNodeLayoutGetHeight(root_child0));
764 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
766 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetLeft(root));
767 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
768 ASSERT_FLOAT_EQ(80, YGNodeLayoutGetWidth(root));
769 ASSERT_FLOAT_EQ(20, YGNodeLayoutGetHeight(root));
771 ASSERT_FLOAT_EQ(30, YGNodeLayoutGetLeft(root_child0));
772 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
773 ASSERT_FLOAT_EQ(20, YGNodeLayoutGetWidth(root_child0));
774 ASSERT_FLOAT_EQ(20, YGNodeLayoutGetHeight(root_child0));
776 YGNodeFreeRecursive(root);
778 YGConfigFree(config);
781 TEST(YogaTest, justify_content_column_min_height_and_margin) {
782 const YGConfigRef config = YGConfigNew();
784 const YGNodeRef root = YGNodeNewWithConfig(config);
785 YGNodeStyleSetJustifyContent(root, YGJustifyCenter);
786 YGNodeStyleSetMargin(root, YGEdgeTop, 100);
787 YGNodeStyleSetMinHeight(root, 50);
789 const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
790 YGNodeStyleSetWidth(root_child0, 20);
791 YGNodeStyleSetHeight(root_child0, 20);
792 YGNodeInsertChild(root, root_child0, 0);
793 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
795 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
796 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetTop(root));
797 ASSERT_FLOAT_EQ(20, YGNodeLayoutGetWidth(root));
798 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root));
800 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
801 ASSERT_FLOAT_EQ(15, YGNodeLayoutGetTop(root_child0));
802 ASSERT_FLOAT_EQ(20, YGNodeLayoutGetWidth(root_child0));
803 ASSERT_FLOAT_EQ(20, YGNodeLayoutGetHeight(root_child0));
805 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
807 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
808 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetTop(root));
809 ASSERT_FLOAT_EQ(20, YGNodeLayoutGetWidth(root));
810 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root));
812 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
813 ASSERT_FLOAT_EQ(15, YGNodeLayoutGetTop(root_child0));
814 ASSERT_FLOAT_EQ(20, YGNodeLayoutGetWidth(root_child0));
815 ASSERT_FLOAT_EQ(20, YGNodeLayoutGetHeight(root_child0));
817 YGNodeFreeRecursive(root);
819 YGConfigFree(config);
822 TEST(YogaTest, justify_content_colunn_max_height_and_margin) {
823 const YGConfigRef config = YGConfigNew();
825 const YGNodeRef root = YGNodeNewWithConfig(config);
826 YGNodeStyleSetJustifyContent(root, YGJustifyCenter);
827 YGNodeStyleSetMargin(root, YGEdgeTop, 100);
828 YGNodeStyleSetHeight(root, 100);
829 YGNodeStyleSetMaxHeight(root, 80);
831 const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
832 YGNodeStyleSetWidth(root_child0, 20);
833 YGNodeStyleSetHeight(root_child0, 20);
834 YGNodeInsertChild(root, root_child0, 0);
835 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
837 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
838 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetTop(root));
839 ASSERT_FLOAT_EQ(20, YGNodeLayoutGetWidth(root));
840 ASSERT_FLOAT_EQ(80, YGNodeLayoutGetHeight(root));
842 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
843 ASSERT_FLOAT_EQ(30, YGNodeLayoutGetTop(root_child0));
844 ASSERT_FLOAT_EQ(20, YGNodeLayoutGetWidth(root_child0));
845 ASSERT_FLOAT_EQ(20, YGNodeLayoutGetHeight(root_child0));
847 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
849 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
850 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetTop(root));
851 ASSERT_FLOAT_EQ(20, YGNodeLayoutGetWidth(root));
852 ASSERT_FLOAT_EQ(80, YGNodeLayoutGetHeight(root));
854 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
855 ASSERT_FLOAT_EQ(30, YGNodeLayoutGetTop(root_child0));
856 ASSERT_FLOAT_EQ(20, YGNodeLayoutGetWidth(root_child0));
857 ASSERT_FLOAT_EQ(20, YGNodeLayoutGetHeight(root_child0));
859 YGNodeFreeRecursive(root);
861 YGConfigFree(config);
864 TEST(YogaTest, justify_content_column_space_evenly) {
865 const YGConfigRef config = YGConfigNew();
867 const YGNodeRef root = YGNodeNewWithConfig(config);
868 YGNodeStyleSetJustifyContent(root, YGJustifySpaceEvenly);
869 YGNodeStyleSetWidth(root, 102);
870 YGNodeStyleSetHeight(root, 102);
872 const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
873 YGNodeStyleSetHeight(root_child0, 10);
874 YGNodeInsertChild(root, root_child0, 0);
876 const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
877 YGNodeStyleSetHeight(root_child1, 10);
878 YGNodeInsertChild(root, root_child1, 1);
880 const YGNodeRef root_child2 = YGNodeNewWithConfig(config);
881 YGNodeStyleSetHeight(root_child2, 10);
882 YGNodeInsertChild(root, root_child2, 2);
883 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
885 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
886 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
887 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetWidth(root));
888 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetHeight(root));
890 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
891 ASSERT_FLOAT_EQ(18, YGNodeLayoutGetTop(root_child0));
892 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetWidth(root_child0));
893 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child0));
895 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1));
896 ASSERT_FLOAT_EQ(46, YGNodeLayoutGetTop(root_child1));
897 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetWidth(root_child1));
898 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child1));
900 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child2));
901 ASSERT_FLOAT_EQ(74, YGNodeLayoutGetTop(root_child2));
902 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetWidth(root_child2));
903 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child2));
905 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
907 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
908 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
909 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetWidth(root));
910 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetHeight(root));
912 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
913 ASSERT_FLOAT_EQ(18, YGNodeLayoutGetTop(root_child0));
914 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetWidth(root_child0));
915 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child0));
917 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1));
918 ASSERT_FLOAT_EQ(46, YGNodeLayoutGetTop(root_child1));
919 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetWidth(root_child1));
920 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child1));
922 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child2));
923 ASSERT_FLOAT_EQ(74, YGNodeLayoutGetTop(root_child2));
924 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetWidth(root_child2));
925 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child2));
927 YGNodeFreeRecursive(root);
929 YGConfigFree(config);
932 TEST(YogaTest, justify_content_row_space_evenly) {
933 const YGConfigRef config = YGConfigNew();
935 const YGNodeRef root = YGNodeNewWithConfig(config);
936 YGNodeStyleSetFlexDirection(root, YGFlexDirectionRow);
937 YGNodeStyleSetJustifyContent(root, YGJustifySpaceEvenly);
938 YGNodeStyleSetWidth(root, 102);
939 YGNodeStyleSetHeight(root, 102);
941 const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
942 YGNodeStyleSetHeight(root_child0, 10);
943 YGNodeInsertChild(root, root_child0, 0);
945 const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
946 YGNodeStyleSetHeight(root_child1, 10);
947 YGNodeInsertChild(root, root_child1, 1);
949 const YGNodeRef root_child2 = YGNodeNewWithConfig(config);
950 YGNodeStyleSetHeight(root_child2, 10);
951 YGNodeInsertChild(root, root_child2, 2);
952 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
954 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
955 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
956 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetWidth(root));
957 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetHeight(root));
959 ASSERT_FLOAT_EQ(26, YGNodeLayoutGetLeft(root_child0));
960 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
961 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetWidth(root_child0));
962 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child0));
964 ASSERT_FLOAT_EQ(51, YGNodeLayoutGetLeft(root_child1));
965 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
966 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetWidth(root_child1));
967 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child1));
969 ASSERT_FLOAT_EQ(77, YGNodeLayoutGetLeft(root_child2));
970 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child2));
971 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetWidth(root_child2));
972 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child2));
974 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
976 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
977 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
978 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetWidth(root));
979 ASSERT_FLOAT_EQ(102, YGNodeLayoutGetHeight(root));
981 ASSERT_FLOAT_EQ(77, YGNodeLayoutGetLeft(root_child0));
982 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
983 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetWidth(root_child0));
984 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child0));
986 ASSERT_FLOAT_EQ(51, YGNodeLayoutGetLeft(root_child1));
987 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
988 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetWidth(root_child1));
989 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child1));
991 ASSERT_FLOAT_EQ(26, YGNodeLayoutGetLeft(root_child2));
992 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child2));
993 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetWidth(root_child2));
994 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child2));
996 YGNodeFreeRecursive(root);
998 YGConfigFree(config);