107393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com/* 207393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com * Copyright 2012 Google Inc. 307393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com * 407393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com * Use of this source code is governed by a BSD-style license that can be 507393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com * found in the LICENSE file. 607393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com */ 78d0a524a4847bc7e1cc63a93b78922739466c201caryclark@google.com#include "PathOpsTestCommon.h" 807393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#include "SkPathOpsPoint.h" 907393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#include "Test.h" 1007393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com 1107393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.comstatic const SkDPoint tests[] = { 1207393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com {0, 0}, 1307393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com {1, 0}, 1407393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com {0, 1}, 1507393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com {2, 1}, 1607393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com {1, 2}, 1707393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com {1, 1}, 1807393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com {2, 2} 1907393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com}; 2007393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com 21ad65a3e5fb1f94699f183551b828efbcc6a133cecaryclark@google.comstatic const size_t tests_count = SK_ARRAY_COUNT(tests); 2207393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com 2378e7b4e1b928fa69f672be3c743df6d6c3ecbcedtfarina@chromium.orgDEF_TEST(PathOpsDVector, reporter) { 2407393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com for (size_t index = 0; index < tests_count - 1; ++index) { 2507393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com SkDVector v1 = tests[index + 1] - tests[index]; 268d0a524a4847bc7e1cc63a93b78922739466c201caryclark@google.com SkASSERT(ValidVector(v1)); 2707393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com SkDVector v2 = tests[index] - tests[index + 1]; 288d0a524a4847bc7e1cc63a93b78922739466c201caryclark@google.com SkASSERT(ValidVector(v2)); 2907393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com v1 += v2; 3007393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com REPORTER_ASSERT(reporter, v1.fX == 0 && v1.fY == 0); 3107393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com v2 -= v2; 3207393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com REPORTER_ASSERT(reporter, v2.fX == 0 && v2.fY == 0); 3307393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com v1 = tests[index + 1] - tests[index]; 3407393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com v1 /= 2; 3507393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com v1 *= 2; 3607393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com v1 -= tests[index + 1] - tests[index]; 3707393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com REPORTER_ASSERT(reporter, v1.fX == 0 && v1.fY == 0); 3807393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com SkVector sv = v1.asSkVector(); 3907393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com REPORTER_ASSERT(reporter, sv.fX == 0 && sv.fY == 0); 4007393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com v1 = tests[index + 1] - tests[index]; 4107393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com double lenSq = v1.lengthSquared(); 4207393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com double v1Dot = v1.dot(v1); 4307393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com REPORTER_ASSERT(reporter, lenSq == v1Dot); 4407393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com REPORTER_ASSERT(reporter, approximately_equal(sqrt(lenSq), v1.length())); 4507393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com double v1Cross = v1.cross(v1); 4607393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com REPORTER_ASSERT(reporter, v1Cross == 0); 4707393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com } 4807393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com} 49