From 510c6b186d7238bf6d14d92cfd856333ab525bb4 Mon Sep 17 00:00:00 2001 From: "schenney@chromium.org" Date: Thu, 12 Jan 2012 20:04:06 +0000 Subject: 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 --- tests/PathMeasureTest.cpp | 87 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) (limited to 'tests/PathMeasureTest.cpp') 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" -- cgit v1.2.3