Пример #1
0
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);
}
Пример #2
0
void UndoManagerTest::testSafePoint()
{
  TestDocument doc;
  KateUndoManager *undoManager = doc.undoManager();

  doc.insertText(Cursor(0, 0), "a");

  // create one undo group
  QCOMPARE(undoManager->undoCount(), 1u);
  QCOMPARE(undoManager->redoCount(), 0u);

  undoManager->undoSafePoint();
  doc.insertText(Cursor(0, 1), "b");

  // create a second undo group (don't merge)
  QCOMPARE(undoManager->undoCount(), 2u);

  doc.undo();

  // move second undo group to redo items
  QCOMPARE(undoManager->undoCount(), 1u);
  QCOMPARE(undoManager->redoCount(), 1u);

  doc.insertText(Cursor(0, 1), "b");

  // create a second undo group again, (don't merge)
  QCOMPARE(undoManager->undoCount(), 2u);
  QCOMPARE(undoManager->redoCount(), 0u);

  doc.editStart();
  doc.insertText(Cursor(0, 2), "c");
  undoManager->undoSafePoint();
  doc.insertText(Cursor(0, 3), "d");
  doc.editEnd();

  // merge both edits into second undo group
  QCOMPARE(undoManager->undoCount(), 2u);
  QCOMPARE(undoManager->redoCount(), 0u);

  doc.insertText(Cursor(0, 4), "e");

  // create a third undo group (don't merge)
  QCOMPARE(undoManager->undoCount(), 3u);
  QCOMPARE(undoManager->redoCount(), 0u);
}