From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 31226 invoked by alias); 23 Aug 2005 09:57:35 -0000 Mailing-List: contact mauve-discuss-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: mauve-discuss-owner@sources.redhat.com Received: (qmail 31125 invoked by uid 22791); 23 Aug 2005 09:57:14 -0000 Received: from outmail128170.authsmtp.co.uk (HELO squirrel.dmpriest.net.uk) (62.13.128.170) by sourceware.org (qpsmtpd/0.30-dev) with ESMTP; Tue, 23 Aug 2005 09:57:14 +0000 Received: from [192.168.1.4] (host81-130-208-103.in-addr.btopenworld.com [81.130.208.103]) (authenticated bits=0) by squirrel.dmpriest.net.uk (8.13.3/8.13.3/Kp) with ESMTP id j7N9vAAV083950 for ; Tue, 23 Aug 2005 10:57:11 +0100 (BST) (envelope-from david.gilbert@object-refinery.com) Message-ID: <430B010D.5030802@object-refinery.com> Date: Tue, 23 Aug 2005 09:57:00 -0000 From: David Gilbert User-Agent: Mozilla Thunderbird 1.0.6 (X11/20050728) MIME-Version: 1.0 To: mauve-discuss@sources.redhat.com Subject: FYI: new tests for SwingPropertyChangeSupport Content-Type: multipart/mixed; boundary="------------070601090408040300010606" X-Server-Quench: 46bc5837-13bc-11da-a87f-001185d377ca X-Authentic-SMTP: 61633132333134.squirrel.dmpriest.net.uk:1.38/Kp X-Powered-By: AuthSMTP - http://www.authsmtp.com - Authenticated SMTP Mail Relay X-Report-SPAM: If SPAM / abuse - report it at: http://www.authsmtp.com/abuse X-Virus-Status: No virus detected - but ensure you scan with your own anti-virus system! X-SW-Source: 2005-q3/txt/msg00007.txt.bz2 This is a multi-part message in MIME format. --------------070601090408040300010606 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-length: 829 I added these tests for the SwingPropertyChangeSupport class: 2005-08-23 David Gilbert * 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 --------------070601090408040300010606 Content-Type: text/plain; name="diff.txt" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="diff.txt" Content-length: 21544 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 + +// 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 (null 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 + +// 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 (null 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 + +// 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 (null 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 + +// 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 (null 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 + +// 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 (null 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 + +// 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 (null 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 + } +} --------------070601090408040300010606--