implements Testlet
{
public void test(TestHarness harness)
{
JTextArea textArea = new JTextArea ();
final TestHarness harness2 = harness;
((AbstractDocument)textArea.getDocument()).addDocumentListener(new DocumentListener(){
public void changedUpdate (DocumentEvent e)
{
}
public void insertUpdate (DocumentEvent e)
{
Element root = e.getDocument().getDefaultRootElement();
DocumentEvent.ElementChange ec = e.getChange(root);
Element[] childrenAdded = ec.getChildrenAdded();
Element[] childrenRemoved = ec.getChildrenRemoved();
harness2.checkPoint("insert update children added");
harness2.check(childrenAdded.length == 4);
harness2.check(childrenAdded[0].getStartOffset() == 0);
harness2.check(childrenAdded[0].getEndOffset() == 36);
harness2.check(childrenAdded[1].getStartOffset() == 36);
harness2.check(childrenAdded[1].getEndOffset() == 97);
harness2.check(childrenAdded[2].getStartOffset() == 97);
harness2.check(childrenAdded[2].getEndOffset() == 134);
harness2.check(childrenAdded[3].getStartOffset() == 134);
harness2.check(childrenAdded[3].getEndOffset() == 176);
harness2.checkPoint("insert update children removed");
harness2.check(childrenRemoved.length == 1);
harness2.check(childrenRemoved[0].getStartOffset() == 0);
harness2.check(childrenRemoved[0].getEndOffset() == 176);
}
public void removeUpdate (DocumentEvent e)
{
Element root = e.getDocument().getDefaultRootElement();
DocumentEvent.ElementChange ec = e.getChange(root);
Element[] childrenAdded = ec.getChildrenAdded();
Element[] childrenRemoved = ec.getChildrenRemoved();
harness2.checkPoint("remove update children added");
harness2.check(childrenAdded.length == 1);
harness2.check(childrenAdded[0].getStartOffset() == 0);
harness2.check(childrenAdded[0].getEndOffset() == 57);
harness2.checkPoint("remove udpate childrem removed");
harness2.check(childrenRemoved.length == 2);
harness2.check(childrenRemoved[0].getStartOffset() == 0);
harness2.check(childrenRemoved[0].getEndOffset() == 5);
harness2.check(childrenRemoved[1].getStartOffset() == 5);
harness2.check(childrenRemoved[1].getEndOffset() == 57);
}
});
textArea.setText("This is the text that we are adding\nIt has several lines, which should be several children added\nWhile only one child will be removed\nThat is, if the implementation is correct");
try
{