1 // Copyright 2011 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.
5 #include "cc/output/layer_quad.h"
7 #include "testing/gtest/include/gtest/gtest.h"
8 #include "ui/gfx/geometry/quad_f.h"
13 TEST(LayerQuadTest
, QuadFConversion
) {
14 gfx::PointF
p1(-0.5f
, -0.5f
);
15 gfx::PointF
p2(0.5f
, -0.5f
);
16 gfx::PointF
p3(0.5f
, 0.5f
);
17 gfx::PointF
p4(-0.5f
, 0.5f
);
19 gfx::QuadF
quad_cw(p1
, p2
, p3
, p4
);
20 LayerQuad
layer_quad_cw(quad_cw
);
21 EXPECT_EQ(layer_quad_cw
.ToQuadF(), quad_cw
);
23 gfx::QuadF
quad_ccw(p1
, p4
, p3
, p2
);
24 LayerQuad
layer_quad_ccw(quad_ccw
);
25 EXPECT_EQ(layer_quad_ccw
.ToQuadF(), quad_ccw
);
28 TEST(LayerQuadTest
, Inflate
) {
29 gfx::PointF
p1(-0.5f
, -0.5f
);
30 gfx::PointF
p2(0.5f
, -0.5f
);
31 gfx::PointF
p3(0.5f
, 0.5f
);
32 gfx::PointF
p4(-0.5f
, 0.5f
);
34 gfx::QuadF
quad(p1
, p2
, p3
, p4
);
35 LayerQuad
layer_quad(quad
);
37 layer_quad
.Inflate(0.5f
);
38 EXPECT_EQ(layer_quad
.ToQuadF(), quad
);
41 TEST(LayerQuadTest
, Degenerate
) {
43 gfx::PointF
p1(1.0f
, 1.0f
);
44 gfx::PointF
p2(0.0f
, 1.0f
);
45 gfx::PointF
p3(1.0f
, 0.0f
);
46 gfx::QuadF
triangle(p1
, p2
, p3
, p1
);
48 LayerQuad::Edge
e1d(p1
, p1
);
49 LayerQuad::Edge
e2d(p2
, p2
);
50 LayerQuad::Edge
e2(p1
, p2
);
51 LayerQuad::Edge
e3(p2
, p3
);
52 LayerQuad::Edge
e4(p3
, p1
);
53 EXPECT_TRUE(e1d
.degenerate());
54 EXPECT_TRUE(e2d
.degenerate());
55 EXPECT_FALSE(e2
.degenerate());
56 EXPECT_FALSE(e3
.degenerate());
57 EXPECT_FALSE(e4
.degenerate());
59 LayerQuad
degenerate_quad(e1d
, e2d
, e2
, e3
);
60 // With more than one degenerate edge, we expect the quad to be zero.
61 EXPECT_EQ(quad
, degenerate_quad
.ToQuadF());
63 LayerQuad
triangle_quad(e1d
, e2
, e3
, e4
);
64 // With only one degenerate edge, we expect the quad to be a triangle.
65 EXPECT_EQ(triangle
, triangle_quad
.ToQuadF());