Rebase of facebook flexbox to yoga
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-toolkit-third-party / yoga / YGDisplayTest.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/YGDisplayTest.html
9
10 #include <gtest/gtest.h>
11 #include <yoga/Yoga.h>
12
13 TEST(YogaTest, display_none) {
14   const YGConfigRef config = YGConfigNew();
15
16   const YGNodeRef root = YGNodeNewWithConfig(config);
17   YGNodeStyleSetFlexDirection(root, YGFlexDirectionRow);
18   YGNodeStyleSetWidth(root, 100);
19   YGNodeStyleSetHeight(root, 100);
20
21   const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
22   YGNodeStyleSetFlexGrow(root_child0, 1);
23   YGNodeInsertChild(root, root_child0, 0);
24
25   const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
26   YGNodeStyleSetFlexGrow(root_child1, 1);
27   YGNodeStyleSetDisplay(root_child1, YGDisplayNone);
28   YGNodeInsertChild(root, root_child1, 1);
29   YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
30
31   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
32   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
33   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
34   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
35
36   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
37   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
38   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0));
39   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0));
40
41   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1));
42   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
43   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetWidth(root_child1));
44   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child1));
45
46   YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
47
48   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
49   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
50   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
51   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
52
53   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
54   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
55   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0));
56   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0));
57
58   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1));
59   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
60   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetWidth(root_child1));
61   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child1));
62
63   YGNodeFreeRecursive(root);
64
65   YGConfigFree(config);
66 }
67
68 TEST(YogaTest, display_none_fixed_size) {
69   const YGConfigRef config = YGConfigNew();
70
71   const YGNodeRef root = YGNodeNewWithConfig(config);
72   YGNodeStyleSetFlexDirection(root, YGFlexDirectionRow);
73   YGNodeStyleSetWidth(root, 100);
74   YGNodeStyleSetHeight(root, 100);
75
76   const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
77   YGNodeStyleSetFlexGrow(root_child0, 1);
78   YGNodeInsertChild(root, root_child0, 0);
79
80   const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
81   YGNodeStyleSetWidth(root_child1, 20);
82   YGNodeStyleSetHeight(root_child1, 20);
83   YGNodeStyleSetDisplay(root_child1, YGDisplayNone);
84   YGNodeInsertChild(root, root_child1, 1);
85   YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
86
87   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
88   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
89   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
90   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
91
92   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
93   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
94   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0));
95   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0));
96
97   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1));
98   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
99   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetWidth(root_child1));
100   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child1));
101
102   YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
103
104   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
105   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
106   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
107   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
108
109   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
110   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
111   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0));
112   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0));
113
114   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1));
115   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
116   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetWidth(root_child1));
117   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child1));
118
119   YGNodeFreeRecursive(root);
120
121   YGConfigFree(config);
122 }
123
124 TEST(YogaTest, display_none_with_margin) {
125   const YGConfigRef config = YGConfigNew();
126
127   const YGNodeRef root = YGNodeNewWithConfig(config);
128   YGNodeStyleSetFlexDirection(root, YGFlexDirectionRow);
129   YGNodeStyleSetWidth(root, 100);
130   YGNodeStyleSetHeight(root, 100);
131
132   const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
133   YGNodeStyleSetMargin(root_child0, YGEdgeLeft, 10);
134   YGNodeStyleSetMargin(root_child0, YGEdgeTop, 10);
135   YGNodeStyleSetMargin(root_child0, YGEdgeRight, 10);
136   YGNodeStyleSetMargin(root_child0, YGEdgeBottom, 10);
137   YGNodeStyleSetWidth(root_child0, 20);
138   YGNodeStyleSetHeight(root_child0, 20);
139   YGNodeStyleSetDisplay(root_child0, YGDisplayNone);
140   YGNodeInsertChild(root, root_child0, 0);
141
142   const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
143   YGNodeStyleSetFlexGrow(root_child1, 1);
144   YGNodeInsertChild(root, root_child1, 1);
145   YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
146
147   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
148   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
149   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
150   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
151
152   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
153   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
154   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetWidth(root_child0));
155   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child0));
156
157   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1));
158   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
159   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child1));
160   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child1));
161
162   YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
163
164   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
165   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
166   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
167   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
168
169   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
170   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
171   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetWidth(root_child0));
172   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child0));
173
174   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1));
175   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
176   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child1));
177   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child1));
178
179   YGNodeFreeRecursive(root);
180
181   YGConfigFree(config);
182 }
183
184 TEST(YogaTest, display_none_with_child) {
185   const YGConfigRef config = YGConfigNew();
186
187   const YGNodeRef root = YGNodeNewWithConfig(config);
188   YGNodeStyleSetFlexDirection(root, YGFlexDirectionRow);
189   YGNodeStyleSetWidth(root, 100);
190   YGNodeStyleSetHeight(root, 100);
191
192   const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
193   YGNodeStyleSetFlexGrow(root_child0, 1);
194   YGNodeStyleSetFlexShrink(root_child0, 1);
195   YGNodeStyleSetFlexBasisPercent(root_child0, 0);
196   YGNodeInsertChild(root, root_child0, 0);
197
198   const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
199   YGNodeStyleSetFlexGrow(root_child1, 1);
200   YGNodeStyleSetFlexShrink(root_child1, 1);
201   YGNodeStyleSetFlexBasisPercent(root_child1, 0);
202   YGNodeStyleSetDisplay(root_child1, YGDisplayNone);
203   YGNodeInsertChild(root, root_child1, 1);
204
205   const YGNodeRef root_child1_child0 = YGNodeNewWithConfig(config);
206   YGNodeStyleSetFlexGrow(root_child1_child0, 1);
207   YGNodeStyleSetFlexShrink(root_child1_child0, 1);
208   YGNodeStyleSetFlexBasisPercent(root_child1_child0, 0);
209   YGNodeStyleSetWidth(root_child1_child0, 20);
210   YGNodeStyleSetMinWidth(root_child1_child0, 0);
211   YGNodeStyleSetMinHeight(root_child1_child0, 0);
212   YGNodeInsertChild(root_child1, root_child1_child0, 0);
213
214   const YGNodeRef root_child2 = YGNodeNewWithConfig(config);
215   YGNodeStyleSetFlexGrow(root_child2, 1);
216   YGNodeStyleSetFlexShrink(root_child2, 1);
217   YGNodeStyleSetFlexBasisPercent(root_child2, 0);
218   YGNodeInsertChild(root, root_child2, 2);
219   YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
220
221   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
222   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
223   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
224   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
225
226   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
227   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
228   ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child0));
229   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0));
230
231   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1));
232   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
233   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetWidth(root_child1));
234   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child1));
235
236   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1_child0));
237   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1_child0));
238   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetWidth(root_child1_child0));
239   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child1_child0));
240
241   ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child2));
242   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child2));
243   ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child2));
244   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child2));
245
246   YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
247
248   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
249   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
250   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
251   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
252
253   ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child0));
254   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
255   ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child0));
256   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0));
257
258   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1));
259   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
260   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetWidth(root_child1));
261   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child1));
262
263   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1_child0));
264   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1_child0));
265   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetWidth(root_child1_child0));
266   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child1_child0));
267
268   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child2));
269   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child2));
270   ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child2));
271   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child2));
272
273   YGNodeFreeRecursive(root);
274
275   YGConfigFree(config);
276 }
277
278 TEST(YogaTest, display_none_with_position) {
279   const YGConfigRef config = YGConfigNew();
280
281   const YGNodeRef root = YGNodeNewWithConfig(config);
282   YGNodeStyleSetFlexDirection(root, YGFlexDirectionRow);
283   YGNodeStyleSetWidth(root, 100);
284   YGNodeStyleSetHeight(root, 100);
285
286   const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
287   YGNodeStyleSetFlexGrow(root_child0, 1);
288   YGNodeInsertChild(root, root_child0, 0);
289
290   const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
291   YGNodeStyleSetFlexGrow(root_child1, 1);
292   YGNodeStyleSetPosition(root_child1, YGEdgeTop, 10);
293   YGNodeStyleSetDisplay(root_child1, YGDisplayNone);
294   YGNodeInsertChild(root, root_child1, 1);
295   YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
296
297   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
298   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
299   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
300   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
301
302   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
303   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
304   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0));
305   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0));
306
307   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1));
308   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
309   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetWidth(root_child1));
310   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child1));
311
312   YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
313
314   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
315   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
316   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
317   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
318
319   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
320   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
321   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0));
322   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0));
323
324   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1));
325   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
326   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetWidth(root_child1));
327   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child1));
328
329   YGNodeFreeRecursive(root);
330
331   YGConfigFree(config);
332 }