void TestPageCommands::testInsertPageCommand() // move of frames { KWDocument document; KWPageInsertCommand command1(&document, 0); QCOMPARE(document.pageCount(), 0); QCOMPARE(document.frameSetCount(), 0); command1.redo(); QCOMPARE(document.pageCount(), 1); QCOMPARE(document.frameSetCount(), 0); KWFrameSet *fs = new KWFrameSet(); MockShape *shape = new MockShape(); KWFrame *frame = new KWFrame(shape, fs); Q_UNUSED(frame); document.addFrameSet(fs); QPointF startPos = shape->position(); KWPageInsertCommand command2(&document, 0); QCOMPARE(document.pageCount(), 1); QCOMPARE(document.frameSetCount(), 1); command2.redo(); QCOMPARE(document.pageCount(), 2); QCOMPARE(document.frameSetCount(), 1); QCOMPARE(fs->frameCount(), 1); QCOMPARE(command2.page().pageNumber(), 1); QCOMPARE(command1.page().pageNumber(), 2); QPointF newPos = shape->position(); QCOMPARE(newPos, QPointF(0, command2.page().height()) + startPos); // it moved ;) KWPageInsertCommand command3(&document, 2); command3.redo(); QCOMPARE(document.pageCount(), 3); QCOMPARE(document.frameSetCount(), 1); QCOMPARE(fs->frameCount(), 1); QCOMPARE(newPos, shape->position()); // it has not moved from page 2 command3.undo(); QCOMPARE(document.pageCount(), 2); QCOMPARE(document.frameSetCount(), 1); QCOMPARE(fs->frameCount(), 1); QCOMPARE(newPos, shape->position()); // it has not moved from page 2 QCOMPARE(command2.page().pageNumber(), 1); QCOMPARE(command1.page().pageNumber(), 2); command2.undo(); QCOMPARE(document.pageCount(), 1); QCOMPARE(document.frameSetCount(), 1); QCOMPARE(fs->frameCount(), 1); QCOMPARE(command1.page().pageNumber(), 1); QCOMPARE(startPos, shape->position()); // it has been moved back command2.redo(); QCOMPARE(document.pageCount(), 2); QCOMPARE(document.frameSetCount(), 1); QCOMPARE(fs->frameCount(), 1); QCOMPARE(command2.page().pageNumber(), 1); QCOMPARE(command1.page().pageNumber(), 2); QCOMPARE(QPointF(0, command2.page().height()) + startPos, newPos); // it moved again ;) }
void TestPageCommands::testInsertPageCommand2() // auto remove of frames { KWDocument document; KWFrameSet *fs = new KWFrameSet(); document.addFrameSet(fs); KWTextFrameSet *tfs = new KWTextFrameSet(&document, Words::MainTextFrameSet); document.addFrameSet(tfs); KWPageInsertCommand command1(&document, 0); command1.redo(); MockShape *shape1 = new MockShape(); new KWFrame(shape1, fs); MockShape *shape2 = new MockShape(); shape2->setUserData(new KoTextShapeData()); new KWTextFrame(shape2, tfs); KWPageInsertCommand command2(&document, 1); // append a page command2.redo(); QCOMPARE(document.pageCount(), 2); QCOMPARE(document.frameSetCount(), 2); QCOMPARE(fs->frameCount(), 1); QCOMPARE(tfs->frameCount(), 1); // add a new frame for the page we just created. MockShape *shape3 = new MockShape(); QPointF position(30, command2.page().offsetInDocument()); shape3->setPosition(position); new KWTextFrame(shape3, tfs); QCOMPARE(tfs->frameCount(), 2); command2.undo(); // remove the page again. QCOMPARE(document.pageCount(), 1); QCOMPARE(document.frameSetCount(), 2); QCOMPARE(fs->frameCount(), 1); QCOMPARE(tfs->frameCount(), 1); // the text frame is an auto-generated one, so it should be removed. }
void TestPageCommands::documentPages() { KWDocument document; QCOMPARE(document.pageCount(), 0); KWPage page1 = document.appendPage("pagestyle1"); QVERIFY(page1.isValid()); QCOMPARE(page1.pageStyle().name(), QString("Standard")); // doesn't auto-create styles QCOMPARE(page1.pageNumber(), 1); KWPage page2 = document.appendPage("pagestyle1"); QVERIFY(page2.isValid()); QCOMPARE(page2.pageStyle().name(), QString("Standard")); QCOMPARE(page2.pageNumber(), 2); KWPage page3 = document.appendPage("pagestyle2"); QCOMPARE(page3.pageStyle().name(), QString("Standard")); QCOMPARE(page3.pageNumber(), 3); KWPage page4 = document.appendPage("pagestyle2"); QCOMPARE(page4.pageStyle().name(), QString("Standard")); QCOMPARE(page4.pageNumber(), 4); KWPage page5 = document.insertPage(-99); QVERIFY(page5.isValid()); QCOMPARE(page5.pageNumber(), 5); KWPage page6 = document.insertPage(99); QVERIFY(page6.isValid()); QCOMPARE(page6.pageNumber(), 6); KWPage page7 = document.appendPage("pagestyle2"); QVERIFY(page7.isValid()); QCOMPARE(page7.pageNumber(), 7); KWPage page8 = document.appendPage("pagestyle1"); QVERIFY(page8.isValid()); QCOMPARE(page8.pageNumber(), 8); KWPage page9 = document.appendPage(); QCOMPARE(page9.pageNumber(), 9); QCOMPARE(document.pageCount(), 9); document.removePage(3); QCOMPARE(document.pageCount(), 8); QVERIFY(! page3.isValid()); QCOMPARE(document.pageManager()->page(2), page2); QCOMPARE(document.pageManager()->page(5), page6); document.removePage(3); QVERIFY(! page3.isValid()); QVERIFY(! page4.isValid()); QCOMPARE(document.pageCount(), 7); QCOMPARE(document.pageManager()->page(2), page2); QCOMPARE(document.pageManager()->page(4), page6); page4 = document.insertPage(2); // kwdocument uses 'after' instead of 'as' that the pageManager uses QCOMPARE(page4.pageNumber(), 3); page3 = document.insertPage(2); QCOMPARE(page3.pageNumber(), 3); QCOMPARE(page4.pageNumber(), 4); QCOMPARE(document.pageManager()->page(2), page2); QCOMPARE(document.pageManager()->page(3), page3); QCOMPARE(document.pageManager()->page(4), page4); QCOMPARE(document.pageManager()->page(5), page5); document.removePage(-16); document.removePage(16); QCOMPARE(document.pageCount(), 9); for (int i = document.pageCount() - 1; i >= 1; --i) document.removePage(1); QCOMPARE(document.pageCount(), 1); QCOMPARE(document.pageManager()->page(1), page9); QCOMPARE(document.pageCount(), 1); document.removePage(1); //we can't remove the last page QCOMPARE(document.pageCount(), 1); }
void TestPageCommands::testRemovePageCommand() // move of frames { KWDocument document; KWPageInsertCommand insertCommand(&document, 0); insertCommand.redo(); KWFrameSet *fs = new KWFrameSet(); MockShape *shape = new MockShape(); KWFrame *frame = new KWFrame(shape, fs); Q_UNUSED(frame); document.addFrameSet(fs); KWPageInsertCommand insertCommand2(&document, 1); insertCommand2.redo(); MockShape *shape2 = new MockShape(); QPointF pos = QPointF(20, insertCommand2.page().offsetInDocument() + 10); shape2->setPosition(pos); KWFrame *frame2 = new KWFrame(shape2, fs); Q_UNUSED(frame2); QCOMPARE(document.pageCount(), 2); QCOMPARE(document.frameSetCount(), 1); QCOMPARE(fs->frameCount(), 2); // remove page2 KWPageRemoveCommand command1(&document, insertCommand2.page()); command1.redo(); QCOMPARE(insertCommand.page().pageNumber(), 1); QCOMPARE(insertCommand2.page().isValid(), false); QCOMPARE(document.pageCount(), 1); QCOMPARE(document.frameSetCount(), 1); QCOMPARE(fs->frameCount(), 1); QCOMPARE(shape2->position(), pos); // shapes are not deleted, just removed from the document command1.undo(); QCOMPARE(insertCommand.page().pageNumber(), 1); QCOMPARE(document.pageCount(), 2); QCOMPARE(document.frameSetCount(), 1); QCOMPARE(fs->frameCount(), 2); QCOMPARE(shape2->position(), pos); // not moved. // remove page 1 KWPageRemoveCommand command2(&document, insertCommand.page()); command2.redo(); QCOMPARE(insertCommand.page().isValid(), false); QCOMPARE(document.pageCount(), 1); QCOMPARE(document.frameSetCount(), 1); QCOMPARE(fs->frameCount(), 1); QCOMPARE(shape->position(), QPointF(0,0)); QCOMPARE(shape2->position(), QPointF(20, 10)); // moved! command2.undo(); QCOMPARE(document.pageCount(), 2); QCOMPARE(document.frameSetCount(), 1); QCOMPARE(fs->frameCount(), 2); QCOMPARE(shape->position(), QPointF(0,0)); QCOMPARE(shape2->position(), pos); // moved back! }