1 // Copyright 2016 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 <utility>
6
7 #include "base/message_loop/message_loop.h"
8 #include "mojo/public/cpp/bindings/binding_set.h"
9 #include "testing/gtest/include/gtest/gtest.h"
10 #include "ui/gfx/geometry/mojo/geometry_traits_test_service.mojom.h"
11 #include "ui/gfx/geometry/point.h"
12
13 namespace gfx {
14
15 namespace {
16
17 class GeometryStructTraitsTest : public testing::Test,
18 public mojom::GeometryTraitsTestService {
19 public:
GeometryStructTraitsTest()20 GeometryStructTraitsTest() {}
21
22 protected:
GetTraitsTestProxy()23 mojom::GeometryTraitsTestServicePtr GetTraitsTestProxy() {
24 mojom::GeometryTraitsTestServicePtr proxy;
25 traits_test_bindings_.AddBinding(this, mojo::MakeRequest(&proxy));
26 return proxy;
27 }
28
29 private:
30 // GeometryTraitsTestService:
EchoPoint(const Point & p,EchoPointCallback callback)31 void EchoPoint(const Point& p, EchoPointCallback callback) override {
32 std::move(callback).Run(p);
33 }
34
EchoPointF(const PointF & p,EchoPointFCallback callback)35 void EchoPointF(const PointF& p, EchoPointFCallback callback) override {
36 std::move(callback).Run(p);
37 }
38
EchoSize(const Size & s,EchoSizeCallback callback)39 void EchoSize(const Size& s, EchoSizeCallback callback) override {
40 std::move(callback).Run(s);
41 }
42
EchoSizeF(const SizeF & s,EchoSizeFCallback callback)43 void EchoSizeF(const SizeF& s, EchoSizeFCallback callback) override {
44 std::move(callback).Run(s);
45 }
46
EchoRect(const Rect & r,EchoRectCallback callback)47 void EchoRect(const Rect& r, EchoRectCallback callback) override {
48 std::move(callback).Run(r);
49 }
50
EchoRectF(const RectF & r,EchoRectFCallback callback)51 void EchoRectF(const RectF& r, EchoRectFCallback callback) override {
52 std::move(callback).Run(r);
53 }
54
EchoInsets(const Insets & i,EchoInsetsCallback callback)55 void EchoInsets(const Insets& i, EchoInsetsCallback callback) override {
56 std::move(callback).Run(i);
57 }
58
EchoInsetsF(const InsetsF & i,EchoInsetsFCallback callback)59 void EchoInsetsF(const InsetsF& i, EchoInsetsFCallback callback) override {
60 std::move(callback).Run(i);
61 }
62
EchoVector2d(const Vector2d & v,EchoVector2dCallback callback)63 void EchoVector2d(const Vector2d& v, EchoVector2dCallback callback) override {
64 std::move(callback).Run(v);
65 }
66
EchoVector2dF(const Vector2dF & v,EchoVector2dFCallback callback)67 void EchoVector2dF(const Vector2dF& v,
68 EchoVector2dFCallback callback) override {
69 std::move(callback).Run(v);
70 }
71
72 base::MessageLoop loop_;
73 mojo::BindingSet<GeometryTraitsTestService> traits_test_bindings_;
74
75 DISALLOW_COPY_AND_ASSIGN(GeometryStructTraitsTest);
76 };
77
78 } // namespace
79
TEST_F(GeometryStructTraitsTest,Point)80 TEST_F(GeometryStructTraitsTest, Point) {
81 const int32_t x = 1234;
82 const int32_t y = -5678;
83 gfx::Point input(x, y);
84 mojom::GeometryTraitsTestServicePtr proxy = GetTraitsTestProxy();
85 gfx::Point output;
86 proxy->EchoPoint(input, &output);
87 EXPECT_EQ(x, output.x());
88 EXPECT_EQ(y, output.y());
89 }
90
TEST_F(GeometryStructTraitsTest,PointF)91 TEST_F(GeometryStructTraitsTest, PointF) {
92 const float x = 1234.5f;
93 const float y = 6789.6f;
94 gfx::PointF input(x, y);
95 mojom::GeometryTraitsTestServicePtr proxy = GetTraitsTestProxy();
96 gfx::PointF output;
97 proxy->EchoPointF(input, &output);
98 EXPECT_EQ(x, output.x());
99 EXPECT_EQ(y, output.y());
100 }
101
TEST_F(GeometryStructTraitsTest,Size)102 TEST_F(GeometryStructTraitsTest, Size) {
103 const int32_t width = 1234;
104 const int32_t height = 5678;
105 gfx::Size input(width, height);
106 mojom::GeometryTraitsTestServicePtr proxy = GetTraitsTestProxy();
107 gfx::Size output;
108 proxy->EchoSize(input, &output);
109 EXPECT_EQ(width, output.width());
110 EXPECT_EQ(height, output.height());
111 }
112
TEST_F(GeometryStructTraitsTest,SizeF)113 TEST_F(GeometryStructTraitsTest, SizeF) {
114 const float width = 1234.5f;
115 const float height = 6789.6f;
116 gfx::SizeF input(width, height);
117 mojom::GeometryTraitsTestServicePtr proxy = GetTraitsTestProxy();
118 gfx::SizeF output;
119 proxy->EchoSizeF(input, &output);
120 EXPECT_EQ(width, output.width());
121 EXPECT_EQ(height, output.height());
122 }
123
TEST_F(GeometryStructTraitsTest,Rect)124 TEST_F(GeometryStructTraitsTest, Rect) {
125 const int32_t x = 1234;
126 const int32_t y = 5678;
127 const int32_t width = 4321;
128 const int32_t height = 8765;
129 gfx::Rect input(x, y, width, height);
130 mojom::GeometryTraitsTestServicePtr proxy = GetTraitsTestProxy();
131 gfx::Rect output;
132 proxy->EchoRect(input, &output);
133 EXPECT_EQ(x, output.x());
134 EXPECT_EQ(y, output.y());
135 EXPECT_EQ(width, output.width());
136 EXPECT_EQ(height, output.height());
137 }
138
TEST_F(GeometryStructTraitsTest,RectF)139 TEST_F(GeometryStructTraitsTest, RectF) {
140 const float x = 1234.1f;
141 const float y = 5678.2f;
142 const float width = 4321.3f;
143 const float height = 8765.4f;
144 gfx::RectF input(x, y, width, height);
145 mojom::GeometryTraitsTestServicePtr proxy = GetTraitsTestProxy();
146 gfx::RectF output;
147 proxy->EchoRectF(input, &output);
148 EXPECT_EQ(x, output.x());
149 EXPECT_EQ(y, output.y());
150 EXPECT_EQ(width, output.width());
151 EXPECT_EQ(height, output.height());
152 }
153
TEST_F(GeometryStructTraitsTest,Insets)154 TEST_F(GeometryStructTraitsTest, Insets) {
155 const int32_t top = 1234;
156 const int32_t left = 5678;
157 const int32_t bottom = 4321;
158 const int32_t right = 8765;
159 gfx::Insets input(top, left, bottom, right);
160 mojom::GeometryTraitsTestServicePtr proxy = GetTraitsTestProxy();
161 gfx::Insets output;
162 proxy->EchoInsets(input, &output);
163 EXPECT_EQ(top, output.top());
164 EXPECT_EQ(left, output.left());
165 EXPECT_EQ(bottom, output.bottom());
166 EXPECT_EQ(right, output.right());
167 }
168
TEST_F(GeometryStructTraitsTest,InsetsF)169 TEST_F(GeometryStructTraitsTest, InsetsF) {
170 const float top = 1234.1f;
171 const float left = 5678.2f;
172 const float bottom = 4321.3f;
173 const float right = 8765.4f;
174 gfx::InsetsF input(top, left, bottom, right);
175 mojom::GeometryTraitsTestServicePtr proxy = GetTraitsTestProxy();
176 gfx::InsetsF output;
177 proxy->EchoInsetsF(input, &output);
178 EXPECT_EQ(top, output.top());
179 EXPECT_EQ(left, output.left());
180 EXPECT_EQ(bottom, output.bottom());
181 EXPECT_EQ(right, output.right());
182 }
183
TEST_F(GeometryStructTraitsTest,Vector2d)184 TEST_F(GeometryStructTraitsTest, Vector2d) {
185 const int32_t x = 1234;
186 const int32_t y = -5678;
187 gfx::Vector2d input(x, y);
188 mojom::GeometryTraitsTestServicePtr proxy = GetTraitsTestProxy();
189 gfx::Vector2d output;
190 proxy->EchoVector2d(input, &output);
191 EXPECT_EQ(x, output.x());
192 EXPECT_EQ(y, output.y());
193 }
194
TEST_F(GeometryStructTraitsTest,Vector2dF)195 TEST_F(GeometryStructTraitsTest, Vector2dF) {
196 const float x = 1234.5f;
197 const float y = 6789.6f;
198 gfx::Vector2dF input(x, y);
199 mojom::GeometryTraitsTestServicePtr proxy = GetTraitsTestProxy();
200 gfx::Vector2dF output;
201 proxy->EchoVector2dF(input, &output);
202 EXPECT_EQ(x, output.x());
203 EXPECT_EQ(y, output.y());
204 }
205
206 } // namespace gfx
207