[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdelibs/kate/tests
From:       Christoph Cullmann <cullmann () kde ! org>
Date:       2010-04-30 20:35:03
Message-ID: 20100430203503.32241AC8AA () svn ! kde ! org
[Download RAW message or body]

SVN commit 1121218 by cullmann:

dhaumann: add basic unit test for transformRange


 M  +63 -15    revision_test.cpp  
 M  +2 -1      revision_test.h  


--- trunk/KDE/kdelibs/kate/tests/revision_test.cpp #1121217:1121218
@@ -24,9 +24,8 @@
 
 #include <katedocument.h>
 #include <katebuffer.h>
-#include <katetexthistory.h>
-#include <ktexteditor/movingcursor.h>
-#include <ktexteditor/movingrange.h>
+#include <ktexteditor/cursor.h>
+#include <ktexteditor/range.h>
 
 using namespace KTextEditor;
 
@@ -40,7 +39,17 @@
                            + ", " + QByteArray::number(cursor.column()) + "]";
         return qstrdup(ba.data());
     }
+
+    template<>
+    char *toString(const KTextEditor::Range &range)
+    {
+        QByteArray ba = "Range[" + QByteArray::number(range.start().line())
+                          + ", " + QByteArray::number(range.start().column()) + " - "
+                                 + QByteArray::number(range.end().line())
+                          + ", " + QByteArray::number(range.end().column()) + "]";
+        return qstrdup(ba.data());
 }
+}
 
 
 RevisionTest::RevisionTest()
@@ -57,14 +66,14 @@
 // - revision()
 // - unlockRevision()
 // - transformCursor()
-// - transformRange()
-void RevisionTest::testRevision()
+void RevisionTest::testTransformCursor()
 {
     KateDocument doc (false, false, false);
-    Kate::TextHistory& history = doc.buffer().history();
 
-    // initial revision is -1, as there is no stored revision
+    // initial saved revision of unsaved document is -1
     QVERIFY(doc.lastSavedRevision() == -1);
+
+    // initial revision is always 0
     QCOMPARE(doc.revision(), (qint64) 0);
 
     // one edit action -> revision now 1, last saved still -1
@@ -83,6 +92,7 @@
     Cursor c01(0, 1);
     Cursor stayOnInsert(0, 2);
     Cursor moveOnInsert(0, 2);
+
     doc.transformCursor(c01, MovingCursor::MoveOnInsert, rev, -1);
     doc.transformCursor(moveOnInsert, MovingCursor::MoveOnInsert, rev, -1);
     doc.transformCursor(stayOnInsert, MovingCursor::StayOnInsert, rev, -1);
@@ -100,7 +110,7 @@
     // now undo, the cursors should move to original positions again
     doc.undo();
 
-    // reset cursors
+    // inverse transformation
     doc.transformCursor(c01, MovingCursor::MoveOnInsert, rev, -1);
     doc.transformCursor(moveOnInsert, MovingCursor::MoveOnInsert, rev, -1);
     doc.transformCursor(stayOnInsert, MovingCursor::StayOnInsert, rev, -1);
@@ -108,25 +118,63 @@
     QCOMPARE(c01, Cursor(0, 1));
     QCOMPARE(stayOnInsert, Cursor(0, 2));
     QCOMPARE(moveOnInsert, Cursor(0, 2));
+}
 
 
-/*transformRange(KTextEditor::Range &     range,
-               KTextEditor::MovingRange::InsertBehaviors   insertBehaviors,
-               MovingRange::EmptyBehavior      emptyBehavior,
-               qint64      fromRevision,
-               qint64      toRevision = -1
-               )*/
-}
+// tests:
+// - transformRange()
+void RevisionTest::testTransformRange()
+{
+    KateDocument doc (false, false, false);
 
+    QCOMPARE(doc.revision(), (qint64) 0);
 
+    doc.setText("00\n"
+                "11");
 
+    // now lock current revision
+    qint64 rev = doc.revision();
+    doc.lockRevision(rev);
 
 
+    Range r1(Cursor(0, 0), Cursor(1, 2));
+    Range r2(Cursor(0, 1), Cursor(1, 1));
+    Range invalidOnEmpty(Cursor(0, 1), Cursor(1, 1));
 
+    // remove text
+    doc.removeText(Range(Cursor(0, 0), Cursor(1, 2)));
 
+    doc.transformRange(r1, MovingRange::ExpandLeft | MovingRange::ExpandRight,
+                       MovingRange::AllowEmpty, rev, -1);
+    doc.transformRange(r2, MovingRange::ExpandLeft | MovingRange::ExpandRight,
+                       MovingRange::AllowEmpty, rev, -1);
+    doc.transformRange(invalidOnEmpty, MovingRange::ExpandLeft | MovingRange::ExpandRight,
+                       MovingRange::InvalidateIfEmpty, rev, -1);
 
 
+    QCOMPARE(r1, Range(Cursor(0, 0), Cursor(0, 0)));
+    QCOMPARE(r2, Range(Cursor(0, 0), Cursor(0, 0)));
+    QCOMPARE(invalidOnEmpty, Range::invalid());
 
+    // free revision and lock current again
+    doc.unlockRevision(rev); // FIXME: cullmann?
+    rev = doc.revision();
+    doc.lockRevision(rev);
 
+    // now undo
+    doc.undo();
 
+    // r1 should span the entire document
+    // r2 should be empty at end of document
+    // invalidOnEmpty should stay invalid
+    doc.transformRange(r1, MovingRange::ExpandLeft | MovingRange::ExpandRight,
+                       MovingRange::AllowEmpty, rev, -1);
+    doc.transformRange(r2, MovingRange::ExpandRight,
+                       MovingRange::AllowEmpty, rev, -1);
+    doc.transformRange(invalidOnEmpty, MovingRange::ExpandLeft | MovingRange::ExpandRight,
+                       MovingRange::AllowEmpty, rev, -1);
 
+    QCOMPARE(r1, Range(Cursor(0, 0), Cursor(1, 2)));
+    QCOMPARE(r2, Range(Cursor(1, 2), Cursor(1, 2)));
+    QCOMPARE(invalidOnEmpty, Range::invalid());
+}
--- trunk/KDE/kdelibs/kate/tests/revision_test.h #1121217:1121218
@@ -31,7 +31,8 @@
   ~RevisionTest();
 
 private Q_SLOTS:
-  void testRevision();
+  void testTransformCursor();
+  void testTransformRange();
 };
 
 #endif // KATE_REVISION_TEST_H
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic