6 #include "flutter/testing/testing.h"
7 #include "gtest/gtest.h"
14 #include "impeller/renderer/testing/mocks.h"
17 std::vector<impeller::SolidFillVertexShader::PerVertexData> a,
18 std::vector<impeller::SolidFillVertexShader::PerVertexData>
b) {
19 if (a.size() !=
b.size()) {
20 return ::testing::AssertionFailure() <<
"Colors length does not match";
22 for (
auto i = 0u; i <
b.size(); i++) {
23 if (!
PointNear(a[i].position,
b[i].position)) {
24 return ::testing::AssertionFailure() <<
"Positions are not equal.";
27 return ::testing::AssertionSuccess();
31 std::vector<impeller::TextureFillVertexShader::PerVertexData> a,
32 std::vector<impeller::TextureFillVertexShader::PerVertexData>
b) {
33 if (a.size() !=
b.size()) {
34 return ::testing::AssertionFailure() <<
"Colors length does not match";
36 for (
auto i = 0u; i <
b.size(); i++) {
37 if (!
PointNear(a[i].position,
b[i].position)) {
38 return ::testing::AssertionFailure() <<
"Positions are not equal.";
40 if (!
PointNear(a[i].texture_coords,
b[i].texture_coords)) {
41 return ::testing::AssertionFailure() <<
"Texture coords are not equal.";
44 return ::testing::AssertionSuccess();
47 #define EXPECT_SOLID_VERTICES_NEAR(a, b) \
48 EXPECT_PRED2(&::SolidVerticesNear, a, b)
49 #define EXPECT_TEXTURE_VERTICES_NEAR(a, b) \
50 EXPECT_PRED2(&::TextureVerticesNear, a, b)
56 static std::vector<SolidFillVertexShader::PerVertexData>
63 return StrokePathGeometry::GenerateSolidStrokeVertices(
70 TEST(EntityGeometryTest, RectGeometryCoversArea) {
72 ASSERT_TRUE(geometry->CoversArea({},
Rect::MakeLTRB(0, 0, 100, 100)));
73 ASSERT_FALSE(geometry->CoversArea({},
Rect::MakeLTRB(-1, 0, 100, 100)));
74 ASSERT_TRUE(geometry->CoversArea({},
Rect::MakeLTRB(1, 1, 100, 100)));
75 ASSERT_TRUE(geometry->CoversArea({},
Rect()));
78 TEST(EntityGeometryTest, FillPathGeometryCoversArea) {
82 ASSERT_TRUE(geometry->CoversArea({},
Rect::MakeLTRB(0, 0, 100, 100)));
83 ASSERT_FALSE(geometry->CoversArea({},
Rect::MakeLTRB(-1, 0, 100, 100)));
84 ASSERT_TRUE(geometry->CoversArea({},
Rect::MakeLTRB(1, 1, 100, 100)));
85 ASSERT_TRUE(geometry->CoversArea({},
Rect()));
88 TEST(EntityGeometryTest, FillPathGeometryCoversAreaNoInnerRect) {
91 ASSERT_FALSE(geometry->CoversArea({},
Rect::MakeLTRB(0, 0, 100, 100)));
92 ASSERT_FALSE(geometry->CoversArea({},
Rect::MakeLTRB(-1, 0, 100, 100)));
93 ASSERT_FALSE(geometry->CoversArea({},
Rect::MakeLTRB(1, 1, 100, 100)));
94 ASSERT_FALSE(geometry->CoversArea({},
Rect()));
97 TEST(EntityGeometryTest, LineGeometryCoverage) {
100 EXPECT_EQ(geometry->GetCoverage({}),
Rect::MakeLTRB(10, 9, 20, 11));
101 EXPECT_TRUE(geometry->CoversArea({},
Rect::MakeLTRB(10, 9, 20, 11)));
106 EXPECT_EQ(geometry->GetCoverage({}),
Rect::MakeLTRB(9, 9, 21, 11));
107 EXPECT_TRUE(geometry->CoversArea({},
Rect::MakeLTRB(9, 9, 21, 11)));
112 EXPECT_EQ(geometry->GetCoverage({}),
Rect::MakeLTRB(9, 10, 11, 20));
113 EXPECT_TRUE(geometry->CoversArea({},
Rect::MakeLTRB(9, 10, 11, 20)));
118 EXPECT_EQ(geometry->GetCoverage({}),
Rect::MakeLTRB(9, 9, 11, 21));
119 EXPECT_TRUE(geometry->CoversArea({},
Rect::MakeLTRB(9, 9, 11, 21)));
123 TEST(EntityGeometryTest, RoundRectGeometryCoversArea) {
126 EXPECT_FALSE(geometry->CoversArea({},
Rect::MakeLTRB(15, 15, 85, 85)));
127 EXPECT_TRUE(geometry->CoversArea({},
Rect::MakeLTRB(20, 20, 80, 80)));
128 EXPECT_TRUE(geometry->CoversArea({},
Rect::MakeLTRB(30, 1, 70, 99)));
129 EXPECT_TRUE(geometry->CoversArea({},
Rect::MakeLTRB(1, 30, 99, 70)));
132 TEST(EntityGeometryTest, GeometryResultHasReasonableDefaults) {
139 TEST(EntityGeometryTest, AlphaCoverageStrokePaths) {