blob: 6ee05847e5d262414f75c29f65e4eca8da03d8fc [file] [log] [blame]
caryclark@google.com07393ca2013-04-08 11:47:37 +00001/*
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 */
caryclark@google.com8d0a5242013-07-16 16:11:16 +00007#include "PathOpsTestCommon.h"
caryclark@google.com07393ca2013-04-08 11:47:37 +00008#include "SkPathOpsTriangle.h"
9#include "Test.h"
10
11static const SkDTriangle tests[] = {
12 {{{2, 0}, {3, 1}, {2, 2}}},
13 {{{3, 1}, {2, 2}, {1, 1}}},
14 {{{3, 0}, {2, 1}, {3, 2}}},
15};
16
17static const SkDPoint inPoint[] = {
18 {2.5, 1},
19 {2, 1.5},
20 {2.5, 1},
21};
22
23static const SkDPoint outPoint[] = {
24 {3, 0},
25 {2.5, 2},
26 {2.5, 2},
27};
28
caryclark@google.comad65a3e2013-04-15 19:13:59 +000029static const size_t tests_count = SK_ARRAY_COUNT(tests);
caryclark@google.com07393ca2013-04-08 11:47:37 +000030
caryclark@google.comad65a3e2013-04-15 19:13:59 +000031static void PathOpsTriangleUtilitiesTest(skiatest::Reporter* reporter) {
caryclark@google.com07393ca2013-04-08 11:47:37 +000032 for (size_t index = 0; index < tests_count; ++index) {
33 const SkDTriangle& triangle = tests[index];
caryclark@google.com8d0a5242013-07-16 16:11:16 +000034 SkASSERT(ValidTriangle(triangle));
caryclark@google.com07393ca2013-04-08 11:47:37 +000035 bool result = triangle.contains(inPoint[index]);
36 if (!result) {
37 SkDebugf("%s [%d] expected point in triangle\n", __FUNCTION__, index);
38 REPORTER_ASSERT(reporter, 0);
39 }
40 result = triangle.contains(outPoint[index]);
41 if (result) {
42 SkDebugf("%s [%d] expected point outside triangle\n", __FUNCTION__, index);
43 REPORTER_ASSERT(reporter, 0);
44 }
45 }
46}
47
skia.committer@gmail.comf54ad6f2013-11-02 07:02:02 +000048static const SkDTriangle oneOff[] = {
49 {{{271.03291625750461, 5.0402503630087025e-05}, {275.21652430019037, 3.6997300650817753},
50 {279.25839233398438, 7.7416000366210938}}},
51
52 {{{271.03291625750461, 5.0402503617874572e-05}, {275.21652430019037, 3.6997300650817877},
53 {279.25839233398438, 7.7416000366210938}}}
54};
55
56static const size_t oneOff_count = SK_ARRAY_COUNT(oneOff);
57
58static void PathOpsTriangleOneOffTest(skiatest::Reporter* reporter) {
59 for (size_t index = 0; index < oneOff_count; ++index) {
60 const SkDTriangle& triangle = oneOff[index];
61 SkASSERT(ValidTriangle(triangle));
62 for (int inner = 0; inner < 3; ++inner) {
63 bool result = triangle.contains(triangle.fPts[inner]);
64 if (result) {
65 SkDebugf("%s [%d][%d] point on triangle is not in\n", __FUNCTION__, index, inner);
66 REPORTER_ASSERT(reporter, 0);
67 }
68 }
69 }
70}
71
72#include "TestClassDef.h"
73DEFINE_TESTCLASS_SHORT(PathOpsTriangleUtilitiesTest)
74
75DEFINE_TESTCLASS_SHORT(PathOpsTriangleOneOffTest)