PathMeasureTest.cpp revision 4b413c8bb123e42ca4b9c7bfa6bc2167283cb84c
1ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com 2ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com/* 3ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Copyright 2011 Google Inc. 4ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * 5ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Use of this source code is governed by a BSD-style license that can be 6ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * found in the LICENSE file. 7ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com */ 85e5adfd12cc2cb194db971708cd7f34ff47e10b4reed@android.com#include "Test.h" 95e5adfd12cc2cb194db971708cd7f34ff47e10b4reed@android.com#include "SkPathMeasure.h" 105e5adfd12cc2cb194db971708cd7f34ff47e10b4reed@android.com 1154f0d1b7113cb0dc184e522539aab1030a28a421sugoi@google.comstatic void test_small_segment3() { 12ded44149856373072a8c6d2b2eacb213a1273a6ereed@google.com#ifdef SK_SCALAR_IS_FLOAT 13ded44149856373072a8c6d2b2eacb213a1273a6ereed@google.com SkPath path; 14ded44149856373072a8c6d2b2eacb213a1273a6ereed@google.com const SkPoint pts[] = { 15ded44149856373072a8c6d2b2eacb213a1273a6ereed@google.com { 0, 0 }, 16ded44149856373072a8c6d2b2eacb213a1273a6ereed@google.com { 100000000000.0f, 100000000000.0f }, { 0, 0 }, { 10, 10 }, 17ded44149856373072a8c6d2b2eacb213a1273a6ereed@google.com { 10, 10 }, { 0, 0 }, { 10, 10 } 18ded44149856373072a8c6d2b2eacb213a1273a6ereed@google.com }; 19d6176b0dcacb124539e0cfd051e6d93a9782f020rmistry@google.com 20ded44149856373072a8c6d2b2eacb213a1273a6ereed@google.com path.moveTo(pts[0]); 212fc2359aaa8807606854f44a3f38c836a03977cdbsalomon@google.com for (size_t i = 1; i < SK_ARRAY_COUNT(pts); i += 3) { 22ded44149856373072a8c6d2b2eacb213a1273a6ereed@google.com path.cubicTo(pts[i], pts[i + 1], pts[i + 2]); 23ded44149856373072a8c6d2b2eacb213a1273a6ereed@google.com } 24d6176b0dcacb124539e0cfd051e6d93a9782f020rmistry@google.com 25ded44149856373072a8c6d2b2eacb213a1273a6ereed@google.com SkPathMeasure meas(path, false); 26ded44149856373072a8c6d2b2eacb213a1273a6ereed@google.com meas.getLength(); 27ded44149856373072a8c6d2b2eacb213a1273a6ereed@google.com#endif 28ded44149856373072a8c6d2b2eacb213a1273a6ereed@google.com} 29ded44149856373072a8c6d2b2eacb213a1273a6ereed@google.com 3054f0d1b7113cb0dc184e522539aab1030a28a421sugoi@google.comstatic void test_small_segment2() { 31ded44149856373072a8c6d2b2eacb213a1273a6ereed@google.com#ifdef SK_SCALAR_IS_FLOAT 32ded44149856373072a8c6d2b2eacb213a1273a6ereed@google.com SkPath path; 33ded44149856373072a8c6d2b2eacb213a1273a6ereed@google.com const SkPoint pts[] = { 34ded44149856373072a8c6d2b2eacb213a1273a6ereed@google.com { 0, 0 }, 35d6176b0dcacb124539e0cfd051e6d93a9782f020rmistry@google.com { 100000000000.0f, 100000000000.0f }, { 0, 0 }, 36d6176b0dcacb124539e0cfd051e6d93a9782f020rmistry@google.com { 10, 10 }, { 0, 0 }, 37ded44149856373072a8c6d2b2eacb213a1273a6ereed@google.com }; 38d6176b0dcacb124539e0cfd051e6d93a9782f020rmistry@google.com 39ded44149856373072a8c6d2b2eacb213a1273a6ereed@google.com path.moveTo(pts[0]); 40ded44149856373072a8c6d2b2eacb213a1273a6ereed@google.com for (size_t i = 1; i < SK_ARRAY_COUNT(pts); i += 2) { 41ded44149856373072a8c6d2b2eacb213a1273a6ereed@google.com path.quadTo(pts[i], pts[i + 1]); 42ded44149856373072a8c6d2b2eacb213a1273a6ereed@google.com } 43ded44149856373072a8c6d2b2eacb213a1273a6ereed@google.com SkPathMeasure meas(path, false); 44ded44149856373072a8c6d2b2eacb213a1273a6ereed@google.com meas.getLength(); 45ded44149856373072a8c6d2b2eacb213a1273a6ereed@google.com#endif 46ded44149856373072a8c6d2b2eacb213a1273a6ereed@google.com} 47ded44149856373072a8c6d2b2eacb213a1273a6ereed@google.com 4854f0d1b7113cb0dc184e522539aab1030a28a421sugoi@google.comstatic void test_small_segment() { 49fab1ddd3a8893db58b2ce0afd28ecc73412ee871reed@google.com#ifdef SK_SCALAR_IS_FLOAT 50fab1ddd3a8893db58b2ce0afd28ecc73412ee871reed@google.com SkPath path; 51fab1ddd3a8893db58b2ce0afd28ecc73412ee871reed@google.com const SkPoint pts[] = { 52fab1ddd3a8893db58b2ce0afd28ecc73412ee871reed@google.com { 100000, 100000}, 53fab1ddd3a8893db58b2ce0afd28ecc73412ee871reed@google.com // big jump between these points, makes a big segment 544b413c8bb123e42ca4b9c7bfa6bc2167283cb84ccommit-bot@chromium.org { 1.0005f, 0.9999f }, 55fab1ddd3a8893db58b2ce0afd28ecc73412ee871reed@google.com // tiny (non-zero) jump between these points 56c6ce750c73c6586a5c2e88a0620b04e9569af401robertphillips@google.com { SK_Scalar1, SK_Scalar1 }, 57fab1ddd3a8893db58b2ce0afd28ecc73412ee871reed@google.com }; 58d6176b0dcacb124539e0cfd051e6d93a9782f020rmistry@google.com 59fab1ddd3a8893db58b2ce0afd28ecc73412ee871reed@google.com path.moveTo(pts[0]); 60fab1ddd3a8893db58b2ce0afd28ecc73412ee871reed@google.com for (size_t i = 1; i < SK_ARRAY_COUNT(pts); ++i) { 61fab1ddd3a8893db58b2ce0afd28ecc73412ee871reed@google.com path.lineTo(pts[i]); 62fab1ddd3a8893db58b2ce0afd28ecc73412ee871reed@google.com } 63fab1ddd3a8893db58b2ce0afd28ecc73412ee871reed@google.com SkPathMeasure meas(path, false); 64fab1ddd3a8893db58b2ce0afd28ecc73412ee871reed@google.com 65fab1ddd3a8893db58b2ce0afd28ecc73412ee871reed@google.com /* this would assert (before a fix) because we added a segment with 66fab1ddd3a8893db58b2ce0afd28ecc73412ee871reed@google.com the same length as the prev segment, due to the follow (bad) pattern 67fab1ddd3a8893db58b2ce0afd28ecc73412ee871reed@google.com 68fab1ddd3a8893db58b2ce0afd28ecc73412ee871reed@google.com d = distance(pts[0], pts[1]); 69fab1ddd3a8893db58b2ce0afd28ecc73412ee871reed@google.com distance += d; 70fab1ddd3a8893db58b2ce0afd28ecc73412ee871reed@google.com seg->fDistance = distance; 71ded44149856373072a8c6d2b2eacb213a1273a6ereed@google.com 72fab1ddd3a8893db58b2ce0afd28ecc73412ee871reed@google.com SkASSERT(d > 0); // TRUE 73fab1ddd3a8893db58b2ce0afd28ecc73412ee871reed@google.com SkASSERT(seg->fDistance > prevSeg->fDistance); // FALSE 74fab1ddd3a8893db58b2ce0afd28ecc73412ee871reed@google.com 75fab1ddd3a8893db58b2ce0afd28ecc73412ee871reed@google.com This 2nd assert failes because (distance += d) didn't affect distance 76fab1ddd3a8893db58b2ce0afd28ecc73412ee871reed@google.com because distance >>> d. 77fab1ddd3a8893db58b2ce0afd28ecc73412ee871reed@google.com */ 78fab1ddd3a8893db58b2ce0afd28ecc73412ee871reed@google.com meas.getLength(); 79fab1ddd3a8893db58b2ce0afd28ecc73412ee871reed@google.com#endif 80fab1ddd3a8893db58b2ce0afd28ecc73412ee871reed@google.com} 81fab1ddd3a8893db58b2ce0afd28ecc73412ee871reed@google.com 825e5adfd12cc2cb194db971708cd7f34ff47e10b4reed@android.comstatic void TestPathMeasure(skiatest::Reporter* reporter) { 835e5adfd12cc2cb194db971708cd7f34ff47e10b4reed@android.com SkPath path; 845e5adfd12cc2cb194db971708cd7f34ff47e10b4reed@android.com 855e5adfd12cc2cb194db971708cd7f34ff47e10b4reed@android.com path.moveTo(0, 0); 865e5adfd12cc2cb194db971708cd7f34ff47e10b4reed@android.com path.lineTo(SK_Scalar1, 0); 875e5adfd12cc2cb194db971708cd7f34ff47e10b4reed@android.com path.lineTo(SK_Scalar1, SK_Scalar1); 885e5adfd12cc2cb194db971708cd7f34ff47e10b4reed@android.com path.lineTo(0, SK_Scalar1); 895e5adfd12cc2cb194db971708cd7f34ff47e10b4reed@android.com 905e5adfd12cc2cb194db971708cd7f34ff47e10b4reed@android.com SkPathMeasure meas(path, true); 915e5adfd12cc2cb194db971708cd7f34ff47e10b4reed@android.com SkScalar length = meas.getLength(); 925e5adfd12cc2cb194db971708cd7f34ff47e10b4reed@android.com SkASSERT(length == SK_Scalar1*4); 935e5adfd12cc2cb194db971708cd7f34ff47e10b4reed@android.com 945e5adfd12cc2cb194db971708cd7f34ff47e10b4reed@android.com path.reset(); 955e5adfd12cc2cb194db971708cd7f34ff47e10b4reed@android.com path.moveTo(0, 0); 965e5adfd12cc2cb194db971708cd7f34ff47e10b4reed@android.com path.lineTo(SK_Scalar1*3, SK_Scalar1*4); 975e5adfd12cc2cb194db971708cd7f34ff47e10b4reed@android.com meas.setPath(&path, false); 985e5adfd12cc2cb194db971708cd7f34ff47e10b4reed@android.com length = meas.getLength(); 995e5adfd12cc2cb194db971708cd7f34ff47e10b4reed@android.com REPORTER_ASSERT(reporter, length == SK_Scalar1*5); 1005e5adfd12cc2cb194db971708cd7f34ff47e10b4reed@android.com 1015e5adfd12cc2cb194db971708cd7f34ff47e10b4reed@android.com path.reset(); 1025e5adfd12cc2cb194db971708cd7f34ff47e10b4reed@android.com path.addCircle(0, 0, SK_Scalar1); 1035e5adfd12cc2cb194db971708cd7f34ff47e10b4reed@android.com meas.setPath(&path, true); 1045e5adfd12cc2cb194db971708cd7f34ff47e10b4reed@android.com length = meas.getLength(); 1055e5adfd12cc2cb194db971708cd7f34ff47e10b4reed@android.com// SkDebugf("circle arc-length = %g\n", length); 1065e5adfd12cc2cb194db971708cd7f34ff47e10b4reed@android.com 107510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org // Test the behavior following a close not followed by a move. 108510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org path.reset(); 109510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org path.lineTo(SK_Scalar1, 0); 110510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org path.lineTo(SK_Scalar1, SK_Scalar1); 111510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org path.lineTo(0, SK_Scalar1); 112510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org path.close(); 113510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org path.lineTo(-SK_Scalar1, 0); 114510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org meas.setPath(&path, false); 115510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org length = meas.getLength(); 116510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org REPORTER_ASSERT(reporter, length == SK_Scalar1 * 4); 117510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org meas.nextContour(); 118510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org length = meas.getLength(); 119510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org REPORTER_ASSERT(reporter, length == SK_Scalar1); 120510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org SkPoint position; 121510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org SkVector tangent; 122510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org REPORTER_ASSERT(reporter, meas.getPosTan(SK_ScalarHalf, &position, &tangent)); 123510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org REPORTER_ASSERT(reporter, 1246853e808a464ca75ff1328338d1eb55ff27c4337robertphillips@google.com SkScalarNearlyEqual(position.fX, 1256853e808a464ca75ff1328338d1eb55ff27c4337robertphillips@google.com -SK_ScalarHalf, 1264b413c8bb123e42ca4b9c7bfa6bc2167283cb84ccommit-bot@chromium.org 0.0001f)); 127510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org REPORTER_ASSERT(reporter, position.fY == 0); 128510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org REPORTER_ASSERT(reporter, tangent.fX == -SK_Scalar1); 129510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org REPORTER_ASSERT(reporter, tangent.fY == 0); 130510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org 131510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org // Test degenerate paths 132510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org path.reset(); 133510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org path.moveTo(0, 0); 134510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org path.lineTo(0, 0); 135510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org path.lineTo(SK_Scalar1, 0); 136510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org path.quadTo(SK_Scalar1, 0, SK_Scalar1, 0); 137510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org path.quadTo(SK_Scalar1, SK_Scalar1, SK_Scalar1, SK_Scalar1 * 2); 138510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org path.cubicTo(SK_Scalar1, SK_Scalar1 * 2, 139510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org SK_Scalar1, SK_Scalar1 * 2, 140510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org SK_Scalar1, SK_Scalar1 * 2); 141510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org path.cubicTo(SK_Scalar1*2, SK_Scalar1 * 2, 142510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org SK_Scalar1*3, SK_Scalar1 * 2, 143510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org SK_Scalar1*4, SK_Scalar1 * 2); 144510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org meas.setPath(&path, false); 145510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org length = meas.getLength(); 146510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org REPORTER_ASSERT(reporter, length == SK_Scalar1 * 6); 147510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org REPORTER_ASSERT(reporter, meas.getPosTan(SK_ScalarHalf, &position, &tangent)); 148510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org REPORTER_ASSERT(reporter, 1496853e808a464ca75ff1328338d1eb55ff27c4337robertphillips@google.com SkScalarNearlyEqual(position.fX, 1506853e808a464ca75ff1328338d1eb55ff27c4337robertphillips@google.com SK_ScalarHalf, 1514b413c8bb123e42ca4b9c7bfa6bc2167283cb84ccommit-bot@chromium.org 0.0001f)); 152510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org REPORTER_ASSERT(reporter, position.fY == 0); 153510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org REPORTER_ASSERT(reporter, tangent.fX == SK_Scalar1); 154510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org REPORTER_ASSERT(reporter, tangent.fY == 0); 1554b413c8bb123e42ca4b9c7bfa6bc2167283cb84ccommit-bot@chromium.org REPORTER_ASSERT(reporter, meas.getPosTan(2.5f, &position, &tangent)); 156510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org REPORTER_ASSERT(reporter, 1574b413c8bb123e42ca4b9c7bfa6bc2167283cb84ccommit-bot@chromium.org SkScalarNearlyEqual(position.fX, SK_Scalar1, 0.0001f)); 158510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org REPORTER_ASSERT(reporter, 1594b413c8bb123e42ca4b9c7bfa6bc2167283cb84ccommit-bot@chromium.org SkScalarNearlyEqual(position.fY, 1.5f)); 160510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org REPORTER_ASSERT(reporter, tangent.fX == 0); 161510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org REPORTER_ASSERT(reporter, tangent.fY == SK_Scalar1); 1624b413c8bb123e42ca4b9c7bfa6bc2167283cb84ccommit-bot@chromium.org REPORTER_ASSERT(reporter, meas.getPosTan(4.5f, &position, &tangent)); 163510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org REPORTER_ASSERT(reporter, 164d6176b0dcacb124539e0cfd051e6d93a9782f020rmistry@google.com SkScalarNearlyEqual(position.fX, 1654b413c8bb123e42ca4b9c7bfa6bc2167283cb84ccommit-bot@chromium.org 2.5f, 1664b413c8bb123e42ca4b9c7bfa6bc2167283cb84ccommit-bot@chromium.org 0.0001f)); 167510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org REPORTER_ASSERT(reporter, 168d6176b0dcacb124539e0cfd051e6d93a9782f020rmistry@google.com SkScalarNearlyEqual(position.fY, 1694b413c8bb123e42ca4b9c7bfa6bc2167283cb84ccommit-bot@chromium.org 2.0f, 1704b413c8bb123e42ca4b9c7bfa6bc2167283cb84ccommit-bot@chromium.org 0.0001f)); 171510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org REPORTER_ASSERT(reporter, tangent.fX == SK_Scalar1); 172510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org REPORTER_ASSERT(reporter, tangent.fY == 0); 173510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org 174510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org path.reset(); 175510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org path.moveTo(0, 0); 176510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org path.lineTo(SK_Scalar1, 0); 177510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org path.moveTo(SK_Scalar1, SK_Scalar1); 178510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org path.moveTo(SK_Scalar1 * 2, SK_Scalar1 * 2); 179510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org path.lineTo(SK_Scalar1, SK_Scalar1 * 2); 180510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org meas.setPath(&path, false); 181510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org length = meas.getLength(); 182510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org REPORTER_ASSERT(reporter, length == SK_Scalar1); 183510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org REPORTER_ASSERT(reporter, meas.getPosTan(SK_ScalarHalf, &position, &tangent)); 184510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org REPORTER_ASSERT(reporter, 1856853e808a464ca75ff1328338d1eb55ff27c4337robertphillips@google.com SkScalarNearlyEqual(position.fX, 1866853e808a464ca75ff1328338d1eb55ff27c4337robertphillips@google.com SK_ScalarHalf, 1874b413c8bb123e42ca4b9c7bfa6bc2167283cb84ccommit-bot@chromium.org 0.0001f)); 188510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org REPORTER_ASSERT(reporter, position.fY == 0); 189510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org REPORTER_ASSERT(reporter, tangent.fX == SK_Scalar1); 190510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org REPORTER_ASSERT(reporter, tangent.fY == 0); 191510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org meas.nextContour(); 192510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org length = meas.getLength(); 193510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org REPORTER_ASSERT(reporter, length == SK_Scalar1); 194510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org REPORTER_ASSERT(reporter, meas.getPosTan(SK_ScalarHalf, &position, &tangent)); 195510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org REPORTER_ASSERT(reporter, 196d6176b0dcacb124539e0cfd051e6d93a9782f020rmistry@google.com SkScalarNearlyEqual(position.fX, 1974b413c8bb123e42ca4b9c7bfa6bc2167283cb84ccommit-bot@chromium.org 1.5f, 1984b413c8bb123e42ca4b9c7bfa6bc2167283cb84ccommit-bot@chromium.org 0.0001f)); 199510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org REPORTER_ASSERT(reporter, 2006853e808a464ca75ff1328338d1eb55ff27c4337robertphillips@google.com SkScalarNearlyEqual(position.fY, 2014b413c8bb123e42ca4b9c7bfa6bc2167283cb84ccommit-bot@chromium.org 2.0f, 2024b413c8bb123e42ca4b9c7bfa6bc2167283cb84ccommit-bot@chromium.org 0.0001f)); 203510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org REPORTER_ASSERT(reporter, tangent.fX == -SK_Scalar1); 204510c6b186d7238bf6d14d92cfd856333ab525bb4schenney@chromium.org REPORTER_ASSERT(reporter, tangent.fY == 0); 205fab1ddd3a8893db58b2ce0afd28ecc73412ee871reed@google.com 20654f0d1b7113cb0dc184e522539aab1030a28a421sugoi@google.com test_small_segment(); 20754f0d1b7113cb0dc184e522539aab1030a28a421sugoi@google.com test_small_segment2(); 20854f0d1b7113cb0dc184e522539aab1030a28a421sugoi@google.com test_small_segment3(); 2095e5adfd12cc2cb194db971708cd7f34ff47e10b4reed@android.com} 2105e5adfd12cc2cb194db971708cd7f34ff47e10b4reed@android.com 2115e5adfd12cc2cb194db971708cd7f34ff47e10b4reed@android.com#include "TestClassDef.h" 2125e5adfd12cc2cb194db971708cd7f34ff47e10b4reed@android.comDEFINE_TESTCLASS("PathMeasure", PathMeasureTestClass, TestPathMeasure) 213