void RangeTest::testInsertText() { KTextEditor::DocumentPrivate doc; // Multi-line insert KTextEditor::MovingCursor *cursor1 = doc.newMovingCursor(KTextEditor::Cursor(), KTextEditor::MovingCursor::StayOnInsert); KTextEditor::MovingCursor *cursor2 = doc.newMovingCursor(KTextEditor::Cursor(), KTextEditor::MovingCursor::MoveOnInsert); doc.insertText(KTextEditor::Cursor(), QLatin1String("Test Text\nMore Test Text")); QCOMPARE(doc.documentEnd(), KTextEditor::Cursor(1, 14)); QString text = doc.text(KTextEditor::Range(1, 0, 1, 14)); QCOMPARE(text, QLatin1String("More Test Text")); // Check cursors and ranges have moved properly QCOMPARE(cursor1->toCursor(), KTextEditor::Cursor(0, 0)); QCOMPARE(cursor2->toCursor(), KTextEditor::Cursor(1, 14)); KTextEditor::Cursor cursor3 = doc.endOfLine(1); // Set up a few more lines doc.insertText(*cursor2, QLatin1String("\nEven More Test Text")); QCOMPARE(doc.documentEnd(), KTextEditor::Cursor(2, 19)); QCOMPARE(cursor3, doc.endOfLine(1)); }
void RangeTest::testCornerCaseInsertion() { KTextEditor::DocumentPrivate doc; // lock first revision doc.lockRevision(0); KTextEditor::MovingRange *rangeEdit = doc.newMovingRange(KTextEditor::Range(0, 0, 0, 0)); QCOMPARE(rangeEdit->toRange(), KTextEditor::Range(0, 0, 0, 0)); doc.insertText(KTextEditor::Cursor(0, 0), QLatin1String("\n")); QCOMPARE(rangeEdit->toRange(), KTextEditor::Range(1, 0, 1, 0)); // test translate KTextEditor::Range translateTest(0, 0, 0, 0); doc.transformRange(translateTest, KTextEditor::MovingRange::DoNotExpand, KTextEditor::MovingRange::AllowEmpty, 0); QCOMPARE(translateTest, KTextEditor::Range(1, 0, 1, 0)); // test translate reverse KTextEditor::Range reverseTranslateTest(1, 0, 1, 0); doc.transformRange(reverseTranslateTest, KTextEditor::MovingRange::DoNotExpand, KTextEditor::MovingRange::AllowEmpty, -1, 0); QCOMPARE(reverseTranslateTest, KTextEditor::Range(0, 0, 0, 0)); }