1effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch/*
2effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch * Copyright 2012 Google Inc.
3effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch *
4effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch * Use of this source code is governed by a BSD-style license that can be
5effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch * found in the LICENSE file.
6effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch */
7effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "EdgeWalker_Test.h"
8effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "Intersection_Tests.h"
9effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "SkBitmap.h"
10effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
11effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochstatic SkBitmap bitmap;
12effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
13effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochstatic void testSimplifyQuad1() {
14    SkPath path, out;
15    path.moveTo(0, 0);
16    path.lineTo(1, 0);
17    path.lineTo(3, 2);
18    path.lineTo(3, 3);
19    path.close();
20    path.moveTo(1, 0);
21    path.lineTo(1, 3);
22    path.lineTo(1, 3);
23    path.lineTo(1, 3);
24    path.close();
25    testSimplify(path, true, out, bitmap);
26}
27
28static void testSimplifyQuad2() {
29    SkPath path, out;
30    path.moveTo(0, 0);
31    path.lineTo(0, 0);
32    path.lineTo(0, 0);
33    path.lineTo(0, 2);
34    path.close();
35    path.moveTo(0, 1);
36    path.lineTo(0, 1);
37    path.lineTo(1, 1);
38    path.lineTo(0, 2);
39    path.close();
40    testSimplify(path, true, out, bitmap);
41}
42
43static void testSimplifyQuad3() {
44    SkPath path, out;
45    path.moveTo(0, 0);
46    path.lineTo(0, 0);
47    path.lineTo(1, 0);
48    path.lineTo(1, 2);
49    path.close();
50    path.moveTo(0, 1);
51    path.lineTo(1, 1);
52    path.lineTo(2, 1);
53    path.lineTo(0, 2);
54    path.close();
55    testSimplify(path, true, out, bitmap);
56}
57
58static void testSimplifyQuad4() {
59    SkPath path, out;
60    path.moveTo(0, 0);
61    path.lineTo(0, 0);
62    path.lineTo(1, 0);
63    path.lineTo(2, 2);
64    path.close();
65    path.moveTo(0, 0);
66    path.lineTo(2, 1);
67    path.lineTo(3, 1);
68    path.lineTo(3, 3);
69    path.close();
70    testSimplify(path, true, out, bitmap);
71}
72
73static void testSimplifyQuad5() {
74    SkPath path, out;
75    path.moveTo(0, 0);
76    path.lineTo(0, 0);
77    path.lineTo(1, 0);
78    path.lineTo(3, 2);
79    path.close();
80    path.moveTo(0, 1);
81    path.lineTo(1, 1);
82    path.lineTo(2, 1);
83    path.lineTo(0, 2);
84    path.close();
85    testSimplify(path, true, out, bitmap);
86}
87
88static void testSimplifyQuad6() {
89    SkPath path, out;
90    path.moveTo(0, 0);
91    path.lineTo(1, 0);
92    path.lineTo(1, 1);
93    path.lineTo(3, 3);
94    path.close();
95    path.moveTo(1, 1);
96    path.lineTo(1, 1);
97    path.lineTo(1, 1);
98    path.lineTo(2, 2);
99    path.close();
100    testSimplify(path, true, out, bitmap);
101}
102
103static void (*simplifyTests[])() = {
104    testSimplifyQuad6,
105    testSimplifyQuad5,
106    testSimplifyQuad4,
107    testSimplifyQuad3,
108    testSimplifyQuad2,
109    testSimplifyQuad1,
110};
111
112static size_t simplifyTestsCount = sizeof(simplifyTests) / sizeof(simplifyTests[0]);
113
114static void (*firstTest)() = 0;
115
116void SimplifyQuadralateralPaths_Test() {
117    size_t index = 0;
118    if (firstTest) {
119        while (index < simplifyTestsCount && simplifyTests[index] != firstTest) {
120            ++index;
121        }
122    }
123    for ( ; index < simplifyTestsCount; ++index) {
124        (*simplifyTests[index])();
125    }
126}
127