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