| Index: tests/GrShapeTest.cpp
|
| diff --git a/tests/GrShapeTest.cpp b/tests/GrShapeTest.cpp
|
| index 2edfd1276eba571f7140bc2034daf9c47e12ec9f..5fa1db9f7e147859e715b7cb3a3f5a5e9c856c43 100644
|
| --- a/tests/GrShapeTest.cpp
|
| +++ b/tests/GrShapeTest.cpp
|
| @@ -325,6 +325,11 @@ void check_equivalence(skiatest::Reporter* r, const GrShape& a, const GrShape& b
|
| REPORTER_ASSERT(r, a.knownToBeClosed() == b.knownToBeClosed());
|
| REPORTER_ASSERT(r, a.bounds() == b.bounds());
|
| REPORTER_ASSERT(r, a.segmentMask() == b.segmentMask());
|
| + SkPoint pts[4];
|
| + REPORTER_ASSERT(r, a.asLine(pts) == b.asLine(pts + 2));
|
| + if (a.asLine(pts)) {
|
| + REPORTER_ASSERT(r, pts[2] == pts[0] && pts[3] == pts[1]);
|
| + }
|
| }
|
|
|
| void TestCase::compare(skiatest::Reporter* r, const TestCase& that,
|
| @@ -1269,6 +1274,8 @@ DEF_TEST(GrShape, reporter) {
|
| test_path_effect_makes_empty_shape(reporter, r);
|
| test_path_effect_fails(reporter, r);
|
| test_make_hairline_path_effect(reporter, r, true);
|
| + GrShape shape(r);
|
| + REPORTER_ASSERT(reporter, !shape.asLine(nullptr));
|
| }
|
|
|
| for (auto rr : { SkRRect::MakeRect(SkRect::MakeWH(10, 10)),
|
| @@ -1295,39 +1302,47 @@ DEF_TEST(GrShape, reporter) {
|
| test_path_effect_makes_empty_shape(reporter, rr);
|
| test_path_effect_fails(reporter, rr);
|
| test_make_hairline_path_effect(reporter, rr, true);
|
| + GrShape shape(rr);
|
| + REPORTER_ASSERT(reporter, !shape.asLine(nullptr));
|
| }
|
|
|
| struct TestPath {
|
| - TestPath(const SkPath& path, bool isRRectFill, bool isRRectStroke, const SkRRect& rrect)
|
| + TestPath(const SkPath& path, bool isRRectFill, bool isRRectStroke, bool isLine, const SkRRect& rrect)
|
| : fPath(path)
|
| , fIsRRectForFill(isRRectFill)
|
| , fIsRRectForStroke(isRRectStroke)
|
| + , fIsLine(isLine)
|
| , fRRect(rrect) {}
|
| SkPath fPath;
|
| bool fIsRRectForFill;
|
| bool fIsRRectForStroke;
|
| + bool fIsLine;
|
| SkRRect fRRect;
|
| };
|
| SkTArray<TestPath> paths;
|
|
|
| SkPath circlePath;
|
| circlePath.addCircle(10, 10, 10);
|
| - paths.emplace_back(circlePath, true, true, SkRRect::MakeOval(SkRect::MakeWH(20,20)));
|
| + paths.emplace_back(circlePath, true, true, false, SkRRect::MakeOval(SkRect::MakeWH(20,20)));
|
|
|
| SkPath rectPath;
|
| rectPath.addRect(SkRect::MakeWH(10, 10));
|
| - paths.emplace_back(rectPath, true, true, SkRRect::MakeRect(SkRect::MakeWH(10, 10)));
|
| + paths.emplace_back(rectPath, true, true, false, SkRRect::MakeRect(SkRect::MakeWH(10, 10)));
|
|
|
| SkPath openRectPath;
|
| openRectPath.moveTo(0, 0);
|
| openRectPath.lineTo(10, 0);
|
| openRectPath.lineTo(10, 10);
|
| openRectPath.lineTo(0, 10);
|
| - paths.emplace_back(openRectPath, true, false, SkRRect::MakeRect(SkRect::MakeWH(10, 10)));
|
| + paths.emplace_back(openRectPath, true, false, false, SkRRect::MakeRect(SkRect::MakeWH(10, 10)));
|
|
|
| SkPath quadPath;
|
| quadPath.quadTo(10, 10, 5, 8);
|
| - paths.emplace_back(quadPath, false, false, SkRRect());
|
| + paths.emplace_back(quadPath, false, false, false, SkRRect());
|
| +
|
| + SkPath linePath;
|
| + linePath.lineTo(10, 10);
|
| + paths.emplace_back(linePath, false, false, true, SkRRect());
|
|
|
| for (auto testPath : paths) {
|
| for (bool inverseFill : {false, true}) {
|
| @@ -1399,6 +1414,8 @@ DEF_TEST(GrShape, reporter) {
|
| strokePathCase.compare(reporter, strokeRRectCase,
|
| TestCase::kAllSame_ComparisonExpecation);
|
| }
|
| + REPORTER_ASSERT(reporter, testPath.fIsLine == fillPathCase.baseShape().asLine(nullptr));
|
| + REPORTER_ASSERT(reporter, testPath.fIsLine == strokePathCase.baseShape().asLine(nullptr));
|
| }
|
|
|
| // Test a volatile empty path.
|
|
|