1aec143824c9be4e4af6e2cb7cce3d2d2268c0b15commit-bot@chromium.org/*
2aec143824c9be4e4af6e2cb7cce3d2d2268c0b15commit-bot@chromium.org * Copyright 2014 Google Inc.
3aec143824c9be4e4af6e2cb7cce3d2d2268c0b15commit-bot@chromium.org *
4aec143824c9be4e4af6e2cb7cce3d2d2268c0b15commit-bot@chromium.org * Use of this source code is governed by a BSD-style license that can be
5aec143824c9be4e4af6e2cb7cce3d2d2268c0b15commit-bot@chromium.org * found in the LICENSE file.
6aec143824c9be4e4af6e2cb7cce3d2d2268c0b15commit-bot@chromium.org */
7aec143824c9be4e4af6e2cb7cce3d2d2268c0b15commit-bot@chromium.org
8aec143824c9be4e4af6e2cb7cce3d2d2268c0b15commit-bot@chromium.org#include "Test.h"
9aec143824c9be4e4af6e2cb7cce3d2d2268c0b15commit-bot@chromium.org
10aec143824c9be4e4af6e2cb7cce3d2d2268c0b15commit-bot@chromium.org#include "SkPathEffect.h"
11aec143824c9be4e4af6e2cb7cce3d2d2268c0b15commit-bot@chromium.org#include "SkDashPathEffect.h"
12aec143824c9be4e4af6e2cb7cce3d2d2268c0b15commit-bot@chromium.org#include "SkCornerPathEffect.h"
13aec143824c9be4e4af6e2cb7cce3d2d2268c0b15commit-bot@chromium.org
14aec143824c9be4e4af6e2cb7cce3d2d2268c0b15commit-bot@chromium.orgDEF_TEST(AsADashTest_noneDash, reporter) {
15aec143824c9be4e4af6e2cb7cce3d2d2268c0b15commit-bot@chromium.org    SkAutoTUnref<SkCornerPathEffect> pe(SkCornerPathEffect::Create(1.0));
16aec143824c9be4e4af6e2cb7cce3d2d2268c0b15commit-bot@chromium.org    SkPathEffect::DashInfo info;
17aec143824c9be4e4af6e2cb7cce3d2d2268c0b15commit-bot@chromium.org
18aec143824c9be4e4af6e2cb7cce3d2d2268c0b15commit-bot@chromium.org    SkPathEffect::DashType dashType = pe->asADash(&info);
19aec143824c9be4e4af6e2cb7cce3d2d2268c0b15commit-bot@chromium.org    REPORTER_ASSERT(reporter, SkPathEffect::kNone_DashType == dashType);
20aec143824c9be4e4af6e2cb7cce3d2d2268c0b15commit-bot@chromium.org}
21aec143824c9be4e4af6e2cb7cce3d2d2268c0b15commit-bot@chromium.org
22aec143824c9be4e4af6e2cb7cce3d2d2268c0b15commit-bot@chromium.orgDEF_TEST(AsADashTest_nullInfo, reporter) {
23aec143824c9be4e4af6e2cb7cce3d2d2268c0b15commit-bot@chromium.org    SkScalar inIntervals[] = { 4.0, 2.0, 1.0, 3.0 };
24aec143824c9be4e4af6e2cb7cce3d2d2268c0b15commit-bot@chromium.org    const SkScalar phase = 2.0;
25aec143824c9be4e4af6e2cb7cce3d2d2268c0b15commit-bot@chromium.org    SkAutoTUnref<SkDashPathEffect> pe(SkDashPathEffect::Create(inIntervals, 4, phase));
26aec143824c9be4e4af6e2cb7cce3d2d2268c0b15commit-bot@chromium.org
27aec143824c9be4e4af6e2cb7cce3d2d2268c0b15commit-bot@chromium.org    SkPathEffect::DashType dashType = pe->asADash(NULL);
28aec143824c9be4e4af6e2cb7cce3d2d2268c0b15commit-bot@chromium.org    REPORTER_ASSERT(reporter, SkPathEffect::kDash_DashType == dashType);
29aec143824c9be4e4af6e2cb7cce3d2d2268c0b15commit-bot@chromium.org}
30aec143824c9be4e4af6e2cb7cce3d2d2268c0b15commit-bot@chromium.org
31aec143824c9be4e4af6e2cb7cce3d2d2268c0b15commit-bot@chromium.orgDEF_TEST(AsADashTest_usingDash, reporter) {
32aec143824c9be4e4af6e2cb7cce3d2d2268c0b15commit-bot@chromium.org    SkScalar inIntervals[] = { 4.0, 2.0, 1.0, 3.0 };
33aec143824c9be4e4af6e2cb7cce3d2d2268c0b15commit-bot@chromium.org    SkScalar totalIntSum = 10.0;
34aec143824c9be4e4af6e2cb7cce3d2d2268c0b15commit-bot@chromium.org    const SkScalar phase = 2.0;
35aec143824c9be4e4af6e2cb7cce3d2d2268c0b15commit-bot@chromium.org
36aec143824c9be4e4af6e2cb7cce3d2d2268c0b15commit-bot@chromium.org    SkAutoTUnref<SkDashPathEffect> pe(SkDashPathEffect::Create(inIntervals, 4, phase));
37aec143824c9be4e4af6e2cb7cce3d2d2268c0b15commit-bot@chromium.org
38aec143824c9be4e4af6e2cb7cce3d2d2268c0b15commit-bot@chromium.org    SkPathEffect::DashInfo info;
39aec143824c9be4e4af6e2cb7cce3d2d2268c0b15commit-bot@chromium.org
40aec143824c9be4e4af6e2cb7cce3d2d2268c0b15commit-bot@chromium.org    SkPathEffect::DashType dashType = pe->asADash(&info);
41aec143824c9be4e4af6e2cb7cce3d2d2268c0b15commit-bot@chromium.org    REPORTER_ASSERT(reporter, SkPathEffect::kDash_DashType == dashType);
42aec143824c9be4e4af6e2cb7cce3d2d2268c0b15commit-bot@chromium.org    REPORTER_ASSERT(reporter, 4 == info.fCount);
43aec143824c9be4e4af6e2cb7cce3d2d2268c0b15commit-bot@chromium.org    REPORTER_ASSERT(reporter, SkScalarMod(phase, totalIntSum) == info.fPhase);
44aec143824c9be4e4af6e2cb7cce3d2d2268c0b15commit-bot@chromium.org
45aec143824c9be4e4af6e2cb7cce3d2d2268c0b15commit-bot@chromium.org    // Since it is a kDash_DashType, allocate space for the intervals and recall asADash
46aec143824c9be4e4af6e2cb7cce3d2d2268c0b15commit-bot@chromium.org    SkAutoTArray<SkScalar> intervals(info.fCount);
47aec143824c9be4e4af6e2cb7cce3d2d2268c0b15commit-bot@chromium.org    info.fIntervals = intervals.get();
48aec143824c9be4e4af6e2cb7cce3d2d2268c0b15commit-bot@chromium.org    pe->asADash(&info);
49aec143824c9be4e4af6e2cb7cce3d2d2268c0b15commit-bot@chromium.org    REPORTER_ASSERT(reporter, inIntervals[0] == info.fIntervals[0]);
50aec143824c9be4e4af6e2cb7cce3d2d2268c0b15commit-bot@chromium.org    REPORTER_ASSERT(reporter, inIntervals[1] == info.fIntervals[1]);
51aec143824c9be4e4af6e2cb7cce3d2d2268c0b15commit-bot@chromium.org    REPORTER_ASSERT(reporter, inIntervals[2] == info.fIntervals[2]);
52aec143824c9be4e4af6e2cb7cce3d2d2268c0b15commit-bot@chromium.org    REPORTER_ASSERT(reporter, inIntervals[3] == info.fIntervals[3]);
53aec143824c9be4e4af6e2cb7cce3d2d2268c0b15commit-bot@chromium.org
54aec143824c9be4e4af6e2cb7cce3d2d2268c0b15commit-bot@chromium.org    // Make sure nothing else has changed on us
55aec143824c9be4e4af6e2cb7cce3d2d2268c0b15commit-bot@chromium.org    REPORTER_ASSERT(reporter, 4 == info.fCount);
56aec143824c9be4e4af6e2cb7cce3d2d2268c0b15commit-bot@chromium.org    REPORTER_ASSERT(reporter, SkScalarMod(phase, totalIntSum) == info.fPhase);
57aec143824c9be4e4af6e2cb7cce3d2d2268c0b15commit-bot@chromium.org}
58