diff options
author | schenney@chromium.org <schenney@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2012-01-12 20:04:06 +0000 |
---|---|---|
committer | schenney@chromium.org <schenney@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2012-01-12 20:04:06 +0000 |
commit | 510c6b186d7238bf6d14d92cfd856333ab525bb4 (patch) | |
tree | e48e680274a7edc8973b844604a5e8156e590598 | |
parent | e50f7361b4ee9fc8968e0e8a511379b3bf5f5123 (diff) |
Adding new SkPathMeasure tests, defined out for now as they fail.
Review URL: http://codereview.appspot.com/5529078
git-svn-id: http://skia.googlecode.com/svn/trunk@3029 2bbb7eff-a529-9590-31e7-b0007b416f81
-rw-r--r-- | tests/PathMeasureTest.cpp | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/tests/PathMeasureTest.cpp b/tests/PathMeasureTest.cpp index d454e37c2a..6cc64fe394 100644 --- a/tests/PathMeasureTest.cpp +++ b/tests/PathMeasureTest.cpp @@ -43,6 +43,93 @@ static void TestPathMeasure(skiatest::Reporter* reporter) { d, p.fX, p.fY, v.fX, v.fY); #endif } + +#if 0 + // Test the behavior following a close not followed by a move. + path.reset(); + path.lineTo(SK_Scalar1, 0); + path.lineTo(SK_Scalar1, SK_Scalar1); + path.lineTo(0, SK_Scalar1); + path.close(); + path.lineTo(-SK_Scalar1, 0); + meas.setPath(&path, false); + length = meas.getLength(); + REPORTER_ASSERT(reporter, length == SK_Scalar1 * 4); + meas.nextContour(); + length = meas.getLength(); + REPORTER_ASSERT(reporter, length == SK_Scalar1); + SkPoint position; + SkVector tangent; + REPORTER_ASSERT(reporter, meas.getPosTan(SK_ScalarHalf, &position, &tangent)); + REPORTER_ASSERT(reporter, + SkScalarNearlyEqual(position.fX, -SK_ScalarHalf, SK_Scalar1 * 0.0001)); + REPORTER_ASSERT(reporter, position.fY == 0); + REPORTER_ASSERT(reporter, tangent.fX == -SK_Scalar1); + REPORTER_ASSERT(reporter, tangent.fY == 0); + + // Test degenerate paths + path.reset(); + path.moveTo(0, 0); + path.lineTo(0, 0); + path.lineTo(SK_Scalar1, 0); + path.quadTo(SK_Scalar1, 0, SK_Scalar1, 0); + path.quadTo(SK_Scalar1, SK_Scalar1, SK_Scalar1, SK_Scalar1 * 2); + path.cubicTo(SK_Scalar1, SK_Scalar1 * 2, + SK_Scalar1, SK_Scalar1 * 2, + SK_Scalar1, SK_Scalar1 * 2); + path.cubicTo(SK_Scalar1*2, SK_Scalar1 * 2, + SK_Scalar1*3, SK_Scalar1 * 2, + SK_Scalar1*4, SK_Scalar1 * 2); + meas.setPath(&path, false); + length = meas.getLength(); + REPORTER_ASSERT(reporter, length == SK_Scalar1 * 6); + REPORTER_ASSERT(reporter, meas.getPosTan(SK_ScalarHalf, &position, &tangent)); + REPORTER_ASSERT(reporter, + SkScalarNearlyEqual(position.fX, SK_ScalarHalf, SK_Scalar1 * 0.0001)); + REPORTER_ASSERT(reporter, position.fY == 0); + REPORTER_ASSERT(reporter, tangent.fX == SK_Scalar1); + REPORTER_ASSERT(reporter, tangent.fY == 0); + REPORTER_ASSERT(reporter, meas.getPosTan(SK_Scalar1 * 2.5f, &position, &tangent)); + REPORTER_ASSERT(reporter, + SkScalarNearlyEqual(position.fX, SK_Scalar1, SK_Scalar1 * 0.0001)); + REPORTER_ASSERT(reporter, + SkScalarNearlyEqual(position.fY, SK_Scalar1 * 1.5f)); + REPORTER_ASSERT(reporter, tangent.fX == 0); + REPORTER_ASSERT(reporter, tangent.fY == SK_Scalar1); + REPORTER_ASSERT(reporter, meas.getPosTan(SK_Scalar1 * 4.5f, &position, &tangent)); + REPORTER_ASSERT(reporter, + SkScalarNearlyEqual(position.fX, SK_Scalar1 * 2.5f, SK_Scalar1 * 0.0001)); + REPORTER_ASSERT(reporter, + SkScalarNearlyEqual(position.fY, SK_Scalar1 * 2.0f, SK_Scalar1 * 0.0001)); + REPORTER_ASSERT(reporter, tangent.fX == SK_Scalar1); + REPORTER_ASSERT(reporter, tangent.fY == 0); + + path.reset(); + path.moveTo(0, 0); + path.lineTo(SK_Scalar1, 0); + path.moveTo(SK_Scalar1, SK_Scalar1); + path.moveTo(SK_Scalar1 * 2, SK_Scalar1 * 2); + path.lineTo(SK_Scalar1, SK_Scalar1 * 2); + meas.setPath(&path, false); + length = meas.getLength(); + REPORTER_ASSERT(reporter, length == SK_Scalar1); + REPORTER_ASSERT(reporter, meas.getPosTan(SK_ScalarHalf, &position, &tangent)); + REPORTER_ASSERT(reporter, + SkScalarNearlyEqual(position.fX, SK_ScalarHalf, SK_Scalar1 * 0.0001)); + REPORTER_ASSERT(reporter, position.fY == 0); + REPORTER_ASSERT(reporter, tangent.fX == SK_Scalar1); + REPORTER_ASSERT(reporter, tangent.fY == 0); + meas.nextContour(); + length = meas.getLength(); + REPORTER_ASSERT(reporter, length == SK_Scalar1); + REPORTER_ASSERT(reporter, meas.getPosTan(SK_ScalarHalf, &position, &tangent)); + REPORTER_ASSERT(reporter, + SkScalarNearlyEqual(position.fX, SK_Scalar1 * 1.5f, SK_Scalar1 * 0.0001)); + REPORTER_ASSERT(reporter, + SkScalarNearlyEqual(position.fY, SK_Scalar1 * 2.0f, SK_Scalar1 * 0.0001)); + REPORTER_ASSERT(reporter, tangent.fX == -SK_Scalar1); + REPORTER_ASSERT(reporter, tangent.fY == 0); +#endif } #include "TestClassDef.h" |