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