This is the mail archive of the mauve-patches@sourceware.org mailing list for the Mauve project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Fwd: [cp-patches] FYI: More PlainDocument.insertUpdate() tests]


This was sent to the wrong list.
--- Begin Message ---
I added 3 more tests for PlainDocument.insertUpdate() that show problems
in our impl.

2006-06-22  Roman Kennke  <kennke@aicas.com>

        * gnu/testlet/javax/swing/text/PlainDocument/insertUpdate.java
        (test02): New test method.
        (test03): New test method.
        (test04): New test method.


/Roman

-- 
âImprovement makes straight roads, but the crooked roads, without
Improvement, are roads of Genius.â - William Blake
Index: gnu/testlet/javax/swing/text/PlainDocument/insertUpdate.java
===================================================================
RCS file: /cvs/mauve/mauve/gnu/testlet/javax/swing/text/PlainDocument/insertUpdate.java,v
retrieving revision 1.1
diff -u -2 -0 -r1.1 insertUpdate.java
--- gnu/testlet/javax/swing/text/PlainDocument/insertUpdate.java	22 Jun 2006 11:11:23 -0000	1.1
+++ gnu/testlet/javax/swing/text/PlainDocument/insertUpdate.java	22 Jun 2006 13:32:05 -0000
@@ -23,70 +23,155 @@
 
 package gnu.testlet.javax.swing.text.PlainDocument;
 
 import javax.swing.event.DocumentEvent;
 import javax.swing.event.DocumentListener;
 import javax.swing.text.BadLocationException;
 import javax.swing.text.Element;
 import javax.swing.text.PlainDocument;
 
 import gnu.testlet.TestHarness;
 import gnu.testlet.Testlet;
 
 /**
  * Tests PlainDocument.insertUpdate().
  *
  * @author Roman Kennke (kennke@aicas.com)
  */
 public class insertUpdate implements Testlet
 {
 
+  private class TestListener
+    implements DocumentListener
+  {
+    public void changedUpdate(DocumentEvent e)
+    {
+      ev = e;
+    }
+    public void insertUpdate(DocumentEvent e)
+    {
+      ev = e;
+    }
+    public void removeUpdate(DocumentEvent e)
+    {
+      ev = e;
+    }
+
+  }
+
   DocumentEvent ev;
 
   public void test(TestHarness harness)
   {
     test01(harness);
+    test02(harness);
+    test03(harness);
   }
 
   private void test01(TestHarness h)
   {
     h.checkPoint("test01");
     PlainDocument doc = new PlainDocument();
-    doc.addDocumentListener(new DocumentListener() {
-        public void changedUpdate(DocumentEvent e) {
-          ev = e;
-        }
-        public void insertUpdate(DocumentEvent e) {
-          ev = e;
-        }
-        public void removeUpdate(DocumentEvent e) {
-          ev = e;
-        }
-      });
+    doc.addDocumentListener(new TestListener());
 
     try
       {
         doc.insertString(0, "abcde\nabcdef\nabcde\n", null);
         doc.insertString(15, "abcdefghijklmn\n", null);
       }
     catch (BadLocationException ex)
       {
         h.fail("Unexpected BadLocationException");
       }
 
     DocumentEvent.ElementChange change = ev.getChange(doc.getDefaultRootElement());
 
-    Element[] added = change.getChildrenAdded();
     h.check(change.getIndex(), 2);
 
+    Element[] added = change.getChildrenAdded();
     h.check(added.length, 2);
     h.check(added[0].getStartOffset(), 13);
     h.check(added[0].getEndOffset(), 30);
     h.check(added[1].getStartOffset(), 30);
     h.check(added[1].getEndOffset(), 34);
 
     Element[] removed = change.getChildrenRemoved();
     h.check(removed.length, 1);
     h.check(removed[0].getStartOffset(), 13);
     h.check(removed[0].getEndOffset(), 34);
   }
+
+  private void test02(TestHarness h)
+  {
+    h.checkPoint("test02");
+    PlainDocument doc = new PlainDocument();
+    doc.addDocumentListener(new TestListener());
+
+    try
+      {
+        doc.insertString(0, "abcde\nabcdef\nabcde\n", null);
+        doc.insertString(13, "\nabc", null);
+      }
+    catch (BadLocationException ex)
+      {
+        h.fail("Unexpected BadLocationException");
+      }
+
+    DocumentEvent.ElementChange change = ev.getChange(doc.getDefaultRootElement());
+
+    h.check(change.getIndex(), 1);
+
+    Element[] added = change.getChildrenAdded();
+    h.check(added.length, 3);
+    h.check(added[0].getStartOffset(), 6);
+    h.check(added[0].getEndOffset(), 13);
+    h.check(added[1].getStartOffset(), 13);
+    h.check(added[1].getEndOffset(), 14);
+    h.check(added[2].getStartOffset(), 14);
+    h.check(added[2].getEndOffset(), 23);
+
+    Element[] removed = change.getChildrenRemoved();
+    h.check(removed.length, 2);
+    h.check(removed[0].getStartOffset(), 6);
+    h.check(removed[0].getEndOffset(), 17);
+    h.check(removed[1].getStartOffset(), 17);
+    h.check(removed[1].getEndOffset(), 23);
+  }
+
+  private void test03(TestHarness h)
+  {
+    h.checkPoint("test03");
+    PlainDocument doc = new PlainDocument();
+    doc.addDocumentListener(new TestListener());
+
+    try
+      {
+        doc.insertString(0, "abcd", null);
+        doc.insertString(0, "abcde\nabcdef\nabcde\n", null);
+      }
+    catch (BadLocationException ex)
+      {
+        h.fail("Unexpected BadLocationException");
+      }
+
+    DocumentEvent.ElementChange change = ev.getChange(doc.getDefaultRootElement());
+
+    h.check(change.getIndex(), 0);
+
+    Element[] added = change.getChildrenAdded();
+    h.check(added.length, 4);
+    h.check(added[0].getStartOffset(), 0);
+    h.check(added[0].getEndOffset(), 6);
+    h.check(added[1].getStartOffset(), 6);
+    h.check(added[1].getEndOffset(), 13);
+    h.check(added[2].getStartOffset(), 13);
+    h.check(added[2].getEndOffset(), 19);
+    h.check(added[3].getStartOffset(), 19);
+    h.check(added[3].getEndOffset(), 24);
+
+    Element[] removed = change.getChildrenRemoved();
+    h.check(removed.length, 1);
+    h.check(removed[0].getStartOffset(), 0);
+    h.check(removed[0].getEndOffset(), 24);
+  }
+  
 }

Attachment: signature.asc
Description: Dies ist ein digital signierter Nachrichtenteil


--- End Message ---

Attachment: signature.asc
Description: OpenPGP digital signature


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]