diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/AsADashTest.cpp | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/tests/AsADashTest.cpp b/tests/AsADashTest.cpp new file mode 100644 index 0000000000..47f19717a4 --- /dev/null +++ b/tests/AsADashTest.cpp @@ -0,0 +1,57 @@ +/* + * Copyright 2014 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "Test.h" + +#include "SkPathEffect.h" +#include "SkDashPathEffect.h" +#include "SkCornerPathEffect.h" + +DEF_TEST(AsADashTest_noneDash, reporter) { + SkAutoTUnref<SkCornerPathEffect> pe(SkCornerPathEffect::Create(1.0)); + SkPathEffect::DashInfo info; + + SkPathEffect::DashType dashType = pe->asADash(&info); + REPORTER_ASSERT(reporter, SkPathEffect::kNone_DashType == dashType); +} + +DEF_TEST(AsADashTest_nullInfo, reporter) { + SkScalar inIntervals[] = { 4.0, 2.0, 1.0, 3.0 }; + const SkScalar phase = 2.0; + SkAutoTUnref<SkDashPathEffect> pe(SkDashPathEffect::Create(inIntervals, 4, phase)); + + SkPathEffect::DashType dashType = pe->asADash(NULL); + REPORTER_ASSERT(reporter, SkPathEffect::kDash_DashType == dashType); +} + +DEF_TEST(AsADashTest_usingDash, reporter) { + SkScalar inIntervals[] = { 4.0, 2.0, 1.0, 3.0 }; + SkScalar totalIntSum = 10.0; + const SkScalar phase = 2.0; + + SkAutoTUnref<SkDashPathEffect> pe(SkDashPathEffect::Create(inIntervals, 4, phase)); + + SkPathEffect::DashInfo info; + + SkPathEffect::DashType dashType = pe->asADash(&info); + REPORTER_ASSERT(reporter, SkPathEffect::kDash_DashType == dashType); + REPORTER_ASSERT(reporter, 4 == info.fCount); + REPORTER_ASSERT(reporter, SkScalarMod(phase, totalIntSum) == info.fPhase); + + // Since it is a kDash_DashType, allocate space for the intervals and recall asADash + SkAutoTArray<SkScalar> intervals(info.fCount); + info.fIntervals = intervals.get(); + pe->asADash(&info); + REPORTER_ASSERT(reporter, inIntervals[0] == info.fIntervals[0]); + REPORTER_ASSERT(reporter, inIntervals[1] == info.fIntervals[1]); + REPORTER_ASSERT(reporter, inIntervals[2] == info.fIntervals[2]); + REPORTER_ASSERT(reporter, inIntervals[3] == info.fIntervals[3]); + + // Make sure nothing else has changed on us + REPORTER_ASSERT(reporter, 4 == info.fCount); + REPORTER_ASSERT(reporter, SkScalarMod(phase, totalIntSum) == info.fPhase); +} |