| Index: tests/PathTest.cpp
|
| diff --git a/tests/PathTest.cpp b/tests/PathTest.cpp
|
| index e698c7cda5fe4c777e1cbb75a064e398d64c8783..4637e9218b8533762850e76cbffc4edd9d178f48 100644
|
| --- a/tests/PathTest.cpp
|
| +++ b/tests/PathTest.cpp
|
| @@ -32,6 +32,56 @@ static SkSurface* new_surface(int w, int h) {
|
| return SkSurface::NewRaster(info);
|
| }
|
|
|
| +static void test_path_close_issue1474(skiatest::Reporter* reporter) {
|
| + // This test checks that r{Line,Quad,Conic,Cubic}To following a close()
|
| + // are relative to the point we close to, not relative to the point we close from.
|
| + SkPath path;
|
| + SkPoint last;
|
| +
|
| + // Test rLineTo().
|
| + path.rLineTo(0, 100);
|
| + path.rLineTo(100, 0);
|
| + path.close(); // Returns us back to 0,0.
|
| + path.rLineTo(50, 50); // This should go to 50,50.
|
| +
|
| + path.getLastPt(&last);
|
| + REPORTER_ASSERT(reporter, 50 == last.fX);
|
| + REPORTER_ASSERT(reporter, 50 == last.fY);
|
| +
|
| + // Test rQuadTo().
|
| + path.rewind();
|
| + path.rLineTo(0, 100);
|
| + path.rLineTo(100, 0);
|
| + path.close();
|
| + path.rQuadTo(50, 50, 75, 75);
|
| +
|
| + path.getLastPt(&last);
|
| + REPORTER_ASSERT(reporter, 75 == last.fX);
|
| + REPORTER_ASSERT(reporter, 75 == last.fY);
|
| +
|
| + // Test rConicTo().
|
| + path.rewind();
|
| + path.rLineTo(0, 100);
|
| + path.rLineTo(100, 0);
|
| + path.close();
|
| + path.rConicTo(50, 50, 85, 85, 2);
|
| +
|
| + path.getLastPt(&last);
|
| + REPORTER_ASSERT(reporter, 85 == last.fX);
|
| + REPORTER_ASSERT(reporter, 85 == last.fY);
|
| +
|
| + // Test rCubicTo().
|
| + path.rewind();
|
| + path.rLineTo(0, 100);
|
| + path.rLineTo(100, 0);
|
| + path.close();
|
| + path.rCubicTo(50, 50, 85, 85, 95, 95);
|
| +
|
| + path.getLastPt(&last);
|
| + REPORTER_ASSERT(reporter, 95 == last.fX);
|
| + REPORTER_ASSERT(reporter, 95 == last.fY);
|
| +}
|
| +
|
| static void test_android_specific_behavior(skiatest::Reporter* reporter) {
|
| #ifdef SK_BUILD_FOR_ANDROID
|
| // Copy constructor should preserve generation ID, but assignment shouldn't.
|
| @@ -2469,6 +2519,7 @@ static void TestPath(skiatest::Reporter* reporter) {
|
| test_bad_cubic_crbug229478();
|
| test_bad_cubic_crbug234190();
|
| test_android_specific_behavior(reporter);
|
| + test_path_close_issue1474(reporter);
|
| }
|
|
|
| #include "TestClassDef.h"
|
|
|