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/YGAlignSelfTest.html
10 #include <gtest/gtest.h>
11 #include <yoga/Yoga.h>
13 TEST(YogaTest, align_self_center) {
14 const YGConfigRef config = YGConfigNew();
16 const YGNodeRef root = YGNodeNewWithConfig(config);
17 YGNodeStyleSetWidth(root, 100);
18 YGNodeStyleSetHeight(root, 100);
20 const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
21 YGNodeStyleSetAlignSelf(root_child0, YGAlignCenter);
22 YGNodeStyleSetWidth(root_child0, 10);
23 YGNodeStyleSetHeight(root_child0, 10);
24 YGNodeInsertChild(root, root_child0, 0);
25 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
27 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
28 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
29 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
30 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
32 ASSERT_FLOAT_EQ(45, YGNodeLayoutGetLeft(root_child0));
33 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
34 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0));
35 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child0));
37 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
39 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
40 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
41 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
42 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
44 ASSERT_FLOAT_EQ(45, YGNodeLayoutGetLeft(root_child0));
45 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
46 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0));
47 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child0));
49 YGNodeFreeRecursive(root);
54 TEST(YogaTest, align_self_flex_end) {
55 const YGConfigRef config = YGConfigNew();
57 const YGNodeRef root = YGNodeNewWithConfig(config);
58 YGNodeStyleSetWidth(root, 100);
59 YGNodeStyleSetHeight(root, 100);
61 const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
62 YGNodeStyleSetAlignSelf(root_child0, YGAlignFlexEnd);
63 YGNodeStyleSetWidth(root_child0, 10);
64 YGNodeStyleSetHeight(root_child0, 10);
65 YGNodeInsertChild(root, root_child0, 0);
66 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
68 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
69 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
70 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
71 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
73 ASSERT_FLOAT_EQ(90, YGNodeLayoutGetLeft(root_child0));
74 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
75 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0));
76 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child0));
78 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
80 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
81 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
82 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
83 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
85 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
86 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
87 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0));
88 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child0));
90 YGNodeFreeRecursive(root);
95 TEST(YogaTest, align_self_flex_start) {
96 const YGConfigRef config = YGConfigNew();
98 const YGNodeRef root = YGNodeNewWithConfig(config);
99 YGNodeStyleSetWidth(root, 100);
100 YGNodeStyleSetHeight(root, 100);
102 const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
103 YGNodeStyleSetAlignSelf(root_child0, YGAlignFlexStart);
104 YGNodeStyleSetWidth(root_child0, 10);
105 YGNodeStyleSetHeight(root_child0, 10);
106 YGNodeInsertChild(root, root_child0, 0);
107 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
109 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
110 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
111 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
112 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
114 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
115 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
116 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0));
117 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child0));
119 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
121 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
122 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
123 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
124 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
126 ASSERT_FLOAT_EQ(90, YGNodeLayoutGetLeft(root_child0));
127 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
128 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0));
129 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child0));
131 YGNodeFreeRecursive(root);
133 YGConfigFree(config);
136 TEST(YogaTest, align_self_flex_end_override_flex_start) {
137 const YGConfigRef config = YGConfigNew();
139 const YGNodeRef root = YGNodeNewWithConfig(config);
140 YGNodeStyleSetAlignItems(root, YGAlignFlexStart);
141 YGNodeStyleSetWidth(root, 100);
142 YGNodeStyleSetHeight(root, 100);
144 const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
145 YGNodeStyleSetAlignSelf(root_child0, YGAlignFlexEnd);
146 YGNodeStyleSetWidth(root_child0, 10);
147 YGNodeStyleSetHeight(root_child0, 10);
148 YGNodeInsertChild(root, root_child0, 0);
149 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
151 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
152 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
153 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
154 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
156 ASSERT_FLOAT_EQ(90, YGNodeLayoutGetLeft(root_child0));
157 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
158 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0));
159 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child0));
161 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
163 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
164 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
165 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
166 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
168 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
169 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
170 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0));
171 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child0));
173 YGNodeFreeRecursive(root);
175 YGConfigFree(config);
178 TEST(YogaTest, align_self_baseline) {
179 const YGConfigRef config = YGConfigNew();
181 const YGNodeRef root = YGNodeNewWithConfig(config);
182 YGNodeStyleSetFlexDirection(root, YGFlexDirectionRow);
183 YGNodeStyleSetWidth(root, 100);
184 YGNodeStyleSetHeight(root, 100);
186 const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
187 YGNodeStyleSetAlignSelf(root_child0, YGAlignBaseline);
188 YGNodeStyleSetWidth(root_child0, 50);
189 YGNodeStyleSetHeight(root_child0, 50);
190 YGNodeInsertChild(root, root_child0, 0);
192 const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
193 YGNodeStyleSetAlignSelf(root_child1, YGAlignBaseline);
194 YGNodeStyleSetWidth(root_child1, 50);
195 YGNodeStyleSetHeight(root_child1, 20);
196 YGNodeInsertChild(root, root_child1, 1);
198 const YGNodeRef root_child1_child0 = YGNodeNewWithConfig(config);
199 YGNodeStyleSetWidth(root_child1_child0, 50);
200 YGNodeStyleSetHeight(root_child1_child0, 10);
201 YGNodeInsertChild(root_child1, root_child1_child0, 0);
202 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
204 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
205 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
206 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
207 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
209 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
210 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
211 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child0));
212 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child0));
214 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child1));
215 ASSERT_FLOAT_EQ(40, YGNodeLayoutGetTop(root_child1));
216 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child1));
217 ASSERT_FLOAT_EQ(20, YGNodeLayoutGetHeight(root_child1));
219 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1_child0));
220 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1_child0));
221 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child1_child0));
222 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child1_child0));
224 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
226 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
227 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
228 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
229 ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
231 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child0));
232 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
233 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child0));
234 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child0));
236 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1));
237 ASSERT_FLOAT_EQ(40, YGNodeLayoutGetTop(root_child1));
238 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child1));
239 ASSERT_FLOAT_EQ(20, YGNodeLayoutGetHeight(root_child1));
241 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1_child0));
242 ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1_child0));
243 ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child1_child0));
244 ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child1_child0));
246 YGNodeFreeRecursive(root);
248 YGConfigFree(config);