Rebase of facebook flexbox to yoga
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-toolkit-third-party / yoga / YGBorderTest.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/YGBorderTest.html
9
10 #include <gtest/gtest.h>
11 #include <yoga/Yoga.h>
12
13 TEST(YogaTest, border_no_size) {
14   const YGConfigRef config = YGConfigNew();
15
16   const YGNodeRef root = YGNodeNewWithConfig(config);
17   YGNodeStyleSetBorder(root, YGEdgeLeft, 10);
18   YGNodeStyleSetBorder(root, YGEdgeTop, 10);
19   YGNodeStyleSetBorder(root, YGEdgeRight, 10);
20   YGNodeStyleSetBorder(root, YGEdgeBottom, 10);
21   YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
22
23   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
24   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
25   ASSERT_FLOAT_EQ(20, YGNodeLayoutGetWidth(root));
26   ASSERT_FLOAT_EQ(20, YGNodeLayoutGetHeight(root));
27
28   YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
29
30   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
31   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
32   ASSERT_FLOAT_EQ(20, YGNodeLayoutGetWidth(root));
33   ASSERT_FLOAT_EQ(20, YGNodeLayoutGetHeight(root));
34
35   YGNodeFreeRecursive(root);
36
37   YGConfigFree(config);
38 }
39
40 TEST(YogaTest, border_container_match_child) {
41   const YGConfigRef config = YGConfigNew();
42
43   const YGNodeRef root = YGNodeNewWithConfig(config);
44   YGNodeStyleSetBorder(root, YGEdgeLeft, 10);
45   YGNodeStyleSetBorder(root, YGEdgeTop, 10);
46   YGNodeStyleSetBorder(root, YGEdgeRight, 10);
47   YGNodeStyleSetBorder(root, YGEdgeBottom, 10);
48
49   const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
50   YGNodeStyleSetWidth(root_child0, 10);
51   YGNodeStyleSetHeight(root_child0, 10);
52   YGNodeInsertChild(root, root_child0, 0);
53   YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
54
55   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
56   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
57   ASSERT_FLOAT_EQ(30, YGNodeLayoutGetWidth(root));
58   ASSERT_FLOAT_EQ(30, YGNodeLayoutGetHeight(root));
59
60   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetLeft(root_child0));
61   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetTop(root_child0));
62   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0));
63   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child0));
64
65   YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
66
67   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
68   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
69   ASSERT_FLOAT_EQ(30, YGNodeLayoutGetWidth(root));
70   ASSERT_FLOAT_EQ(30, YGNodeLayoutGetHeight(root));
71
72   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetLeft(root_child0));
73   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetTop(root_child0));
74   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0));
75   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child0));
76
77   YGNodeFreeRecursive(root);
78
79   YGConfigFree(config);
80 }
81
82 TEST(YogaTest, border_flex_child) {
83   const YGConfigRef config = YGConfigNew();
84
85   const YGNodeRef root = YGNodeNewWithConfig(config);
86   YGNodeStyleSetBorder(root, YGEdgeLeft, 10);
87   YGNodeStyleSetBorder(root, YGEdgeTop, 10);
88   YGNodeStyleSetBorder(root, YGEdgeRight, 10);
89   YGNodeStyleSetBorder(root, YGEdgeBottom, 10);
90   YGNodeStyleSetWidth(root, 100);
91   YGNodeStyleSetHeight(root, 100);
92
93   const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
94   YGNodeStyleSetFlexGrow(root_child0, 1);
95   YGNodeStyleSetWidth(root_child0, 10);
96   YGNodeInsertChild(root, root_child0, 0);
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(100, YGNodeLayoutGetWidth(root));
102   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
103
104   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetLeft(root_child0));
105   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetTop(root_child0));
106   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0));
107   ASSERT_FLOAT_EQ(80, YGNodeLayoutGetHeight(root_child0));
108
109   YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
110
111   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
112   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
113   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
114   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
115
116   ASSERT_FLOAT_EQ(80, YGNodeLayoutGetLeft(root_child0));
117   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetTop(root_child0));
118   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0));
119   ASSERT_FLOAT_EQ(80, YGNodeLayoutGetHeight(root_child0));
120
121   YGNodeFreeRecursive(root);
122
123   YGConfigFree(config);
124 }
125
126 TEST(YogaTest, border_stretch_child) {
127   const YGConfigRef config = YGConfigNew();
128
129   const YGNodeRef root = YGNodeNewWithConfig(config);
130   YGNodeStyleSetBorder(root, YGEdgeLeft, 10);
131   YGNodeStyleSetBorder(root, YGEdgeTop, 10);
132   YGNodeStyleSetBorder(root, YGEdgeRight, 10);
133   YGNodeStyleSetBorder(root, YGEdgeBottom, 10);
134   YGNodeStyleSetWidth(root, 100);
135   YGNodeStyleSetHeight(root, 100);
136
137   const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
138   YGNodeStyleSetHeight(root_child0, 10);
139   YGNodeInsertChild(root, root_child0, 0);
140   YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
141
142   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
143   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
144   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
145   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
146
147   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetLeft(root_child0));
148   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetTop(root_child0));
149   ASSERT_FLOAT_EQ(80, YGNodeLayoutGetWidth(root_child0));
150   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child0));
151
152   YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
153
154   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
155   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
156   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
157   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
158
159   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetLeft(root_child0));
160   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetTop(root_child0));
161   ASSERT_FLOAT_EQ(80, YGNodeLayoutGetWidth(root_child0));
162   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child0));
163
164   YGNodeFreeRecursive(root);
165
166   YGConfigFree(config);
167 }
168
169 TEST(YogaTest, border_center_child) {
170   const YGConfigRef config = YGConfigNew();
171
172   const YGNodeRef root = YGNodeNewWithConfig(config);
173   YGNodeStyleSetJustifyContent(root, YGJustifyCenter);
174   YGNodeStyleSetAlignItems(root, YGAlignCenter);
175   YGNodeStyleSetBorder(root, YGEdgeStart, 10);
176   YGNodeStyleSetBorder(root, YGEdgeEnd, 20);
177   YGNodeStyleSetBorder(root, YGEdgeBottom, 20);
178   YGNodeStyleSetWidth(root, 100);
179   YGNodeStyleSetHeight(root, 100);
180
181   const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
182   YGNodeStyleSetWidth(root_child0, 10);
183   YGNodeStyleSetHeight(root_child0, 10);
184   YGNodeInsertChild(root, root_child0, 0);
185   YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
186
187   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
188   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
189   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
190   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
191
192   ASSERT_FLOAT_EQ(40, YGNodeLayoutGetLeft(root_child0));
193   ASSERT_FLOAT_EQ(35, YGNodeLayoutGetTop(root_child0));
194   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0));
195   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child0));
196
197   YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
198
199   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
200   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
201   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
202   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
203
204   ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child0));
205   ASSERT_FLOAT_EQ(35, YGNodeLayoutGetTop(root_child0));
206   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0));
207   ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child0));
208
209   YGNodeFreeRecursive(root);
210
211   YGConfigFree(config);
212 }