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