OLD | NEW |
| (Empty) |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #include "cc/proto/gfx_conversions.h" | |
6 | |
7 #include "cc/proto/point.pb.h" | |
8 #include "cc/proto/point3f.pb.h" | |
9 #include "cc/proto/pointf.pb.h" | |
10 #include "cc/proto/rect.pb.h" | |
11 #include "cc/proto/rectf.pb.h" | |
12 #include "cc/proto/scroll_offset.pb.h" | |
13 #include "cc/proto/size.pb.h" | |
14 #include "cc/proto/sizef.pb.h" | |
15 #include "cc/proto/transform.pb.h" | |
16 #include "cc/proto/vector2d.pb.h" | |
17 #include "cc/proto/vector2df.pb.h" | |
18 #include "testing/gtest/include/gtest/gtest.h" | |
19 #include "ui/gfx/geometry/point.h" | |
20 #include "ui/gfx/geometry/point3_f.h" | |
21 #include "ui/gfx/geometry/point_f.h" | |
22 #include "ui/gfx/geometry/rect.h" | |
23 #include "ui/gfx/geometry/rect_f.h" | |
24 #include "ui/gfx/geometry/scroll_offset.h" | |
25 #include "ui/gfx/geometry/size.h" | |
26 #include "ui/gfx/geometry/size_f.h" | |
27 #include "ui/gfx/geometry/vector2d_f.h" | |
28 #include "ui/gfx/transform.h" | |
29 | |
30 namespace cc { | |
31 namespace { | |
32 | |
33 TEST(GfxProtoConversionsTest, IntSerializationLimits) { | |
34 // Test Point with the minimum int value. | |
35 { | |
36 gfx::Point point(std::numeric_limits<int>::min(), | |
37 std::numeric_limits<int>::min()); | |
38 proto::Point proto; | |
39 PointToProto(point, &proto); | |
40 EXPECT_EQ(point, ProtoToPoint(proto)); | |
41 } | |
42 | |
43 // Test Point with the maximum int value. | |
44 { | |
45 gfx::Point point(std::numeric_limits<int>::max(), | |
46 std::numeric_limits<int>::max()); | |
47 proto::Point proto; | |
48 PointToProto(point, &proto); | |
49 EXPECT_EQ(point, ProtoToPoint(proto)); | |
50 } | |
51 | |
52 // Test Size with the minimum int value. | |
53 { | |
54 gfx::Size size(std::numeric_limits<int>::min(), | |
55 std::numeric_limits<int>::min()); | |
56 proto::Size proto; | |
57 SizeToProto(size, &proto); | |
58 EXPECT_EQ(size, ProtoToSize(proto)); | |
59 } | |
60 | |
61 // Test Size with the maximum int value. | |
62 { | |
63 gfx::Size size(std::numeric_limits<int>::max(), | |
64 std::numeric_limits<int>::max()); | |
65 proto::Size proto; | |
66 SizeToProto(size, &proto); | |
67 EXPECT_EQ(size, ProtoToSize(proto)); | |
68 } | |
69 } | |
70 | |
71 TEST(GfxProtoConversionsTest, SerializeDeserializePoint) { | |
72 const gfx::Point point(5, 10); | |
73 | |
74 // Test PointToProto | |
75 proto::Point proto; | |
76 PointToProto(point, &proto); | |
77 EXPECT_EQ(point.x(), proto.x()); | |
78 EXPECT_EQ(point.y(), proto.y()); | |
79 | |
80 // Test protoToPoint | |
81 EXPECT_EQ(point, ProtoToPoint(proto)); | |
82 } | |
83 | |
84 TEST(GfxProtoConversionsTest, SerializeDeserializePointF) { | |
85 const gfx::PointF point(5.1f, 10.2f); | |
86 | |
87 // Test PointFToProto | |
88 proto::PointF proto; | |
89 PointFToProto(point, &proto); | |
90 EXPECT_EQ(point.x(), proto.x()); | |
91 EXPECT_EQ(point.y(), proto.y()); | |
92 | |
93 // Test ProtoToPointF | |
94 EXPECT_EQ(point, ProtoToPointF(proto)); | |
95 } | |
96 | |
97 TEST(GfxProtoConversionsTest, SerializeDeserializePoint3F) { | |
98 const gfx::Point3F point(5.1f, 10.2f, 13.4f); | |
99 | |
100 // Test PointFToProto | |
101 proto::Point3F proto; | |
102 Point3FToProto(point, &proto); | |
103 EXPECT_EQ(point.x(), proto.x()); | |
104 EXPECT_EQ(point.y(), proto.y()); | |
105 EXPECT_EQ(point.z(), proto.z()); | |
106 | |
107 // Test ProtoToPoint3F | |
108 EXPECT_EQ(point, ProtoToPoint3F(proto)); | |
109 } | |
110 | |
111 TEST(GfxProtoConversionsTest, SerializeDeserializeSize) { | |
112 const gfx::Size size(5, 10); | |
113 | |
114 // Test SizeToProto | |
115 proto::Size proto; | |
116 SizeToProto(size, &proto); | |
117 EXPECT_EQ(size.width(), proto.width()); | |
118 EXPECT_EQ(size.height(), proto.height()); | |
119 | |
120 // Test ProtoToSize | |
121 EXPECT_EQ(size, ProtoToSize(proto)); | |
122 } | |
123 | |
124 TEST(GfxProtoConversionsTest, SerializeDeserializeSizeF) { | |
125 const gfx::SizeF size(5.1f, 10.2f); | |
126 | |
127 // Test SizeFToProto | |
128 proto::SizeF proto; | |
129 SizeFToProto(size, &proto); | |
130 EXPECT_EQ(size.width(), proto.width()); | |
131 EXPECT_EQ(size.height(), proto.height()); | |
132 | |
133 // Test ProtoToSizeF | |
134 EXPECT_EQ(size, ProtoToSizeF(proto)); | |
135 } | |
136 | |
137 TEST(GfxProtoConversionsTest, SerializeDeserializeRect) { | |
138 const gfx::Rect rect(1, 2, 3, 4); | |
139 | |
140 // Test RectToProto | |
141 proto::Rect proto; | |
142 RectToProto(rect, &proto); | |
143 EXPECT_EQ(rect.origin().x(), proto.origin().x()); | |
144 EXPECT_EQ(rect.origin().y(), proto.origin().y()); | |
145 EXPECT_EQ(rect.size().width(), proto.size().width()); | |
146 EXPECT_EQ(rect.size().height(), proto.size().height()); | |
147 | |
148 // Test ProtoToRect | |
149 EXPECT_EQ(rect, ProtoToRect(proto)); | |
150 } | |
151 | |
152 TEST(GfxProtoConversionsTest, SerializeDeserializeRectF) { | |
153 const gfx::RectF rect(1.4f, 2.3f, 3.2f, 4.1f); | |
154 | |
155 // Test RectFToProto | |
156 proto::RectF proto; | |
157 RectFToProto(rect, &proto); | |
158 EXPECT_EQ(rect.origin().x(), proto.origin().x()); | |
159 EXPECT_EQ(rect.origin().y(), proto.origin().y()); | |
160 EXPECT_EQ(rect.size().width(), proto.size().width()); | |
161 EXPECT_EQ(rect.size().height(), proto.size().height()); | |
162 | |
163 // Test ProtoToRectF | |
164 EXPECT_EQ(rect, ProtoToRectF(proto)); | |
165 } | |
166 | |
167 TEST(GfxProtoConversionsTest, SerializeDeserializeTransform) { | |
168 gfx::Transform transform(1.16f, 2.15f, 3.14f, 4.13f, 5.12f, 6.11f, 7.1f, 8.9f, | |
169 9.8f, 10.7f, 11.6f, 12.5f, 13.4f, 14.3f, 15.2f, | |
170 16.1f); | |
171 | |
172 // Test TransformToProto | |
173 proto::Transform proto; | |
174 TransformToProto(transform, &proto); | |
175 EXPECT_EQ(16, proto.matrix_size()); | |
176 EXPECT_EQ(transform.matrix().get(0, 0), proto.matrix(0)); | |
177 EXPECT_EQ(transform.matrix().get(0, 1), proto.matrix(1)); | |
178 EXPECT_EQ(transform.matrix().get(0, 2), proto.matrix(2)); | |
179 EXPECT_EQ(transform.matrix().get(0, 3), proto.matrix(3)); | |
180 EXPECT_EQ(transform.matrix().get(1, 0), proto.matrix(4)); | |
181 EXPECT_EQ(transform.matrix().get(1, 1), proto.matrix(5)); | |
182 EXPECT_EQ(transform.matrix().get(1, 2), proto.matrix(6)); | |
183 EXPECT_EQ(transform.matrix().get(1, 3), proto.matrix(7)); | |
184 EXPECT_EQ(transform.matrix().get(2, 0), proto.matrix(8)); | |
185 EXPECT_EQ(transform.matrix().get(2, 1), proto.matrix(9)); | |
186 EXPECT_EQ(transform.matrix().get(2, 2), proto.matrix(10)); | |
187 EXPECT_EQ(transform.matrix().get(2, 3), proto.matrix(11)); | |
188 EXPECT_EQ(transform.matrix().get(3, 0), proto.matrix(12)); | |
189 EXPECT_EQ(transform.matrix().get(3, 1), proto.matrix(13)); | |
190 EXPECT_EQ(transform.matrix().get(3, 2), proto.matrix(14)); | |
191 EXPECT_EQ(transform.matrix().get(3, 3), proto.matrix(15)); | |
192 | |
193 // Test ProtoToTransform | |
194 EXPECT_EQ(transform, ProtoToTransform(proto)); | |
195 | |
196 // Test for identity transforms. | |
197 gfx::Transform transform2; | |
198 EXPECT_TRUE(transform2.IsIdentity()); | |
199 proto::Transform proto2; | |
200 TransformToProto(transform2, &proto2); | |
201 EXPECT_EQ(transform2, ProtoToTransform(proto2)); | |
202 } | |
203 | |
204 TEST(GfxProtoConversionsTest, SerializeDeserializeVector2dF) { | |
205 // Test Case 1 | |
206 const gfx::Vector2dF vector1(5.1f, 10.2f); | |
207 | |
208 // Test Vector2dFToProto | |
209 proto::Vector2dF proto1; | |
210 Vector2dFToProto(vector1, &proto1); | |
211 EXPECT_EQ(vector1.x(), proto1.x()); | |
212 EXPECT_EQ(vector1.y(), proto1.y()); | |
213 | |
214 // Test ProtoToVector2dF | |
215 EXPECT_EQ(vector1, ProtoToVector2dF(proto1)); | |
216 | |
217 // Test Case 2 | |
218 const gfx::Vector2dF vector2(-3.1f, 0.2f); | |
219 | |
220 // Test Vector2dFToProto | |
221 proto::Vector2dF proto2; | |
222 Vector2dFToProto(vector2, &proto2); | |
223 EXPECT_EQ(vector2.x(), proto2.x()); | |
224 EXPECT_EQ(vector2.y(), proto2.y()); | |
225 | |
226 // Test ProtoToVector2dF | |
227 EXPECT_EQ(vector2, ProtoToVector2dF(proto2)); | |
228 | |
229 // Test Case 3 | |
230 const gfx::Vector2dF vector3(2.0f, -1.5f); | |
231 | |
232 // Test Vector2dFToProto | |
233 proto::Vector2dF proto3; | |
234 Vector2dFToProto(vector3, &proto3); | |
235 EXPECT_EQ(vector3.x(), proto3.x()); | |
236 EXPECT_EQ(vector3.y(), proto3.y()); | |
237 | |
238 // Test ProtoToVector2dF | |
239 EXPECT_EQ(vector3, ProtoToVector2dF(proto3)); | |
240 } | |
241 | |
242 TEST(GfxProtoConversionsTest, SerializeDeserializeScrollOffset) { | |
243 // Test Case 1 | |
244 const gfx::ScrollOffset scroll_offset1(5.1f, 10.2f); | |
245 | |
246 // Test ScrollOffsetToProto | |
247 proto::ScrollOffset proto1; | |
248 ScrollOffsetToProto(scroll_offset1, &proto1); | |
249 EXPECT_EQ(scroll_offset1.x(), proto1.x()); | |
250 EXPECT_EQ(scroll_offset1.y(), proto1.y()); | |
251 | |
252 // Test ProtoToScrollOffset | |
253 EXPECT_EQ(scroll_offset1, ProtoToScrollOffset(proto1)); | |
254 | |
255 // Test Case 2 | |
256 const gfx::ScrollOffset scroll_offset2(-0.1f, 0.2f); | |
257 | |
258 // Test ScrollOffsetToProto | |
259 proto::ScrollOffset proto2; | |
260 ScrollOffsetToProto(scroll_offset2, &proto2); | |
261 EXPECT_EQ(scroll_offset2.x(), proto2.x()); | |
262 EXPECT_EQ(scroll_offset2.y(), proto2.y()); | |
263 | |
264 // Test ProtoToScrollOffset | |
265 EXPECT_EQ(scroll_offset2, ProtoToScrollOffset(proto2)); | |
266 | |
267 // Test Case 3 | |
268 const gfx::ScrollOffset scroll_offset3(4.0f, -3.2f); | |
269 | |
270 // Test ScrollOffsetToProto | |
271 proto::ScrollOffset proto3; | |
272 ScrollOffsetToProto(scroll_offset3, &proto3); | |
273 EXPECT_EQ(scroll_offset3.x(), proto3.x()); | |
274 EXPECT_EQ(scroll_offset3.y(), proto3.y()); | |
275 | |
276 // Test ProtoToScrollOffset | |
277 EXPECT_EQ(scroll_offset3, ProtoToScrollOffset(proto3)); | |
278 } | |
279 | |
280 TEST(GfxProtoConversionsTest, SerializeDeserializeVector2d) { | |
281 const gfx::Vector2d vector(5, 10); | |
282 | |
283 // Test Vector2dToProto | |
284 proto::Vector2d proto; | |
285 Vector2dToProto(vector, &proto); | |
286 EXPECT_EQ(vector.x(), proto.x()); | |
287 EXPECT_EQ(vector.y(), proto.y()); | |
288 | |
289 // Test ProtoToVector2d | |
290 EXPECT_EQ(vector, ProtoToVector2d(proto)); | |
291 } | |
292 | |
293 } // namespace | |
294 } // namespace cc | |
OLD | NEW |