diff options
Diffstat (limited to 'tests/PathOpsDTriangleTest.cpp')
-rw-r--r-- | tests/PathOpsDTriangleTest.cpp | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/tests/PathOpsDTriangleTest.cpp b/tests/PathOpsDTriangleTest.cpp new file mode 100644 index 0000000000..b5e2d414a7 --- /dev/null +++ b/tests/PathOpsDTriangleTest.cpp @@ -0,0 +1,70 @@ +/* + * Copyright 2012 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ +#include "PathOpsTestCommon.h" +#include "SkPathOpsTriangle.h" +#include "Test.h" + +static const SkDTriangle tests[] = { + {{{2, 0}, {3, 1}, {2, 2}}}, + {{{3, 1}, {2, 2}, {1, 1}}}, + {{{3, 0}, {2, 1}, {3, 2}}}, +}; + +static const SkDPoint inPoint[] = { + {2.5, 1}, + {2, 1.5}, + {2.5, 1}, +}; + +static const SkDPoint outPoint[] = { + {3, 0}, + {2.5, 2}, + {2.5, 2}, +}; + +static const size_t tests_count = SK_ARRAY_COUNT(tests); + +DEF_TEST(PathOpsTriangleUtilities, reporter) { + for (size_t index = 0; index < tests_count; ++index) { + const SkDTriangle& triangle = tests[index]; + SkASSERT(ValidTriangle(triangle)); + bool result = triangle.contains(inPoint[index]); + if (!result) { + SkDebugf("%s [%d] expected point in triangle\n", __FUNCTION__, index); + REPORTER_ASSERT(reporter, 0); + } + result = triangle.contains(outPoint[index]); + if (result) { + SkDebugf("%s [%d] expected point outside triangle\n", __FUNCTION__, index); + REPORTER_ASSERT(reporter, 0); + } + } +} + +static const SkDTriangle oneOff[] = { + {{{271.03291625750461, 5.0402503630087025e-05}, {275.21652430019037, 3.6997300650817753}, + {279.25839233398438, 7.7416000366210938}}}, + + {{{271.03291625750461, 5.0402503617874572e-05}, {275.21652430019037, 3.6997300650817877}, + {279.25839233398438, 7.7416000366210938}}} +}; + +static const size_t oneOff_count = SK_ARRAY_COUNT(oneOff); + +DEF_TEST(PathOpsTriangleOneOff, reporter) { + for (size_t index = 0; index < oneOff_count; ++index) { + const SkDTriangle& triangle = oneOff[index]; + SkASSERT(ValidTriangle(triangle)); + for (int inner = 0; inner < 3; ++inner) { + bool result = triangle.contains(triangle.fPts[inner]); + if (result) { + SkDebugf("%s [%d][%d] point on triangle is not in\n", __FUNCTION__, index, inner); + REPORTER_ASSERT(reporter, 0); + } + } + } +} |