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/YGSizeOverflowTest.html
10 #include <gtest/gtest.h>
11 #include <yoga/Yoga.h>
13 TEST(YogaTest, nested_overflowing_child) {
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 YGNodeInsertChild(root, root_child0, 0);
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);
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));
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));
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));
44 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
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));
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));
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));
61 YGNodeFreeRecursive(root);
66 TEST(YogaTest, nested_overflowing_child_in_constraint_parent) {
67 const YGConfigRef config = YGConfigNew();
69 const YGNodeRef root = YGNodeNewWithConfig(config);
70 YGNodeStyleSetWidth(root, 100);
71 YGNodeStyleSetHeight(root, 100);
73 const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
74 YGNodeStyleSetWidth(root_child0, 100);
75 YGNodeStyleSetHeight(root_child0, 100);
76 YGNodeInsertChild(root, root_child0, 0);
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);
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));
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));
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));
99 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
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));
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));
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));
116 YGNodeFreeRecursive(root);
118 YGConfigFree(config);
121 TEST(YogaTest, parent_wrap_child_size_overflowing_parent) {
122 const YGConfigRef config = YGConfigNew();
124 const YGNodeRef root = YGNodeNewWithConfig(config);
125 YGNodeStyleSetWidth(root, 100);
126 YGNodeStyleSetHeight(root, 100);
128 const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
129 YGNodeStyleSetWidth(root_child0, 100);
130 YGNodeInsertChild(root, root_child0, 0);
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);
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));
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));
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));
153 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
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));
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));
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));
170 YGNodeFreeRecursive(root);
172 YGConfigFree(config);