I added 3 more tests for PlainDocument.insertUpdate() that show problems in our impl.
2006-06-22 Roman Kennke <[EMAIL PROTECTED]>
* 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 ([EMAIL PROTECTED])
*/
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);
+ }
+
}
signature.asc
Description: Dies ist ein digital signierter Nachrichtenteil
