diff options
author | reed <reed@chromium.org> | 2015-03-19 10:18:47 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-03-19 10:18:47 -0700 |
commit | 65cb2cd2f7ad4146f055810b8bd77bff03a4e76e (patch) | |
tree | 25634a85ad23f0010314b65ef31a5826a7f5ec54 /tests/GeometryTest.cpp | |
parent | e053ca4380713a5b9e6a31119a1bdd6d529208aa (diff) |
alt SkEvalQuadAt that returns its answer, using Sk2f
BUG=skia:
Review URL: https://codereview.chromium.org/1011493003
Diffstat (limited to 'tests/GeometryTest.cpp')
-rw-r--r-- | tests/GeometryTest.cpp | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/tests/GeometryTest.cpp b/tests/GeometryTest.cpp index 5151b70805..9be6000a0e 100644 --- a/tests/GeometryTest.cpp +++ b/tests/GeometryTest.cpp @@ -7,6 +7,7 @@ #include "SkGeometry.h" #include "Test.h" +#include "SkRandom.h" static bool nearly_equal(const SkPoint& a, const SkPoint& b) { return SkScalarNearlyEqual(a.fX, b.fX) && SkScalarNearlyEqual(a.fY, b.fY); @@ -33,6 +34,29 @@ static void testChopCubic(skiatest::Reporter* reporter) { } } +static void test_evalquadat(skiatest::Reporter* reporter) { + SkRandom rand; + for (int i = 0; i < 1000; ++i) { + SkPoint pts[3]; + for (int j = 0; j < 3; ++j) { + pts[j].set(rand.nextSScalar1() * 100, rand.nextSScalar1() * 100); + } + SkScalar t = 0; + const SkScalar dt = SK_Scalar1 / 128; + for (int j = 0; j < 128; ++j) { + SkPoint r0; + SkEvalQuadAt(pts, t, &r0); + SkPoint r1 = SkEvalQuadAt(pts, t); + bool eq = SkScalarNearlyEqual(r0.fX, r1.fX) && SkScalarNearlyEqual(r0.fY, r1.fY); + if (!eq) { + SkDebugf("[%d %g] p0 [%10.8f %10.8f] p1 [%10.8f %10.8f]\n", i, t, r0.fX, r0.fY, r1.fX, r1.fY); + REPORTER_ASSERT(reporter, eq); + } + t += dt; + } + } +} + DEF_TEST(Geometry, reporter) { SkPoint pts[3], dst[5]; @@ -58,4 +82,5 @@ DEF_TEST(Geometry, reporter) { } testChopCubic(reporter); + test_evalquadat(reporter); } |