1fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot/*
2fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Copyright 2012 Google Inc.
3fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot *
4fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Use of this source code is governed by a BSD-style license that can be
5fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * found in the LICENSE file.
6fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot */
7fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "PathOpsTestCommon.h"
8fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkPathOpsPoint.h"
9fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "Test.h"
10fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
11fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotstatic const SkDPoint tests[] = {
12fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    {0, 0},
13fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    {1, 0},
14fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    {0, 1},
15fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    {2, 1},
16fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    {1, 2},
17fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    {1, 1},
18fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    {2, 2}
19fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot};
20fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
21fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotstatic const size_t tests_count = SK_ARRAY_COUNT(tests);
22fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
23fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team RobotDEF_TEST(PathOpsDPoint, reporter) {
24fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    for (size_t index = 0; index < tests_count; ++index) {
25fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot        const SkDPoint& pt = tests[index];
26fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot        SkASSERT(ValidPoint(pt));
27fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot        SkDPoint p = pt;
28fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot        REPORTER_ASSERT(reporter, p == pt);
29fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot        REPORTER_ASSERT(reporter, !(pt != pt));
30fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot        SkDVector v = p - pt;
31fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot        p += v;
32fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot        REPORTER_ASSERT(reporter, p == pt);
33fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot        p -= v;
34fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot        REPORTER_ASSERT(reporter, p == pt);
35fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot        REPORTER_ASSERT(reporter, p.approximatelyEqual(pt));
36fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot        SkPoint sPt = pt.asSkPoint();
37fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot        p.set(sPt);
38fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot        REPORTER_ASSERT(reporter, p == pt);
39fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot        REPORTER_ASSERT(reporter, p.approximatelyEqual(sPt));
40fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot        REPORTER_ASSERT(reporter, p.roughlyEqual(pt));
41fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot        p.fX = p.fY = 0;
42fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot        REPORTER_ASSERT(reporter, p.fX == 0 && p.fY == 0);
43fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot        REPORTER_ASSERT(reporter, p.approximatelyZero());
44fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot        REPORTER_ASSERT(reporter, pt.distanceSquared(p) == pt.fX * pt.fX + pt.fY * pt.fY);
45fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot        REPORTER_ASSERT(reporter, approximately_equal(pt.distance(p),
46fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot                sqrt(pt.fX * pt.fX + pt.fY * pt.fY)));
47fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    }
48fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot}
49