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/YGPaddingTest.html
10 #include <gtest/gtest.h>
11 #include <yoga/Yoga.h>
13 TEST(YogaTest, padding_no_size) {
14 const YGConfigRef config = YGConfigNew();
16 const YGNodeRef root = YGNodeNewWithConfig(config);
17 YGNodeStyleSetPadding(root, YGEdgeLeft, 10);
18 YGNodeStyleSetPadding(root, YGEdgeTop, 10);
19 YGNodeStyleSetPadding(root, YGEdgeRight, 10);
20 YGNodeStyleSetPadding(root, YGEdgeBottom, 10);
21 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
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));
28 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
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));
35 YGNodeFreeRecursive(root);
40 TEST(YogaTest, padding_container_match_child) {
41 const YGConfigRef config = YGConfigNew();
43 const YGNodeRef root = YGNodeNewWithConfig(config);
44 YGNodeStyleSetPadding(root, YGEdgeLeft, 10);
45 YGNodeStyleSetPadding(root, YGEdgeTop, 10);
46 YGNodeStyleSetPadding(root, YGEdgeRight, 10);
47 YGNodeStyleSetPadding(root, YGEdgeBottom, 10);
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);
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));
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));
65 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
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));
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));
77 YGNodeFreeRecursive(root);
82 TEST(YogaTest, padding_flex_child) {
83 const YGConfigRef config = YGConfigNew();
85 const YGNodeRef root = YGNodeNewWithConfig(config);
86 YGNodeStyleSetPadding(root, YGEdgeLeft, 10);
87 YGNodeStyleSetPadding(root, YGEdgeTop, 10);
88 YGNodeStyleSetPadding(root, YGEdgeRight, 10);
89 YGNodeStyleSetPadding(root, YGEdgeBottom, 10);
90 YGNodeStyleSetWidth(root, 100);
91 YGNodeStyleSetHeight(root, 100);
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);
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));
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));
109 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
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));
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));
121 YGNodeFreeRecursive(root);
123 YGConfigFree(config);
126 TEST(YogaTest, padding_stretch_child) {
127 const YGConfigRef config = YGConfigNew();
129 const YGNodeRef root = YGNodeNewWithConfig(config);
130 YGNodeStyleSetPadding(root, YGEdgeLeft, 10);
131 YGNodeStyleSetPadding(root, YGEdgeTop, 10);
132 YGNodeStyleSetPadding(root, YGEdgeRight, 10);
133 YGNodeStyleSetPadding(root, YGEdgeBottom, 10);
134 YGNodeStyleSetWidth(root, 100);
135 YGNodeStyleSetHeight(root, 100);
137 const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
138 YGNodeStyleSetHeight(root_child0, 10);
139 YGNodeInsertChild(root, root_child0, 0);
140 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
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));
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));
152 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
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));
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));
164 YGNodeFreeRecursive(root);
166 YGConfigFree(config);
169 TEST(YogaTest, padding_center_child) {
170 const YGConfigRef config = YGConfigNew();
172 const YGNodeRef root = YGNodeNewWithConfig(config);
173 YGNodeStyleSetJustifyContent(root, YGJustifyCenter);
174 YGNodeStyleSetAlignItems(root, YGAlignCenter);
175 YGNodeStyleSetPadding(root, YGEdgeStart, 10);
176 YGNodeStyleSetPadding(root, YGEdgeEnd, 20);
177 YGNodeStyleSetPadding(root, YGEdgeBottom, 20);
178 YGNodeStyleSetWidth(root, 100);
179 YGNodeStyleSetHeight(root, 100);
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);
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));
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));
197 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
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));
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));
209 YGNodeFreeRecursive(root);
211 YGConfigFree(config);
214 TEST(YogaTest, child_with_padding_align_end) {
215 const YGConfigRef config = YGConfigNew();
217 const YGNodeRef root = YGNodeNewWithConfig(config);
218 YGNodeStyleSetJustifyContent(root, YGJustifyFlexEnd);
219 YGNodeStyleSetAlignItems(root, YGAlignFlexEnd);
220 YGNodeStyleSetWidth(root, 200);
221 YGNodeStyleSetHeight(root, 200);
223 const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
224 YGNodeStyleSetPadding(root_child0, YGEdgeLeft, 20);
225 YGNodeStyleSetPadding(root_child0, YGEdgeTop, 20);
226 YGNodeStyleSetPadding(root_child0, YGEdgeRight, 20);
227 YGNodeStyleSetPadding(root_child0, YGEdgeBottom, 20);
228 YGNodeStyleSetWidth(root_child0, 100);
229 YGNodeStyleSetHeight(root_child0, 100);
230 YGNodeInsertChild(root, root_child0, 0);
231 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
233 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
234 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
235 ASSERT_FLOAT_EQ(200, YGNodeLayoutGetWidth(root));
236 ASSERT_FLOAT_EQ(200, YGNodeLayoutGetHeight(root));
238 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetLeft(root_child0));
239 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetTop(root_child0));
240 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0));
241 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0));
243 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
245 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
246 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
247 ASSERT_FLOAT_EQ(200, YGNodeLayoutGetWidth(root));
248 ASSERT_FLOAT_EQ(200, YGNodeLayoutGetHeight(root));
250 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
251 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetTop(root_child0));
252 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0));
253 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0));
255 YGNodeFreeRecursive(root);
257 YGConfigFree(config);