File indexing completed on 2025-02-02 04:14:59

0001 /* This file is part of the KDE project
0002    SPDX-FileCopyrightText: 2007 Thorsten Zachmann <zachmann@kde.org>
0003 
0004    SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 #include "TestRemoveSubpathCommand.h"
0007 
0008 #include <QPainterPath>
0009 #include "KoPathShape.h"
0010 #include "KoSubpathRemoveCommand.h"
0011 #include <simpletest.h>
0012 
0013 void TestRemoveSubpathCommand::redoUndo()
0014 {
0015     KoPathShape path;
0016     path.moveTo(QPointF(0, 0));
0017     path.lineTo(QPointF(0, 100));
0018     path.curveTo(QPointF(0, 50), QPointF(100, 50), QPointF(100, 100));
0019     path.lineTo(QPointF(200, 100));
0020     path.curveTo(QPointF(200, 50), QPointF(300, 50), QPointF(300, 100));
0021     path.moveTo(QPointF(100, 0));
0022     path.curveTo(QPointF(150, 0), QPointF(200, 50), QPointF(200, 100));
0023     path.curveTo(QPointF(150, 100), QPointF(100, 50), QPointF(100, 0));
0024     path.closeMerge();
0025     path.moveTo(QPointF(200, 0));
0026     path.lineTo(QPointF(200, 100));
0027 
0028     QPainterPath ppathOrg = path.outline();
0029 
0030     KUndo2Command *cmd1 = new KoSubpathRemoveCommand(&path, 0);
0031     cmd1->redo();
0032 
0033     QPainterPath ppath1(QPointF(0, 0));
0034     ppath1.cubicTo(50, 0, 100, 50, 100, 100);
0035     ppath1.cubicTo(50, 100, 0, 50, 0, 0);
0036     ppath1.closeSubpath();
0037     ppath1.moveTo(100, 0);
0038     ppath1.lineTo(100, 100);
0039 
0040     QVERIFY(ppath1 == path.outline());
0041 
0042     cmd1->undo();
0043 
0044     QVERIFY(ppathOrg == path.outline());
0045 
0046     KUndo2Command *cmd2 = new KoSubpathRemoveCommand(&path, 1);
0047     cmd2->redo();
0048 
0049     QPainterPath ppath2(QPointF(0, 0));
0050     ppath2.lineTo(0, 100);
0051     ppath2.cubicTo(0, 50, 100, 50, 100, 100);
0052     ppath2.lineTo(200, 100);
0053     ppath2.cubicTo(200, 50, 300, 50, 300, 100);
0054     ppath2.moveTo(200, 0);
0055     ppath2.lineTo(200, 100);
0056 
0057     QVERIFY(ppath2 == path.outline());
0058 
0059     cmd2->undo();
0060 
0061     QVERIFY(ppathOrg == path.outline());
0062 
0063     KUndo2Command *cmd3 = new KoSubpathRemoveCommand(&path, 2);
0064     cmd3->redo();
0065 
0066     QPainterPath ppath3(QPointF(0, 0));
0067     ppath3.lineTo(0, 100);
0068     ppath3.cubicTo(0, 50, 100, 50, 100, 100);
0069     ppath3.lineTo(200, 100);
0070     ppath3.cubicTo(200, 50, 300, 50, 300, 100);
0071     ppath3.moveTo(100, 0);
0072     ppath3.cubicTo(150, 0, 200, 50, 200, 100);
0073     ppath3.cubicTo(150, 100, 100, 50, 100, 0);
0074     ppath3.closeSubpath();
0075 
0076     QVERIFY(ppath3 == path.outline());
0077 
0078     cmd3->undo();
0079 
0080     QVERIFY(ppathOrg == path.outline());
0081 
0082     cmd1->redo();
0083 
0084     QVERIFY(ppath1 == path.outline());
0085 
0086     delete cmd3;
0087     delete cmd2;
0088     delete cmd1;
0089 }
0090 
0091 SIMPLE_TEST_MAIN(TestRemoveSubpathCommand)