This is the mail archive of the mauve-discuss@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]

FYI: new tests for SwingPropertyChangeSupport


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

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 
+  }
+}

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