• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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