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)