Rebase of facebook flexbox to yoga
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-toolkit-third-party / yoga / YGSizeOverflowTest.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/YGSizeOverflowTest.html
9
10 #include <gtest/gtest.h>
11 #include <yoga/Yoga.h>
12
13 TEST(YogaTest, nested_overflowing_child) {
14   const YGConfigRef config = YGConfigNew();
15
16   const YGNodeRef root = YGNodeNewWithConfig(config);
17   YGNodeStyleSetWidth(root, 100);
18   YGNodeStyleSetHeight(root, 100);
19
20   const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
21   YGNodeInsertChild(root, root_child0, 0);
22
23   const YGNodeRef root_child0_child0 = YGNodeNewWithConfig(config);
24   YGNodeStyleSetWidth(root_child0_child0, 200);
25   YGNodeStyleSetHeight(root_child0_child0, 200);
26   YGNodeInsertChild(root_child0, root_child0_child0, 0);
27   YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
28
29   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
30   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
31   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
32   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
33
34   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
35   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
36   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0));
37   ASSERT_FLOAT_EQ(200, YGNodeLayoutGetHeight(root_child0));
38
39   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0_child0));
40   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0_child0));
41   ASSERT_FLOAT_EQ(200, YGNodeLayoutGetWidth(root_child0_child0));
42   ASSERT_FLOAT_EQ(200, YGNodeLayoutGetHeight(root_child0_child0));
43
44   YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
45
46   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
47   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
48   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
49   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
50
51   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
52   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
53   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0));
54   ASSERT_FLOAT_EQ(200, YGNodeLayoutGetHeight(root_child0));
55
56   ASSERT_FLOAT_EQ(-100, YGNodeLayoutGetLeft(root_child0_child0));
57   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0_child0));
58   ASSERT_FLOAT_EQ(200, YGNodeLayoutGetWidth(root_child0_child0));
59   ASSERT_FLOAT_EQ(200, YGNodeLayoutGetHeight(root_child0_child0));
60
61   YGNodeFreeRecursive(root);
62
63   YGConfigFree(config);
64 }
65
66 TEST(YogaTest, nested_overflowing_child_in_constraint_parent) {
67   const YGConfigRef config = YGConfigNew();
68
69   const YGNodeRef root = YGNodeNewWithConfig(config);
70   YGNodeStyleSetWidth(root, 100);
71   YGNodeStyleSetHeight(root, 100);
72
73   const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
74   YGNodeStyleSetWidth(root_child0, 100);
75   YGNodeStyleSetHeight(root_child0, 100);
76   YGNodeInsertChild(root, root_child0, 0);
77
78   const YGNodeRef root_child0_child0 = YGNodeNewWithConfig(config);
79   YGNodeStyleSetWidth(root_child0_child0, 200);
80   YGNodeStyleSetHeight(root_child0_child0, 200);
81   YGNodeInsertChild(root_child0, root_child0_child0, 0);
82   YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
83
84   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
85   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
86   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
87   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
88
89   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
90   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
91   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0));
92   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0));
93
94   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0_child0));
95   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0_child0));
96   ASSERT_FLOAT_EQ(200, YGNodeLayoutGetWidth(root_child0_child0));
97   ASSERT_FLOAT_EQ(200, YGNodeLayoutGetHeight(root_child0_child0));
98
99   YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
100
101   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
102   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
103   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
104   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
105
106   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
107   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
108   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0));
109   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0));
110
111   ASSERT_FLOAT_EQ(-100, YGNodeLayoutGetLeft(root_child0_child0));
112   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0_child0));
113   ASSERT_FLOAT_EQ(200, YGNodeLayoutGetWidth(root_child0_child0));
114   ASSERT_FLOAT_EQ(200, YGNodeLayoutGetHeight(root_child0_child0));
115
116   YGNodeFreeRecursive(root);
117
118   YGConfigFree(config);
119 }
120
121 TEST(YogaTest, parent_wrap_child_size_overflowing_parent) {
122   const YGConfigRef config = YGConfigNew();
123
124   const YGNodeRef root = YGNodeNewWithConfig(config);
125   YGNodeStyleSetWidth(root, 100);
126   YGNodeStyleSetHeight(root, 100);
127
128   const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
129   YGNodeStyleSetWidth(root_child0, 100);
130   YGNodeInsertChild(root, root_child0, 0);
131
132   const YGNodeRef root_child0_child0 = YGNodeNewWithConfig(config);
133   YGNodeStyleSetWidth(root_child0_child0, 100);
134   YGNodeStyleSetHeight(root_child0_child0, 200);
135   YGNodeInsertChild(root_child0, root_child0_child0, 0);
136   YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
137
138   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
139   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
140   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
141   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
142
143   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
144   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
145   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0));
146   ASSERT_FLOAT_EQ(200, YGNodeLayoutGetHeight(root_child0));
147
148   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0_child0));
149   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0_child0));
150   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0_child0));
151   ASSERT_FLOAT_EQ(200, YGNodeLayoutGetHeight(root_child0_child0));
152
153   YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
154
155   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
156   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
157   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
158   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
159
160   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
161   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
162   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0));
163   ASSERT_FLOAT_EQ(200, YGNodeLayoutGetHeight(root_child0));
164
165   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0_child0));
166   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0_child0));
167   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0_child0));
168   ASSERT_FLOAT_EQ(200, YGNodeLayoutGetHeight(root_child0_child0));
169
170   YGNodeFreeRecursive(root);
171
172   YGConfigFree(config);
173 }