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/YGBorderTest.html
10 #include <gtest/gtest.h>
11 #include <yoga/Yoga.h>
13 TEST(YogaTest, border_no_size) {
14 const YGConfigRef config = YGConfigNew();
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);
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, border_container_match_child) {
41 const YGConfigRef config = YGConfigNew();
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);
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, border_flex_child) {
83 const YGConfigRef config = YGConfigNew();
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);
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, border_stretch_child) {
127 const YGConfigRef config = YGConfigNew();
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);
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, border_center_child) {
170 const YGConfigRef config = YGConfigNew();
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);
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);