Rebase of facebook flexbox to yoga
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-toolkit-third-party / yoga / YGFlexDirectionTest.cpp
1 /**
2  * Copyright (c) 2014-present, Facebook, Inc.
3  *
4  * This source code is licensed under the MIT license found in the
5  * LICENSE file in the root directory of this source tree.
6  */
7
8 // @Generated by gentest/gentest.rb from gentest/fixtures/YGFlexDirectionTest.html
9
10 #include <gtest/gtest.h>
11 #include <yoga/Yoga.h>
12
13 TEST(YogaTest, flex_direction_column_no_height) {
14   const YGConfigRef config = YGConfigNew();
15
16   const YGNodeRef root = YGNodeNewWithConfig(config);
17   YGNodeStyleSetWidth(root, 100);
18
19   const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
20   YGNodeStyleSetHeight(root_child0, 10);
21   YGNodeInsertChild(root, root_child0, 0);
22
23   const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
24   YGNodeStyleSetHeight(root_child1, 10);
25   YGNodeInsertChild(root, root_child1, 1);
26
27   const YGNodeRef root_child2 = YGNodeNewWithConfig(config);
28   YGNodeStyleSetHeight(root_child2, 10);
29   YGNodeInsertChild(root, root_child2, 2);
30   YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
31
32   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
33   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
34   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
35   ASSERT_FLOAT_EQ(30, YGNodeLayoutGetHeight(root));
36
37   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
38   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
39   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0));
40   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child0));
41
42   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1));
43   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetTop(root_child1));
44   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child1));
45   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child1));
46
47   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child2));
48   ASSERT_FLOAT_EQ(20, YGNodeLayoutGetTop(root_child2));
49   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child2));
50   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child2));
51
52   YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
53
54   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
55   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
56   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
57   ASSERT_FLOAT_EQ(30, YGNodeLayoutGetHeight(root));
58
59   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
60   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
61   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0));
62   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child0));
63
64   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1));
65   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetTop(root_child1));
66   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child1));
67   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child1));
68
69   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child2));
70   ASSERT_FLOAT_EQ(20, YGNodeLayoutGetTop(root_child2));
71   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child2));
72   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child2));
73
74   YGNodeFreeRecursive(root);
75
76   YGConfigFree(config);
77 }
78
79 TEST(YogaTest, flex_direction_row_no_width) {
80   const YGConfigRef config = YGConfigNew();
81
82   const YGNodeRef root = YGNodeNewWithConfig(config);
83   YGNodeStyleSetFlexDirection(root, YGFlexDirectionRow);
84   YGNodeStyleSetHeight(root, 100);
85
86   const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
87   YGNodeStyleSetWidth(root_child0, 10);
88   YGNodeInsertChild(root, root_child0, 0);
89
90   const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
91   YGNodeStyleSetWidth(root_child1, 10);
92   YGNodeInsertChild(root, root_child1, 1);
93
94   const YGNodeRef root_child2 = YGNodeNewWithConfig(config);
95   YGNodeStyleSetWidth(root_child2, 10);
96   YGNodeInsertChild(root, root_child2, 2);
97   YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
98
99   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
100   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
101   ASSERT_FLOAT_EQ(30, YGNodeLayoutGetWidth(root));
102   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
103
104   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
105   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
106   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0));
107   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0));
108
109   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetLeft(root_child1));
110   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
111   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child1));
112   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child1));
113
114   ASSERT_FLOAT_EQ(20, YGNodeLayoutGetLeft(root_child2));
115   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child2));
116   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child2));
117   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child2));
118
119   YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
120
121   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
122   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
123   ASSERT_FLOAT_EQ(30, YGNodeLayoutGetWidth(root));
124   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
125
126   ASSERT_FLOAT_EQ(20, YGNodeLayoutGetLeft(root_child0));
127   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
128   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0));
129   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0));
130
131   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetLeft(root_child1));
132   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
133   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child1));
134   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child1));
135
136   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child2));
137   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child2));
138   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child2));
139   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child2));
140
141   YGNodeFreeRecursive(root);
142
143   YGConfigFree(config);
144 }
145
146 TEST(YogaTest, flex_direction_column) {
147   const YGConfigRef config = YGConfigNew();
148
149   const YGNodeRef root = YGNodeNewWithConfig(config);
150   YGNodeStyleSetWidth(root, 100);
151   YGNodeStyleSetHeight(root, 100);
152
153   const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
154   YGNodeStyleSetHeight(root_child0, 10);
155   YGNodeInsertChild(root, root_child0, 0);
156
157   const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
158   YGNodeStyleSetHeight(root_child1, 10);
159   YGNodeInsertChild(root, root_child1, 1);
160
161   const YGNodeRef root_child2 = YGNodeNewWithConfig(config);
162   YGNodeStyleSetHeight(root_child2, 10);
163   YGNodeInsertChild(root, root_child2, 2);
164   YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
165
166   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
167   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
168   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
169   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
170
171   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
172   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
173   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0));
174   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child0));
175
176   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1));
177   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetTop(root_child1));
178   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child1));
179   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child1));
180
181   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child2));
182   ASSERT_FLOAT_EQ(20, YGNodeLayoutGetTop(root_child2));
183   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child2));
184   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child2));
185
186   YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
187
188   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
189   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
190   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
191   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
192
193   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
194   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
195   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0));
196   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child0));
197
198   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1));
199   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetTop(root_child1));
200   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child1));
201   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child1));
202
203   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child2));
204   ASSERT_FLOAT_EQ(20, YGNodeLayoutGetTop(root_child2));
205   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child2));
206   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child2));
207
208   YGNodeFreeRecursive(root);
209
210   YGConfigFree(config);
211 }
212
213 TEST(YogaTest, flex_direction_row) {
214   const YGConfigRef config = YGConfigNew();
215
216   const YGNodeRef root = YGNodeNewWithConfig(config);
217   YGNodeStyleSetFlexDirection(root, YGFlexDirectionRow);
218   YGNodeStyleSetWidth(root, 100);
219   YGNodeStyleSetHeight(root, 100);
220
221   const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
222   YGNodeStyleSetWidth(root_child0, 10);
223   YGNodeInsertChild(root, root_child0, 0);
224
225   const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
226   YGNodeStyleSetWidth(root_child1, 10);
227   YGNodeInsertChild(root, root_child1, 1);
228
229   const YGNodeRef root_child2 = YGNodeNewWithConfig(config);
230   YGNodeStyleSetWidth(root_child2, 10);
231   YGNodeInsertChild(root, root_child2, 2);
232   YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
233
234   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
235   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
236   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
237   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
238
239   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
240   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
241   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0));
242   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0));
243
244   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetLeft(root_child1));
245   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
246   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child1));
247   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child1));
248
249   ASSERT_FLOAT_EQ(20, YGNodeLayoutGetLeft(root_child2));
250   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child2));
251   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child2));
252   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child2));
253
254   YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
255
256   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
257   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
258   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
259   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
260
261   ASSERT_FLOAT_EQ(90, YGNodeLayoutGetLeft(root_child0));
262   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
263   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0));
264   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0));
265
266   ASSERT_FLOAT_EQ(80, YGNodeLayoutGetLeft(root_child1));
267   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
268   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child1));
269   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child1));
270
271   ASSERT_FLOAT_EQ(70, YGNodeLayoutGetLeft(root_child2));
272   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child2));
273   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child2));
274   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child2));
275
276   YGNodeFreeRecursive(root);
277
278   YGConfigFree(config);
279 }
280
281 TEST(YogaTest, flex_direction_column_reverse) {
282   const YGConfigRef config = YGConfigNew();
283
284   const YGNodeRef root = YGNodeNewWithConfig(config);
285   YGNodeStyleSetFlexDirection(root, YGFlexDirectionColumnReverse);
286   YGNodeStyleSetWidth(root, 100);
287   YGNodeStyleSetHeight(root, 100);
288
289   const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
290   YGNodeStyleSetHeight(root_child0, 10);
291   YGNodeInsertChild(root, root_child0, 0);
292
293   const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
294   YGNodeStyleSetHeight(root_child1, 10);
295   YGNodeInsertChild(root, root_child1, 1);
296
297   const YGNodeRef root_child2 = YGNodeNewWithConfig(config);
298   YGNodeStyleSetHeight(root_child2, 10);
299   YGNodeInsertChild(root, root_child2, 2);
300   YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
301
302   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
303   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
304   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
305   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
306
307   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
308   ASSERT_FLOAT_EQ(90, YGNodeLayoutGetTop(root_child0));
309   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0));
310   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child0));
311
312   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1));
313   ASSERT_FLOAT_EQ(80, YGNodeLayoutGetTop(root_child1));
314   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child1));
315   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child1));
316
317   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child2));
318   ASSERT_FLOAT_EQ(70, YGNodeLayoutGetTop(root_child2));
319   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child2));
320   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child2));
321
322   YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
323
324   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
325   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
326   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
327   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
328
329   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
330   ASSERT_FLOAT_EQ(90, YGNodeLayoutGetTop(root_child0));
331   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0));
332   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child0));
333
334   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1));
335   ASSERT_FLOAT_EQ(80, YGNodeLayoutGetTop(root_child1));
336   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child1));
337   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child1));
338
339   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child2));
340   ASSERT_FLOAT_EQ(70, YGNodeLayoutGetTop(root_child2));
341   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child2));
342   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child2));
343
344   YGNodeFreeRecursive(root);
345
346   YGConfigFree(config);
347 }
348
349 TEST(YogaTest, flex_direction_row_reverse) {
350   const YGConfigRef config = YGConfigNew();
351
352   const YGNodeRef root = YGNodeNewWithConfig(config);
353   YGNodeStyleSetFlexDirection(root, YGFlexDirectionRowReverse);
354   YGNodeStyleSetWidth(root, 100);
355   YGNodeStyleSetHeight(root, 100);
356
357   const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
358   YGNodeStyleSetWidth(root_child0, 10);
359   YGNodeInsertChild(root, root_child0, 0);
360
361   const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
362   YGNodeStyleSetWidth(root_child1, 10);
363   YGNodeInsertChild(root, root_child1, 1);
364
365   const YGNodeRef root_child2 = YGNodeNewWithConfig(config);
366   YGNodeStyleSetWidth(root_child2, 10);
367   YGNodeInsertChild(root, root_child2, 2);
368   YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
369
370   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
371   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
372   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
373   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
374
375   ASSERT_FLOAT_EQ(90, YGNodeLayoutGetLeft(root_child0));
376   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
377   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0));
378   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0));
379
380   ASSERT_FLOAT_EQ(80, YGNodeLayoutGetLeft(root_child1));
381   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
382   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child1));
383   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child1));
384
385   ASSERT_FLOAT_EQ(70, YGNodeLayoutGetLeft(root_child2));
386   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child2));
387   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child2));
388   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child2));
389
390   YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
391
392   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
393   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
394   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
395   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
396
397   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
398   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
399   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0));
400   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0));
401
402   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetLeft(root_child1));
403   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
404   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child1));
405   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child1));
406
407   ASSERT_FLOAT_EQ(20, YGNodeLayoutGetLeft(root_child2));
408   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child2));
409   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child2));
410   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child2));
411
412   YGNodeFreeRecursive(root);
413
414   YGConfigFree(config);
415 }