19e49fb63d355446b91d20ff78ad78b297e89a50dcaryclark@google.com/* 29e49fb63d355446b91d20ff78ad78b297e89a50dcaryclark@google.com * Copyright 2012 Google Inc. 39e49fb63d355446b91d20ff78ad78b297e89a50dcaryclark@google.com * 49e49fb63d355446b91d20ff78ad78b297e89a50dcaryclark@google.com * Use of this source code is governed by a BSD-style license that can be 59e49fb63d355446b91d20ff78ad78b297e89a50dcaryclark@google.com * found in the LICENSE file. 69e49fb63d355446b91d20ff78ad78b297e89a50dcaryclark@google.com */ 7c682590538a27d73489bc91c098e000fdfb07ccfcaryclark@google.com#include "CurveIntersection.h" 827accef223a27fba437f5e825d99edbae20a045bcaryclark@google.com#include "Intersection_Tests.h" 9639df891487e40925a4f8d9a34fd3dc0c18b40a7caryclark@google.com#include "IntersectionUtilities.h" 10639df891487e40925a4f8d9a34fd3dc0c18b40a7caryclark@google.com 11639df891487e40925a4f8d9a34fd3dc0c18b40a7caryclark@google.comstatic void assert_that(int x, int y, const char* s) { 12639df891487e40925a4f8d9a34fd3dc0c18b40a7caryclark@google.com if (x == y) { 13639df891487e40925a4f8d9a34fd3dc0c18b40a7caryclark@google.com return; 14639df891487e40925a4f8d9a34fd3dc0c18b40a7caryclark@google.com } 15aa35831d1d0e4c798a63fe772430adc4f3a038cdcaryclark@google.com SkDebugf("result=%d expected=%d %s\n", x, y, s); 16639df891487e40925a4f8d9a34fd3dc0c18b40a7caryclark@google.com} 17639df891487e40925a4f8d9a34fd3dc0c18b40a7caryclark@google.com 18639df891487e40925a4f8d9a34fd3dc0c18b40a7caryclark@google.comstatic void side_test() { 19639df891487e40925a4f8d9a34fd3dc0c18b40a7caryclark@google.com assert_that(side(-1), 0, "side(-1) != 0"); 20639df891487e40925a4f8d9a34fd3dc0c18b40a7caryclark@google.com assert_that(side(0), 1, "side(0) != 1"); 21639df891487e40925a4f8d9a34fd3dc0c18b40a7caryclark@google.com assert_that(side(1), 2, "side(1) != 2"); 22639df891487e40925a4f8d9a34fd3dc0c18b40a7caryclark@google.com} 23639df891487e40925a4f8d9a34fd3dc0c18b40a7caryclark@google.com 24639df891487e40925a4f8d9a34fd3dc0c18b40a7caryclark@google.comstatic void sideBit_test() { 25639df891487e40925a4f8d9a34fd3dc0c18b40a7caryclark@google.com assert_that(sideBit(-1), 1, "sideBit(-1) != 1"); 26639df891487e40925a4f8d9a34fd3dc0c18b40a7caryclark@google.com assert_that(sideBit(0), 2, "sideBit(0) != 2"); 27639df891487e40925a4f8d9a34fd3dc0c18b40a7caryclark@google.com assert_that(sideBit(1), 4, "sideBit(1) != 4"); 28639df891487e40925a4f8d9a34fd3dc0c18b40a7caryclark@google.com} 29639df891487e40925a4f8d9a34fd3dc0c18b40a7caryclark@google.com 30639df891487e40925a4f8d9a34fd3dc0c18b40a7caryclark@google.comstatic void other_two_test() { 31639df891487e40925a4f8d9a34fd3dc0c18b40a7caryclark@google.com for (int x = 0; x < 4; ++x) { 32639df891487e40925a4f8d9a34fd3dc0c18b40a7caryclark@google.com for (int y = 0; y < 4; ++y) { 33639df891487e40925a4f8d9a34fd3dc0c18b40a7caryclark@google.com if (x == y) { 34639df891487e40925a4f8d9a34fd3dc0c18b40a7caryclark@google.com continue; 35639df891487e40925a4f8d9a34fd3dc0c18b40a7caryclark@google.com } 36639df891487e40925a4f8d9a34fd3dc0c18b40a7caryclark@google.com int mask = other_two(x, y); 37639df891487e40925a4f8d9a34fd3dc0c18b40a7caryclark@google.com int all = 1 << x; 38639df891487e40925a4f8d9a34fd3dc0c18b40a7caryclark@google.com all |= 1 << y; 39639df891487e40925a4f8d9a34fd3dc0c18b40a7caryclark@google.com all |= 1 << (x ^ mask); 40639df891487e40925a4f8d9a34fd3dc0c18b40a7caryclark@google.com all |= 1 << (y ^ mask); 41639df891487e40925a4f8d9a34fd3dc0c18b40a7caryclark@google.com if (all == 0x0F) { 42639df891487e40925a4f8d9a34fd3dc0c18b40a7caryclark@google.com continue; 43639df891487e40925a4f8d9a34fd3dc0c18b40a7caryclark@google.com } 44aa35831d1d0e4c798a63fe772430adc4f3a038cdcaryclark@google.com SkDebugf("[%d,%d] other_two failed mask=%d [%d,%d]\n", 45639df891487e40925a4f8d9a34fd3dc0c18b40a7caryclark@google.com x, y, mask, x ^ mask, y ^ mask); 46639df891487e40925a4f8d9a34fd3dc0c18b40a7caryclark@google.com } 47639df891487e40925a4f8d9a34fd3dc0c18b40a7caryclark@google.com } 48639df891487e40925a4f8d9a34fd3dc0c18b40a7caryclark@google.com} 49639df891487e40925a4f8d9a34fd3dc0c18b40a7caryclark@google.com 50639df891487e40925a4f8d9a34fd3dc0c18b40a7caryclark@google.comvoid Inline_Tests() { 51639df891487e40925a4f8d9a34fd3dc0c18b40a7caryclark@google.com side_test(); 52639df891487e40925a4f8d9a34fd3dc0c18b40a7caryclark@google.com sideBit_test(); 53639df891487e40925a4f8d9a34fd3dc0c18b40a7caryclark@google.com other_two_test(); 54639df891487e40925a4f8d9a34fd3dc0c18b40a7caryclark@google.com} 55