1 /* This file is part of the KDE project
2 Copyright (C) 2007 Thorsten Zachmann <zachmann@kde.org>
3
4 This library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Library General Public
6 License as published by the Free Software Foundation; either
7 version 2 of the License, or (at your option) any later version.
8
9 This library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Library General Public License for more details.
13
14 You should have received a copy of the GNU Library General Public License
15 along with this library; see the file COPYING.LIB. If not, write to
16 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17 * Boston, MA 02110-1301, USA.
18 */
19 #include "TestPathTool.h"
20
21 #include <QPainterPath>
22 #include "../KoPathShape.h"
23 #include "../tools/KoPathTool.h"
24 #include "../tools/KoPathToolSelection.h"
25 #include "../KoPathPointData.h"
26 #include <MockShapes.h>
27 #include <QTest>
28
koPathPointSelection_selectedSegmentsData()29 void TestPathTool::koPathPointSelection_selectedSegmentsData()
30 {
31 KoPathShape path1;
32 KoPathPoint *point11 = path1.moveTo(QPointF(10, 10));
33 KoPathPoint *point12 = path1.lineTo(QPointF(20, 10));
34 KoPathPoint *point13 = path1.lineTo(QPointF(20, 20));
35 KoPathPoint *point14 = path1.lineTo(QPointF(15, 25));
36 path1.lineTo(QPointF(10, 20));
37 KoPathPoint *point16 = path1.moveTo(QPointF(30, 30));
38 path1.lineTo(QPointF(40, 30));
39 KoPathPoint *point18 = path1.lineTo(QPointF(40, 40));
40 KoPathPoint *point19 = path1.curveTo(QPointF(40, 45), QPointF(30, 45), QPointF(30, 40));
41 path1.close();
42
43 KoPathShape path2;
44 KoPathPoint *point21 = path2.moveTo(QPointF(100, 100));
45 KoPathPoint *point22 = path2.lineTo(QPointF(110, 100));
46 KoPathPoint *point23 = path2.lineTo(QPointF(110, 110));
47
48 KoPathShape path3;
49 KoPathPoint *point31 = path3.moveTo(QPointF(200, 220));
50 KoPathPoint *point32 = path3.lineTo(QPointF(210, 220));
51 KoPathPoint *point33 = path3.lineTo(QPointF(220, 220));
52 path3.close();
53
54 MockCanvas canvas;
55 KoPathTool tool(&canvas);
56 QVERIFY(1 == 1);
57 KoPathToolSelection pps(&tool);
58 pps.add(point11, false);
59 pps.add(point12, false);
60 pps.add(point13, false);
61 pps.add(point14, false);
62 pps.add(point16, false);
63 pps.add(point18, false);
64 pps.add(point19, false);
65 pps.add(point21, false);
66 pps.add(point22, false);
67 pps.add(point23, false);
68 pps.add(point31, false);
69 pps.add(point32, false);
70 pps.add(point33, false);
71
72 QList<KoPathPointData> pd2;
73 pd2.append(KoPathPointData(&path1, path1.pathPointIndex(point11)));
74 pd2.append(KoPathPointData(&path1, path1.pathPointIndex(point12)));
75 pd2.append(KoPathPointData(&path1, path1.pathPointIndex(point13)));
76 pd2.append(KoPathPointData(&path1, path1.pathPointIndex(point18)));
77 pd2.append(KoPathPointData(&path1, path1.pathPointIndex(point19)));
78 pd2.append(KoPathPointData(&path2, path2.pathPointIndex(point21)));
79 pd2.append(KoPathPointData(&path2, path2.pathPointIndex(point22)));
80 pd2.append(KoPathPointData(&path3, path3.pathPointIndex(point31)));
81 pd2.append(KoPathPointData(&path3, path3.pathPointIndex(point32)));
82 pd2.append(KoPathPointData(&path3, path3.pathPointIndex(point33)));
83
84 std::sort(pd2.begin(), pd2.end());
85
86 QList<KoPathPointData> pd1(pps.selectedSegmentsData());
87 QVERIFY(pd1 == pd2);
88 }
89
90
91 QTEST_MAIN(TestPathTool)
92