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 */
7a5764233aa6b207c4169fff7fccae567a160a0fdcaryclark@google.com#include "EdgeWalker_Test.h"
8a5764233aa6b207c4169fff7fccae567a160a0fdcaryclark@google.com#include "Intersection_Tests.h"
9198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.com#include "SkBitmap.h"
10198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.com
11198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.comstatic SkBitmap bitmap;
12a5764233aa6b207c4169fff7fccae567a160a0fdcaryclark@google.com
13a5764233aa6b207c4169fff7fccae567a160a0fdcaryclark@google.comstatic void testSimplifyQuadratic1() {
14a5764233aa6b207c4169fff7fccae567a160a0fdcaryclark@google.com    SkPath path, out;
15a5764233aa6b207c4169fff7fccae567a160a0fdcaryclark@google.com    path.moveTo(0, 0);
16a5764233aa6b207c4169fff7fccae567a160a0fdcaryclark@google.com    path.quadTo(1, 0, 1, 1);
17a5764233aa6b207c4169fff7fccae567a160a0fdcaryclark@google.com    path.close();
18a5764233aa6b207c4169fff7fccae567a160a0fdcaryclark@google.com    path.moveTo(1, 0);
19a5764233aa6b207c4169fff7fccae567a160a0fdcaryclark@google.com    path.quadTo(0, 0, 0, 1);
20a5764233aa6b207c4169fff7fccae567a160a0fdcaryclark@google.com    path.close();
21198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.com    testSimplify(path, true, out, bitmap);
22a5764233aa6b207c4169fff7fccae567a160a0fdcaryclark@google.com}
23a5764233aa6b207c4169fff7fccae567a160a0fdcaryclark@google.com
24a5764233aa6b207c4169fff7fccae567a160a0fdcaryclark@google.comstatic void testSimplifyQuadratic2() {
25a5764233aa6b207c4169fff7fccae567a160a0fdcaryclark@google.com    SkPath path, out;
26a5764233aa6b207c4169fff7fccae567a160a0fdcaryclark@google.com    path.moveTo(0, 0);
27a5764233aa6b207c4169fff7fccae567a160a0fdcaryclark@google.com    path.quadTo(20, 0, 20, 20);
28a5764233aa6b207c4169fff7fccae567a160a0fdcaryclark@google.com    path.close();
29a5764233aa6b207c4169fff7fccae567a160a0fdcaryclark@google.com    path.moveTo(20, 0);
30a5764233aa6b207c4169fff7fccae567a160a0fdcaryclark@google.com    path.quadTo(0, 0, 0, 20);
31a5764233aa6b207c4169fff7fccae567a160a0fdcaryclark@google.com    path.close();
32198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.com    testSimplify(path, true, out, bitmap);
33a5764233aa6b207c4169fff7fccae567a160a0fdcaryclark@google.com}
34a5764233aa6b207c4169fff7fccae567a160a0fdcaryclark@google.com
35a5764233aa6b207c4169fff7fccae567a160a0fdcaryclark@google.comstatic void testSimplifyQuadratic3() {
36a5764233aa6b207c4169fff7fccae567a160a0fdcaryclark@google.com    SkPath path, out;
37a5764233aa6b207c4169fff7fccae567a160a0fdcaryclark@google.com    path.moveTo(0, 0);
38a5764233aa6b207c4169fff7fccae567a160a0fdcaryclark@google.com    path.quadTo(20, 0, 20, 20);
39a5764233aa6b207c4169fff7fccae567a160a0fdcaryclark@google.com    path.close();
40a5764233aa6b207c4169fff7fccae567a160a0fdcaryclark@google.com    path.moveTo(0, 20);
41a5764233aa6b207c4169fff7fccae567a160a0fdcaryclark@google.com    path.quadTo(0, 0, 20, 0);
42a5764233aa6b207c4169fff7fccae567a160a0fdcaryclark@google.com    path.close();
43198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.com    testSimplify(path, true, out, bitmap);
44198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.com}
45198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.com
46198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.comstatic void testSimplifyQuadratic4() {
47198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.com    SkPath path, out;
48198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.com    path.moveTo(0, 20);
49198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.com    path.quadTo(20, 0, 40, 20);
50198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.com    path.close();
51198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.com    path.moveTo(40, 10);
52198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.com    path.quadTo(20, 30, 0, 10);
53198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.com    path.close();
54198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.com    testSimplify(path, true, out, bitmap);
55a5764233aa6b207c4169fff7fccae567a160a0fdcaryclark@google.com    drawAsciiPaths(path, out, true);
56a5764233aa6b207c4169fff7fccae567a160a0fdcaryclark@google.com}
57a5764233aa6b207c4169fff7fccae567a160a0fdcaryclark@google.com
5878e17130f396d8b2157116c2504e357192f87ed1caryclark@google.comstatic void testSimplifyQuadratic5() {
5978e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    SkPath path, out;
6078e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.moveTo(0, 0);
6178e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.quadTo(0, 0, 0, 0);
6278e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.lineTo(0, 0);
6378e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.close();
6478e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.moveTo(0, 0);
6578e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.lineTo(0, 0);
6678e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.quadTo(0, 0, 0, 1);
6778e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.close();
6878e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    testSimplify(path, true, out, bitmap);
6978e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    drawAsciiPaths(path, out, true);
7078e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com}
7178e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com
7278e17130f396d8b2157116c2504e357192f87ed1caryclark@google.comstatic void testSimplifyQuadratic6() {
7378e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    SkPath path, out;
7478e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.moveTo(0, 0);
7578e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.quadTo(0, 0, 0, 0);
7678e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.lineTo(1, 0);
7778e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.close();
7878e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.moveTo(0, 0);
7978e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.lineTo(0, 0);
8078e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.quadTo(1, 0, 0, 1);
8178e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.close();
8278e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    testSimplify(path, true, out, bitmap);
8378e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    drawAsciiPaths(path, out, true);
8478e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com}
8578e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com
8678e17130f396d8b2157116c2504e357192f87ed1caryclark@google.comstatic void testSimplifyQuadratic7() {
8778e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    SkPath path, out;
8878e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.moveTo(0, 0);
8978e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.quadTo(0, 0, 0, 0);
9078e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.lineTo(0, 1);
9178e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.close();
9278e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.moveTo(0, 0);
9378e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.lineTo(0, 0);
9478e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.quadTo(1, 0, 0, 2);
9578e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.close();
9678e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    testSimplify(path, true, out, bitmap);
9778e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    drawAsciiPaths(path, out, true);
9878e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com}
9978e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com
10078e17130f396d8b2157116c2504e357192f87ed1caryclark@google.comstatic void testSimplifyQuadratic8() {
10178e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    SkPath path, out;
10278e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.moveTo(0, 0);
10378e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.quadTo(0, 0, 0, 0);
10478e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.lineTo(0, 0);
10578e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.close();
10678e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.moveTo(0, 0);
10778e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.lineTo(0, 0);
10878e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.quadTo(1, 0, 0, 2);
10978e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.close();
11078e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    testSimplify(path, true, out, bitmap);
11178e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    drawAsciiPaths(path, out, true);
11278e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com}
11378e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com
11478e17130f396d8b2157116c2504e357192f87ed1caryclark@google.comstatic void testSimplifyQuadratic9() {
11578e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    SkPath path, out;
11678e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.moveTo(0, 0);
11778e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.quadTo(0, 0, 0, 0);
11878e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.lineTo(1, 1);
11978e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.close();
12078e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.moveTo(0, 0);
12178e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.lineTo(0, 0);
12278e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.quadTo(1, 0, 2, 2);
12378e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.close();
12478e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    testSimplify(path, true, out, bitmap);
12578e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    drawAsciiPaths(path, out, true);
12678e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com}
12778e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com
12878e17130f396d8b2157116c2504e357192f87ed1caryclark@google.comstatic void testSimplifyQuadratic10() {
12978e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    SkPath path, out;
13078e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.moveTo(0, 0);
13178e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.quadTo(0, 0, 0, 0);
13278e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.lineTo(0, 0);
13378e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.close();
13478e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.moveTo(0, 0);
13578e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.lineTo(0, 1);
13678e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.quadTo(1, 1, 1, 2);
13778e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.close();
13878e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    testSimplify(path, true, out, bitmap);
13978e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    drawAsciiPaths(path, out, true);
14078e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com}
14178e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com
14278e17130f396d8b2157116c2504e357192f87ed1caryclark@google.comstatic void testSimplifyQuadratic11() {
14378e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    SkPath path, out;
14478e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.moveTo(0, 0);
14578e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.quadTo(0, 0, 0, 0);
14678e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.lineTo(0, 2);
14778e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.close();
14878e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.moveTo(0, 0);
14978e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.lineTo(2, 1);
15078e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.quadTo(2, 2, 3, 3);
15178e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.close();
15278e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    testSimplify(path, true, out, bitmap);
15378e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    drawAsciiPaths(path, out, true);
15478e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com}
15578e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com
15678e17130f396d8b2157116c2504e357192f87ed1caryclark@google.comstatic void testSimplifyQuadratic12() {
15778e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    SkPath path, out;
15878e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.moveTo(0, 0);
15978e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.lineTo(0, 2);
16078e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.lineTo(0, 0);
16178e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.close();
16278e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.moveTo(3, 0);
16378e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.quadTo(1, 1, 0, 2);
16478e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.lineTo(3, 0);
16578e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.close();
16678e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    testSimplify(path, true, out, bitmap);
16778e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    drawAsciiPaths(path, out, true);
16878e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com}
16978e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com
17078e17130f396d8b2157116c2504e357192f87ed1caryclark@google.comstatic void testSimplifyQuadratic13() {
17178e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    SkPath path, out;
17278e17130f396d8b2157116c2504e357192f87ed1caryclark@google.compath.moveTo(0, 0);
17378e17130f396d8b2157116c2504e357192f87ed1caryclark@google.compath.quadTo(0, 0, 1, 0);
17478e17130f396d8b2157116c2504e357192f87ed1caryclark@google.compath.lineTo(1, 1);
17578e17130f396d8b2157116c2504e357192f87ed1caryclark@google.compath.lineTo(0, 0);
17678e17130f396d8b2157116c2504e357192f87ed1caryclark@google.compath.close();
17778e17130f396d8b2157116c2504e357192f87ed1caryclark@google.compath.moveTo(0, 0);
17878e17130f396d8b2157116c2504e357192f87ed1caryclark@google.compath.quadTo(3, 0, 1, 1);
17978e17130f396d8b2157116c2504e357192f87ed1caryclark@google.compath.lineTo(0, 0);
18078e17130f396d8b2157116c2504e357192f87ed1caryclark@google.compath.close();
18178e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    testSimplify(path, true, out, bitmap);
18278e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    drawAsciiPaths(path, out, true);
18378e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com}
18478e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com
18578e17130f396d8b2157116c2504e357192f87ed1caryclark@google.comstatic void testSimplifyQuadratic14() {
18678e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    SkPath path, out;
18778e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.moveTo(0, 0);
18878e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.quadTo(0, 0, 0, 0);
18978e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.lineTo(1, 1);
19078e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.close();
19178e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.moveTo(0, 0);
19278e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.lineTo(0, 0);
19378e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.quadTo(0, 1, 2, 1);
19478e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.close();
19578e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    testSimplify(path, true, out, bitmap);
19678e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    drawAsciiPaths(path, out, true);
19778e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com}
19878e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com
19978e17130f396d8b2157116c2504e357192f87ed1caryclark@google.comstatic void testSimplifyQuadratic15() {
20078e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    SkPath path, out;
20178e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.moveTo(0, 0);
20278e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.quadTo(0, 0, 1, 3);
20378e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.lineTo(3, 3);
20478e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.close();
20578e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.moveTo(0, 1);
20678e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.lineTo(1, 1);
20778e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.quadTo(0, 3, 3, 3);
20878e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.close();
20978e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    testSimplify(path, true, out, bitmap);
21078e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    drawAsciiPaths(path, out, true);
21178e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com}
21278e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com
21378e17130f396d8b2157116c2504e357192f87ed1caryclark@google.comstatic void testSimplifyQuadratic16() {
21478e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    SkPath path, out;
21578e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.moveTo(0, 0);
21678e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.quadTo(0, 0, 0, 0);
21778e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.lineTo(0, 1);
21878e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.close();
21978e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.moveTo(0, 0);
22078e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.lineTo(0, 0);
22178e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.quadTo(1, 0, 0, 1);
22278e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    path.close();
22378e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    testSimplify(path, true, out, bitmap);
22478e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    drawAsciiPaths(path, out, true);
22578e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com}
22678e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com
227fa0588ff672564af1c235a63589573829035a60bcaryclark@google.comstatic void testSimplifyQuadratic17() {
228fa0588ff672564af1c235a63589573829035a60bcaryclark@google.com    SkPath path, out;
229fa0588ff672564af1c235a63589573829035a60bcaryclark@google.com    path.moveTo(0, 0);
230fa0588ff672564af1c235a63589573829035a60bcaryclark@google.com    path.quadTo(0, 0, 0, 0);
231fa0588ff672564af1c235a63589573829035a60bcaryclark@google.com    path.lineTo(2, 2);
232fa0588ff672564af1c235a63589573829035a60bcaryclark@google.com    path.close();
233fa0588ff672564af1c235a63589573829035a60bcaryclark@google.com    path.moveTo(0, 1);
234fa0588ff672564af1c235a63589573829035a60bcaryclark@google.com    path.lineTo(0, 1);
235fa0588ff672564af1c235a63589573829035a60bcaryclark@google.com    path.quadTo(2, 1, 3, 3);
236fa0588ff672564af1c235a63589573829035a60bcaryclark@google.com    path.close();
237fa0588ff672564af1c235a63589573829035a60bcaryclark@google.com    testSimplify(path, true, out, bitmap);
238fa0588ff672564af1c235a63589573829035a60bcaryclark@google.com    drawAsciiPaths(path, out, true);
239fa0588ff672564af1c235a63589573829035a60bcaryclark@google.com}
240fa0588ff672564af1c235a63589573829035a60bcaryclark@google.com
241a5764233aa6b207c4169fff7fccae567a160a0fdcaryclark@google.comstatic void (*simplifyTests[])() = {
242fa0588ff672564af1c235a63589573829035a60bcaryclark@google.com    testSimplifyQuadratic17,
24378e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    testSimplifyQuadratic16,
24478e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    testSimplifyQuadratic15,
24578e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    testSimplifyQuadratic14,
24678e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    testSimplifyQuadratic13,
24778e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    testSimplifyQuadratic12,
24878e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    testSimplifyQuadratic11,
24978e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    testSimplifyQuadratic10,
25078e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    testSimplifyQuadratic9,
25178e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    testSimplifyQuadratic8,
25278e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    testSimplifyQuadratic7,
25378e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    testSimplifyQuadratic6,
25478e17130f396d8b2157116c2504e357192f87ed1caryclark@google.com    testSimplifyQuadratic5,
255198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.com    testSimplifyQuadratic4,
256a5764233aa6b207c4169fff7fccae567a160a0fdcaryclark@google.com    testSimplifyQuadratic3,
257a5764233aa6b207c4169fff7fccae567a160a0fdcaryclark@google.com    testSimplifyQuadratic2,
258a5764233aa6b207c4169fff7fccae567a160a0fdcaryclark@google.com    testSimplifyQuadratic1,
259a5764233aa6b207c4169fff7fccae567a160a0fdcaryclark@google.com};
260a5764233aa6b207c4169fff7fccae567a160a0fdcaryclark@google.com
261a5764233aa6b207c4169fff7fccae567a160a0fdcaryclark@google.comstatic size_t simplifyTestsCount = sizeof(simplifyTests) / sizeof(simplifyTests[0]);
262a5764233aa6b207c4169fff7fccae567a160a0fdcaryclark@google.com
263fa0588ff672564af1c235a63589573829035a60bcaryclark@google.comstatic void (*firstTest)() = testSimplifyQuadratic14;
264fb173424e915e696a73067d616ce4f39a407261acaryclark@google.comstatic bool skipAll = false;
265a5764233aa6b207c4169fff7fccae567a160a0fdcaryclark@google.com
266a5764233aa6b207c4169fff7fccae567a160a0fdcaryclark@google.comvoid SimplifyQuadraticPaths_Test() {
267fb173424e915e696a73067d616ce4f39a407261acaryclark@google.com    if (skipAll) {
268fb173424e915e696a73067d616ce4f39a407261acaryclark@google.com        return;
269fb173424e915e696a73067d616ce4f39a407261acaryclark@google.com    }
270a5764233aa6b207c4169fff7fccae567a160a0fdcaryclark@google.com    size_t index = 0;
271a5764233aa6b207c4169fff7fccae567a160a0fdcaryclark@google.com    if (firstTest) {
272a5764233aa6b207c4169fff7fccae567a160a0fdcaryclark@google.com        while (index < simplifyTestsCount && simplifyTests[index] != firstTest) {
273a5764233aa6b207c4169fff7fccae567a160a0fdcaryclark@google.com            ++index;
274a5764233aa6b207c4169fff7fccae567a160a0fdcaryclark@google.com        }
275a5764233aa6b207c4169fff7fccae567a160a0fdcaryclark@google.com    }
276a5764233aa6b207c4169fff7fccae567a160a0fdcaryclark@google.com    bool firstTestComplete = false;
277a5764233aa6b207c4169fff7fccae567a160a0fdcaryclark@google.com    for ( ; index < simplifyTestsCount; ++index) {
278a5764233aa6b207c4169fff7fccae567a160a0fdcaryclark@google.com        (*simplifyTests[index])();
279a5764233aa6b207c4169fff7fccae567a160a0fdcaryclark@google.com        if (simplifyTests[index] == testSimplifyQuadratic1) {
280a5764233aa6b207c4169fff7fccae567a160a0fdcaryclark@google.com            SkDebugf("%s last fast quad test\n", __FUNCTION__);
281a5764233aa6b207c4169fff7fccae567a160a0fdcaryclark@google.com        }
282a5764233aa6b207c4169fff7fccae567a160a0fdcaryclark@google.com        firstTestComplete = true;
283a5764233aa6b207c4169fff7fccae567a160a0fdcaryclark@google.com    }
284a5764233aa6b207c4169fff7fccae567a160a0fdcaryclark@google.com}
285