void UndoManagerTest::testSelectionUndo() { TestDocument doc; KateView *view = static_cast<KateView*>(doc.createView(0)); doc.setText("aaaa bbbb cccc\n" "dddd eeee ffff"); view->setCursorPosition(KTextEditor::Cursor(1, 9)); KTextEditor::Range selectionRange(KTextEditor::Cursor(0, 5), KTextEditor::Cursor(1, 9)); view->setSelection(selectionRange); doc.typeChars(view, "eeee"); // cursor position: "aaaa eeee| ffff", no selection anymore QCOMPARE(view->cursorPosition(), KTextEditor::Cursor(0, 9)); QCOMPARE(view->selection(), false); // undo to remove "eeee" and add selection and text again doc.undo(); QCOMPARE(view->cursorPosition(), KTextEditor::Cursor(1, 9)); QCOMPARE(view->selection(), true); QCOMPARE(view->selectionRange(), selectionRange); // redo to insert "eeee" again and remove selection // cursor position: "aaaa eeee| ffff", no selection anymore doc.redo(); QCOMPARE(view->cursorPosition(), KTextEditor::Cursor(0, 9)); QCOMPARE(view->selection(), false); delete view; }
void UndoManagerTest::testUndoRedoCount() { TestDocument doc; KateUndoManager *undoManager = doc.undoManager(); // no undo/redo items at the beginning QCOMPARE(undoManager->undoCount(), 0u); QCOMPARE(undoManager->redoCount(), 0u); doc.insertText(Cursor(0, 0), "a"); // create one insert-group QCOMPARE(undoManager->undoCount(), 1u); QCOMPARE(undoManager->redoCount(), 0u); doc.undo(); // move insert-group to redo items QCOMPARE(undoManager->undoCount(), 0u); QCOMPARE(undoManager->redoCount(), 1u); doc.redo(); // move insert-group back to undo items QCOMPARE(undoManager->undoCount(), 1u); QCOMPARE(undoManager->redoCount(), 0u); doc.insertText(Cursor(0, 1), "b"); // merge "b" into insert-group QCOMPARE(undoManager->undoCount(), 1u); QCOMPARE(undoManager->redoCount(), 0u); doc.removeText(Range(0, 1, 0, 2)); // create an additional remove-group QCOMPARE(undoManager->undoCount(), 2u); QCOMPARE(undoManager->redoCount(), 0u); doc.undo(); // move remove-group to redo items QCOMPARE(undoManager->undoCount(), 1u); QCOMPARE(undoManager->redoCount(), 1u); doc.insertText(Cursor(0, 1), "b"); // merge "b" into insert-group // and remove remove-group QCOMPARE(undoManager->undoCount(), 1u); QCOMPARE(undoManager->redoCount(), 0u); }
void UndoManagerTest::testCursorPosition() { TestDocument doc; KateView *view = static_cast<KateView*>(doc.createView(0)); doc.setText("aaaa bbbb cccc\n" "dddd ffff"); view->setCursorPosition(KTextEditor::Cursor(1, 5)); doc.typeChars(view, "eeee"); // cursor position: "dddd eeee| ffff" QCOMPARE(view->cursorPosition(), KTextEditor::Cursor(1, 9)); // undo once to remove "eeee", cursor position: "dddd | ffff" doc.undo(); QCOMPARE(view->cursorPosition(), KTextEditor::Cursor(1, 5)); // redo once to insert "eeee" again. cursor position: "dddd eeee| ffff" doc.redo(); QCOMPARE(view->cursorPosition(), KTextEditor::Cursor(1, 9)); delete view; }