* FYI: new tests for SwingPropertyChangeSupport
@ 2005-08-23 9:57 David Gilbert
0 siblings, 0 replies; only message in thread
From: David Gilbert @ 2005-08-23 9:57 UTC (permalink / raw)
To: mauve-discuss
[-- Attachment #1: Type: text/plain, Size: 829 bytes --]
I added these tests for the SwingPropertyChangeSupport class:
2005-08-23 David Gilbert <david.gilbert@object-refinery.com>
*
gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/addPropertyChangeListener.java:
new test;
*
gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/constructor.java:
new test;
*
gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/firePropertyChange.java:
new test;
*
gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/getPropertyChangeListeners.java:
new test;
*
gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/hasListeners.java:
new test;
*
gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/removePropertyChangeListener.java:
new test.
I also have a patch for Classpath to make all these tests pass.
Regards,
Dave Gilbert
[-- Attachment #2: diff.txt --]
[-- Type: text/plain, Size: 21544 bytes --]
Index: gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/addPropertyChangeListener.java
===================================================================
RCS file: gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/addPropertyChangeListener.java
diff -N gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/addPropertyChangeListener.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/addPropertyChangeListener.java 23 Aug 2005 09:49:41 -0000
@@ -0,0 +1,86 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// Mauve is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// Mauve is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with Mauve; see the file COPYING. If not, write to
+// the Free Software Foundation, 59 Temple Place - Suite 330,
+// Boston, MA 02111-1307, USA. */
+
+package gnu.testlet.javax.swing.event.SwingPropertyChangeSupport;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.event.SwingPropertyChangeSupport;
+
+/**
+ * Tests the addPropertyChangeListener() method in the
+ * {@link SwingPropertyChangeSupport} class.
+ */
+public class addPropertyChangeListener
+ implements Testlet, PropertyChangeListener {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ }
+
+ private void test1(TestHarness harness)
+ {
+ harness.checkPoint("(PropertyChangeListener)");
+ SwingPropertyChangeSupport s = new SwingPropertyChangeSupport(this);
+
+ // now add a listener
+ s.addPropertyChangeListener(this);
+ PropertyChangeListener[] listeners = s.getPropertyChangeListeners();
+ harness.check(listeners.length, 1);
+ harness.check(listeners[0], this);
+
+ // try adding a null listener - it gets silently ignored
+ s.addPropertyChangeListener(null);
+ listeners = s.getPropertyChangeListeners();
+ harness.check(listeners.length, 1);
+ }
+
+ private void test2(TestHarness harness)
+ {
+ harness.checkPoint("(String, PropertyChangeListener)");
+ SwingPropertyChangeSupport s = new SwingPropertyChangeSupport(this);
+
+ // now add a listener
+ s.addPropertyChangeListener("X", this);
+ PropertyChangeListener[] listeners = s.getPropertyChangeListeners("X");
+ harness.check(listeners.length, 1);
+ harness.check(listeners[0], this);
+
+ // try adding a null listener - it gets silently ignored
+ s.addPropertyChangeListener("X", null);
+ listeners = s.getPropertyChangeListeners("X");
+ harness.check(listeners.length, 1);
+ }
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ // do nothing
+ }
+}
Index: gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/constructor.java
===================================================================
RCS file: gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/constructor.java
diff -N gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/constructor.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/constructor.java 23 Aug 2005 09:49:41 -0000
@@ -0,0 +1,67 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// Mauve is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// Mauve is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with Mauve; see the file COPYING. If not, write to
+// the Free Software Foundation, 59 Temple Place - Suite 330,
+// Boston, MA 02111-1307, USA. */
+
+package gnu.testlet.javax.swing.event.SwingPropertyChangeSupport;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.event.SwingPropertyChangeSupport;
+
+/**
+ * Tests the constructor in the {@link SwingPropertyChangeSupport}
+ * class.
+ */
+public class constructor implements Testlet, PropertyChangeListener {
+
+ private PropertyChangeEvent event = null;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SwingPropertyChangeSupport s = new SwingPropertyChangeSupport(this);
+ s.addPropertyChangeListener(this);
+ s.firePropertyChange("X", false, true);
+ harness.check(this.event.getSource(), this);
+
+ // check null argument
+ boolean pass = false;
+ try
+ {
+ s = new SwingPropertyChangeSupport(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ this.event = e;
+ }
+}
Index: gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/firePropertyChange.java
===================================================================
RCS file: gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/firePropertyChange.java
diff -N gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/firePropertyChange.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/firePropertyChange.java 23 Aug 2005 09:49:41 -0000
@@ -0,0 +1,137 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// Mauve is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// Mauve is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with Mauve; see the file COPYING. If not, write to
+// the Free Software Foundation, 59 Temple Place - Suite 330,
+// Boston, MA 02111-1307, USA. */
+
+package gnu.testlet.javax.swing.event.SwingPropertyChangeSupport;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.event.SwingPropertyChangeSupport;
+
+/**
+ * Tests the firePropertyChange() methods in the
+ * {@link SwingPropertyChangeSupport} class.
+ */
+public class firePropertyChange
+ implements Testlet, PropertyChangeListener {
+
+ private PropertyChangeEvent lastEvent = null;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ test3(harness);
+ test4(harness);
+ }
+
+ private void test1(TestHarness harness)
+ {
+ harness.checkPoint("(PropertyChangeEvent)");
+ SwingPropertyChangeSupport s = new SwingPropertyChangeSupport(this);
+ s.addPropertyChangeListener(this);
+ PropertyChangeEvent e = new PropertyChangeEvent("SOURCE", "X", "Y", "Z");
+ s.firePropertyChange(e);
+ harness.check(this.lastEvent.getSource(), "SOURCE");
+ harness.check(this.lastEvent.getPropertyName(), "X");
+ harness.check(this.lastEvent.getOldValue(), "Y");
+ harness.check(this.lastEvent.getNewValue(), "Z");
+ this.lastEvent = null;
+ boolean pass = false;
+ try
+ {
+ s.firePropertyChange(null);
+ }
+ catch (NullPointerException npe)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void test2(TestHarness harness)
+ {
+ harness.checkPoint("(String, Object, Object)");
+ SwingPropertyChangeSupport s = new SwingPropertyChangeSupport("SOURCE");
+ s.addPropertyChangeListener(this);
+ s.firePropertyChange("X", "Y", "Z");
+ harness.check(this.lastEvent.getSource(), "SOURCE");
+ harness.check(this.lastEvent.getPropertyName(), "X");
+ harness.check(this.lastEvent.getOldValue(), "Y");
+ harness.check(this.lastEvent.getNewValue(), "Z");
+ this.lastEvent = null;
+
+ // if both Objects are equal and non-null, no event is generated
+ this.lastEvent = null;
+ s.firePropertyChange("X", "Z", "Z");
+ harness.check(this.lastEvent, null);
+
+ // the following should not throw any exceptions
+// s.firePropertyChange(null, "Y", "Z");
+// s.firePropertyChange("X", null, "Z");
+// s.firePropertyChange("X", "Y", null);
+ }
+
+ private void test3(TestHarness harness)
+ {
+ harness.checkPoint("(String, boolean, boolean)");
+ SwingPropertyChangeSupport s = new SwingPropertyChangeSupport("SOURCE");
+ s.addPropertyChangeListener(this);
+ s.firePropertyChange("X", false, true);
+ harness.check(this.lastEvent.getSource(), "SOURCE");
+ harness.check(this.lastEvent.getPropertyName(), "X");
+ harness.check(this.lastEvent.getOldValue(), Boolean.FALSE);
+ harness.check(this.lastEvent.getNewValue(), Boolean.TRUE);
+
+ // if both booleans are equal, no event is generated
+ this.lastEvent = null;
+ s.firePropertyChange("X", true, true);
+ harness.check(this.lastEvent, null);
+ }
+
+ private void test4(TestHarness harness)
+ {
+ harness.checkPoint("(String, int, int)");
+ SwingPropertyChangeSupport s = new SwingPropertyChangeSupport("SOURCE");
+ s.addPropertyChangeListener(this);
+ s.firePropertyChange("X", 12, 34);
+ harness.check(this.lastEvent.getSource(), "SOURCE");
+ harness.check(this.lastEvent.getPropertyName(), "X");
+ harness.check(this.lastEvent.getOldValue(), new Integer(12));
+ harness.check(this.lastEvent.getNewValue(), new Integer(34));
+
+ // if both ints are equal, no event is generated
+ this.lastEvent = null;
+ s.firePropertyChange("X", 99, 99);
+ harness.check(this.lastEvent, null);
+ }
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ this.lastEvent = e;
+ }
+}
Index: gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/getPropertyChangeListeners.java
===================================================================
RCS file: gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/getPropertyChangeListeners.java
diff -N gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/getPropertyChangeListeners.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/getPropertyChangeListeners.java 23 Aug 2005 09:49:41 -0000
@@ -0,0 +1,91 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// Mauve is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// Mauve is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with Mauve; see the file COPYING. If not, write to
+// the Free Software Foundation, 59 Temple Place - Suite 330,
+// Boston, MA 02111-1307, USA. */
+
+package gnu.testlet.javax.swing.event.SwingPropertyChangeSupport;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeListenerProxy;
+
+import javax.swing.event.SwingPropertyChangeSupport;
+
+/**
+ * Tests the getPropertyChangeListeners() method in the
+ * {@link SwingPropertyChangeSupport} class.
+ */
+public class getPropertyChangeListeners
+ implements Testlet, PropertyChangeListener {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ }
+
+ private void test1(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ SwingPropertyChangeSupport s = new SwingPropertyChangeSupport(this);
+ PropertyChangeListener[] listeners = s.getPropertyChangeListeners();
+ harness.check(listeners.length, 0);
+
+ // now add a listener
+ s.addPropertyChangeListener(this);
+ listeners = s.getPropertyChangeListeners();;
+ harness.check(listeners.length, 1);
+ harness.check(listeners[0], this);
+
+ // listeners for specific properties should show up in the list wrapped
+ // in PropertyChangeListenerProxy instances
+ s.addPropertyChangeListener("X", this);
+ listeners = s.getPropertyChangeListeners();
+ harness.check(listeners.length, 2);
+ PropertyChangeListenerProxy proxy
+ = (PropertyChangeListenerProxy) listeners[1];
+ harness.check(proxy.getPropertyName(), "X");
+ harness.check(proxy.getListener(), this);
+ }
+
+ private void test2(TestHarness harness)
+ {
+ harness.checkPoint("(String)");
+ SwingPropertyChangeSupport s = new SwingPropertyChangeSupport(this);
+ PropertyChangeListener[] listeners = s.getPropertyChangeListeners("X");
+ harness.check(listeners.length, 0);
+
+ // now add a listener
+ s.addPropertyChangeListener("X", this);
+ listeners = s.getPropertyChangeListeners("X");
+ harness.check(listeners.length, 1);
+ harness.check(listeners[0], this);
+ }
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ // do nothing
+ }
+}
Index: gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/hasListeners.java
===================================================================
RCS file: gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/hasListeners.java
diff -N gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/hasListeners.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/hasListeners.java 23 Aug 2005 09:49:41 -0000
@@ -0,0 +1,75 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// Mauve is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// Mauve is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with Mauve; see the file COPYING. If not, write to
+// the Free Software Foundation, 59 Temple Place - Suite 330,
+// Boston, MA 02111-1307, USA. */
+
+package gnu.testlet.javax.swing.event.SwingPropertyChangeSupport;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.event.SwingPropertyChangeSupport;
+
+/**
+ * Tests the hasListeners() method in the {@link SwingPropertyChangeSupport}
+ * class.
+ */
+public class hasListeners implements Testlet, PropertyChangeListener {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SwingPropertyChangeSupport s = new SwingPropertyChangeSupport(this);
+ harness.check(s.hasListeners("X"), false);
+
+ // add a listener for all events
+ s.addPropertyChangeListener(this);
+ harness.check(s.hasListeners("X"));
+ s.removePropertyChangeListener(this);
+ harness.check(s.hasListeners("X"), false);
+
+ // add a listener for a specific event
+ s.addPropertyChangeListener("X", this);
+ harness.check(s.hasListeners("X"), true);
+ s.removePropertyChangeListener("X", this);
+ harness.check(s.hasListeners("X"), false);
+
+ // check null argument
+ boolean pass = false;
+ try
+ {
+ s.hasListeners(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ // do nothing
+ }
+}
Index: gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/removePropertyChangeListener.java
===================================================================
RCS file: gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/removePropertyChangeListener.java
diff -N gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/removePropertyChangeListener.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/removePropertyChangeListener.java 23 Aug 2005 09:49:41 -0000
@@ -0,0 +1,110 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// Mauve is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// Mauve is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with Mauve; see the file COPYING. If not, write to
+// the Free Software Foundation, 59 Temple Place - Suite 330,
+// Boston, MA 02111-1307, USA. */
+
+package gnu.testlet.javax.swing.event.SwingPropertyChangeSupport;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.event.SwingPropertyChangeSupport;
+
+/**
+ * Tests the removePropertyChangeListener() methods in the
+ * {@link SwingPropertyChangeSupport} class.
+ */
+public class removePropertyChangeListener
+ implements Testlet, PropertyChangeListener {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ }
+
+ private void test1(TestHarness harness)
+ {
+ harness.checkPoint("(PropertyChangeListener)");
+ SwingPropertyChangeSupport s = new SwingPropertyChangeSupport(this);
+
+ // now add a listener
+ s.addPropertyChangeListener(this);
+ PropertyChangeListener[] listeners = s.getPropertyChangeListeners();
+ harness.check(listeners.length, 1);
+ harness.check(listeners[0], this);
+
+ // remove it again
+ s.removePropertyChangeListener(this);
+ listeners = s.getPropertyChangeListeners();
+ harness.check(listeners.length, 0);
+
+ // remove a listener that doesn't exist
+ s.removePropertyChangeListener(this);
+
+ // try a null argument
+ s.removePropertyChangeListener(null);
+ }
+
+ private void test2(TestHarness harness)
+ {
+ harness.checkPoint("(String, PropertyChangeListener)");
+ SwingPropertyChangeSupport s = new SwingPropertyChangeSupport(this);
+
+ // now add a listener
+ s.addPropertyChangeListener("X", this);
+ PropertyChangeListener[] listeners = s.getPropertyChangeListeners("X");
+ harness.check(listeners.length, 1);
+ harness.check(listeners[0], this);
+
+ // remove it again
+ s.removePropertyChangeListener("X", this);
+ listeners = s.getPropertyChangeListeners("X");
+ harness.check(listeners.length, 0);
+
+ // remove a listener that doesn't exist
+ s.removePropertyChangeListener("X", this);
+
+ // try a null argument 1
+ boolean pass = false;
+ try
+ {
+ s.removePropertyChangeListener(null, this);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try a null argument 2
+ s.removePropertyChangeListener("X", null);
+ }
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ // do nothing
+ }
+}
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2005-08-23 9:57 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-08-23 9:57 FYI: new tests for SwingPropertyChangeSupport David Gilbert
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).