You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by ml...@apache.org on 2006/06/08 05:40:30 UTC
svn commit: r412641 [18/32] - in
/incubator/harmony/enhanced/classlib/trunk/modules/beans/src:
main/java/java/beans/ main/java/java/beans/beancontext/
test/java-internal/java/beans/beancontext/
test/java/org/apache/harmony/beans/tests/ test/java/org/ap...
Modified: incubator/harmony/enhanced/classlib/trunk/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/PropertyChangeSupportTest.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/PropertyChangeSupportTest.java?rev=412641&r1=412640&r2=412641&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/PropertyChangeSupportTest.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/PropertyChangeSupportTest.java Wed Jun 7 20:40:24 2006
@@ -1,1517 +1,1517 @@
-/* Copyright 2005 The Apache Software Foundation or its licensors, as applicable
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.harmony.beans.tests.java.beans;
-
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-import java.beans.PropertyChangeListenerProxy;
-import java.beans.PropertyChangeSupport;
-import java.io.Serializable;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-
-import java.util.Arrays;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-import junit.textui.TestRunner;
-import tests.util.SerializationTester;
-
-import org.apache.harmony.beans.tests.java.beans.auxiliary.SerializablePropertyChangeListener;
-import org.apache.harmony.beans.tests.java.beans.auxiliary.NonSerializablePropertyChangeListener;
-
-/**
- * Test class PropertyeChangeSupport.
- */
-public class PropertyChangeSupportTest extends TestCase {
-
- /*
- * Test the constructor with a normal parameter.
- */
- public void testConstructor_Normal() {
- Object src = new Object();
- new PropertyChangeSupport(src);
- }
-
- /*
- * Test the method addPropertyChangeListener(PropertyeChangeListener) with a
- * normal listener parameter.
- */
- public void testAddPropertyChangeListener_PropertyChangeListener_Normal() {
- Object src = new Object();
- PropertyChangeSupport sup = new PropertyChangeSupport(src);
- PropertyChangeListener l1 = new MockPropertyChangeListener();
- PropertyChangeListener l2 = new MockPropertyChangeListener();
- PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp",
- l2);
- PropertyChangeListener l4 = new PropertyChangeListenerProxy("myProp",
- l3);
-
- sup.addPropertyChangeListener(l1);
-
- assertEquals(1, sup.getPropertyChangeListeners().length);
- assertSame(l1, sup.getPropertyChangeListeners()[0]);
-
- sup.removePropertyChangeListener(l1);
- sup.addPropertyChangeListener(l3);
- assertEquals(1, sup.getPropertyChangeListeners().length);
- assertSame(l2, ((PropertyChangeListenerProxy) sup
- .getPropertyChangeListeners()[0]).getListener());
- assertNotSame(l3, sup.getPropertyChangeListeners()[0]);
-
- sup.removePropertyChangeListener(sup.getPropertyChangeListeners()[0]);
- assertEquals(0, sup.getPropertyChangeListeners().length);
- sup.addPropertyChangeListener(l4);
- assertNotSame(l3, ((PropertyChangeListenerProxy) sup
- .getPropertyChangeListeners()[0]).getListener());
- assertNotSame(l4, sup.getPropertyChangeListeners()[0]);
- assertSame(
- l2,
- ((PropertyChangeListenerProxy) ((PropertyChangeListenerProxy) sup
- .getPropertyChangeListeners()[0]).getListener())
- .getListener());
- }
-
- /*
- * Test the method addPropertyChangeListener(PropertyeChangeListener) with a
- * null listener parameter.
- */
- public void testAddPropertyChangeListener_PropertyChangeListener_Null() {
- Object src = new Object();
- PropertyChangeSupport sup = new PropertyChangeSupport(src);
-
- sup.addPropertyChangeListener(null);
- PropertyChangeListener[] listeners = sup.getPropertyChangeListeners();
- assertEquals(1, listeners.length);
- assertSame(null, listeners[0]);
- }
-
- /*
- * Test the method addPropertyChangeListener(PropertyeChangeListener) with a
- * listener parameter that has already been registered.
- */
- public void testAddPropertyChangeListener_PropertyChangeListener_Duplicate() {
- Object src = new Object();
- PropertyChangeSupport sup = new PropertyChangeSupport(src);
- PropertyChangeListener l1 = new MockPropertyChangeListener();
-
- sup.addPropertyChangeListener(l1);
- sup.addPropertyChangeListener(l1);
-
- PropertyChangeListener[] listeners = sup.getPropertyChangeListeners();
- assertEquals(2, listeners.length);
- assertSame(l1, listeners[0]);
- assertSame(l1, listeners[1]);
- }
-
- /*
- * Test the method addPropertyChangeListener(PropertyeChangeListener,
- * String) with a normal listener parameter and property name parameter.
- */
- public void testAddPropertyChangeListener_PropertyChangeListener_String_Normal() {
- Object src = new Object();
- PropertyChangeSupport sup = new PropertyChangeSupport(src);
- PropertyChangeListener l1 = new MockPropertyChangeListener();
- PropertyChangeListener l2 = new MockPropertyChangeListener();
- PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp",
- l2);
-
- sup.addPropertyChangeListener("myProp2", l1);
-
- PropertyChangeListener[] listeners = sup.getPropertyChangeListeners();
- assertEquals(1, listeners.length);
- assertSame(l1, ((PropertyChangeListenerProxy) listeners[0])
- .getListener());
-
- sup.removePropertyChangeListener(listeners[0]);
- sup.addPropertyChangeListener("myProp3", l3);
- listeners = sup.getPropertyChangeListeners();
- assertEquals(1, listeners.length);
- // pay attention to this recursive proxy
- assertNotSame(l3, ((PropertyChangeListenerProxy) listeners[0])
- .getListener());
- assertNotSame(l3, ((PropertyChangeListenerProxy) listeners[0]));
- assertSame(
- l2,
- ((PropertyChangeListenerProxy) ((PropertyChangeListenerProxy) listeners[0])
- .getListener()).getListener());
-
- listeners = sup.getPropertyChangeListeners("myProp");
- assertEquals(0, listeners.length);
-
- listeners = sup.getPropertyChangeListeners("myProp3");
- assertEquals(1, listeners.length);
- // pay attention to this recursive proxy
- assertNotSame(l3, ((PropertyChangeListenerProxy) listeners[0])
- .getListener());
- assertNotSame(l3, ((PropertyChangeListenerProxy) listeners[0]));
- assertSame(l2, ((PropertyChangeListenerProxy) listeners[0])
- .getListener());
-
- }
-
- /*
- * Test the method addPropertyChangeListener(PropertyeChangeListener,
- * String) with a null listener parameter and a normal property name
- * parameter.
- */
- public void testAddPropertyChangeListener_PropertyChangeListener_String_NullListener() {
- Object src = new Object();
- PropertyChangeSupport sup = new PropertyChangeSupport(src);
-
- sup.addPropertyChangeListener("myProp", null);
-
- PropertyChangeListener[] listeners = sup.getPropertyChangeListeners();
- assertEquals(1, listeners.length);
- assertSame(null, ((PropertyChangeListenerProxy) listeners[0])
- .getListener());
-
- PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp",
- null);
- assertEquals(1, listeners.length);
- assertSame(null, ((PropertyChangeListenerProxy) listeners[0])
- .getListener());
- }
-
- /*
- * Test the method addPropertyChangeListener(PropertyeChangeListener,
- * String) with a normal listener parameter and a null property name
- * parameter.
- */
- public void testAddPropertyChangeListener_PropertyChangeListener_String_NullProperty() {
- Object src = new Object();
- PropertyChangeSupport sup = new PropertyChangeSupport(src);
- PropertyChangeListener l1 = new MockPropertyChangeListener();
- PropertyChangeListener l2 = new MockPropertyChangeListener();
- PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp",
- l2);
-
- try {
- sup.addPropertyChangeListener(null, l1);
- fail("Should throw NullPointerException!");
- } catch (NullPointerException ex) {
- // expected
- }
-
- try {
- sup.addPropertyChangeListener(null, l3);
- fail("Should throw NullPointerException!");
- } catch (NullPointerException ex) {
- // expected
- }
-
- l3 = new PropertyChangeListenerProxy(null, l2);
- try {
- sup.addPropertyChangeListener(l3);
- fail("Should throw NullPointerException!");
- } catch (NullPointerException ex) {
- // expected
- }
- }
-
- /*
- * Test the method addPropertyChangeListener(PropertyeChangeListener,
- * String) with a listener parameter that has already been registered for
- * the named property.
- */
- public void testAddPropertyChangeListener_PropertyChangeListener_String_Duplicate() {
- Object src = new Object();
- PropertyChangeSupport sup = new PropertyChangeSupport(src);
- PropertyChangeListener l1 = new MockPropertyChangeListener();
- PropertyChangeListener l2 = new MockPropertyChangeListener();
- PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp",
- l2);
-
- sup.addPropertyChangeListener("myProp2", l1);
- sup.addPropertyChangeListener("myProp2", l1);
-
- PropertyChangeListener[] listeners = sup.getPropertyChangeListeners();
- assertEquals(2, listeners.length);
- assertSame(l1, ((PropertyChangeListenerProxy) listeners[0])
- .getListener());
- assertSame(l1, ((PropertyChangeListenerProxy) listeners[1])
- .getListener());
-
- sup.removePropertyChangeListener(listeners[0]);
- sup.removePropertyChangeListener(listeners[1]);
- sup.addPropertyChangeListener("myProp3", l3);
- sup.addPropertyChangeListener("myProp3", l3);
- listeners = sup.getPropertyChangeListeners();
- assertEquals(2, listeners.length);
- assertSame(
- l2,
- ((PropertyChangeListenerProxy) ((PropertyChangeListenerProxy) listeners[0])
- .getListener()).getListener());
- assertSame(
- l2,
- ((PropertyChangeListenerProxy) ((PropertyChangeListenerProxy) listeners[1])
- .getListener()).getListener());
- }
-
- /*
- * Test the method removePropertyChangeListener(PropertyeChangeListener)
- * with a normal listener parameter.
- */
- public void testRemovePropertyChangeListener_PropertyChangeListener_Normal() {
- Object src = new Object();
- PropertyChangeSupport sup = new PropertyChangeSupport(src);
- PropertyChangeListener l1 = new MockPropertyChangeListener();
- PropertyChangeListener l2 = new MockPropertyChangeListener();
- PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp",
- l2);
-
- sup.addPropertyChangeListener(l1);
-
- PropertyChangeListener[] listeners = sup.getPropertyChangeListeners();
- assertEquals(1, listeners.length);
- sup.removePropertyChangeListener(l1);
- listeners = sup.getPropertyChangeListeners();
- assertEquals(0, listeners.length);
- sup.addPropertyChangeListener(l3);
- listeners = sup.getPropertyChangeListeners();
- assertEquals(1, listeners.length);
- sup.removePropertyChangeListener(l3);
- listeners = sup.getPropertyChangeListeners();
- assertEquals(0, listeners.length);
- sup.addPropertyChangeListener("myProp3", l2);
- listeners = sup.getPropertyChangeListeners();
- assertEquals(1, listeners.length);
- sup.removePropertyChangeListener(l2);
- listeners = sup.getPropertyChangeListeners();
- assertEquals(1, listeners.length);
- sup.removePropertyChangeListener(listeners[0]);
- listeners = sup.getPropertyChangeListeners();
- assertEquals(0, listeners.length);
- }
-
- /*
- * Test the method removePropertyChangeListener(PropertyeChangeListener)
- * with a null listener parameter.
- */
- public void testRemovePropertyChangeListener_PropertyChangeListener_Null() {
- Object src = new Object();
- PropertyChangeSupport sup = new PropertyChangeSupport(src);
- sup.removePropertyChangeListener(null);
- assertEquals(0, sup.getPropertyChangeListeners().length);
- sup.addPropertyChangeListener(null);
- assertEquals(1, sup.getPropertyChangeListeners().length);
- sup.removePropertyChangeListener(null);
- assertEquals(0, sup.getPropertyChangeListeners().length);
- }
-
- /*
- * Test the method removePropertyChangeListener(PropertyeChangeListener)
- * with a non-registered listener parameter.
- */
- public void testRemovePropertyChangeListener_PropertyChangeListener_NonRegistered() {
- Object src = new Object();
- PropertyChangeSupport sup = new PropertyChangeSupport(src);
- sup.removePropertyChangeListener(new MockPropertyChangeListener());
- assertEquals(0, sup.getPropertyChangeListeners().length);
- }
-
- /*
- * Test the method removePropertyChangeListener(PropertyeChangeListener,
- * String) when a listener for all properties has been registered.
- */
- public void testRemovePropertyChangeListener_PropertyChangeListener_String_AllRegistered() {
- Object src = new Object();
- PropertyChangeSupport sup = new PropertyChangeSupport(src);
- Object newValue = new Object();
- Object oldValue = new Object();
-
- MockPropertyChangeListener l1 = new MockPropertyChangeListener(src,
- "myProp", oldValue, newValue);
-
- sup.addPropertyChangeListener(l1);
-
- sup.removePropertyChangeListener("myProp", l1);
- assertEquals(1, sup.getPropertyChangeListeners().length);
- assertEquals(0, sup.getPropertyChangeListeners("myProp").length);
- sup.firePropertyChange("myProp", oldValue, newValue);
- l1.assertCalled();
- }
-
- /*
- * Test the method removePropertyChangeListener(PropertyeChangeListener,
- * String) when a listener for the named property has been registered.
- */
- public void testRemovePropertyChangeListener_PropertyChangeListener_String_PropertyRegistered() {
- Object src = new Object();
- PropertyChangeSupport sup = new PropertyChangeSupport(src);
- PropertyChangeListener l1 = new MockPropertyChangeListener();
- sup.addPropertyChangeListener("myProp", l1);
- assertEquals(1, sup.getPropertyChangeListeners().length);
-
- sup.removePropertyChangeListener("myProp", l1);
- assertEquals(0, sup.getPropertyChangeListeners().length);
- assertEquals(0, sup.getPropertyChangeListeners("myProp").length);
-
- PropertyChangeListener l2 = new MockPropertyChangeListener();
- PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp",
- l2);
- sup.addPropertyChangeListener(l3);
- assertEquals(1, sup.getPropertyChangeListeners().length);
- sup.removePropertyChangeListener("myProp", l2);
- assertEquals(0, sup.getPropertyChangeListeners().length);
- assertEquals(0, sup.getPropertyChangeListeners("myProp").length);
- }
-
- /*
- * Test the method removePropertyChangeListener(PropertyeChangeListener,
- * String) with a non-registered listener parameter.
- */
- public void testRemovePropertyChangeListener_PropertyChangeListener_String_NonRegistered() {
- Object src = new Object();
- PropertyChangeSupport sup = new PropertyChangeSupport(src);
- sup.removePropertyChangeListener("myProp",
- new MockPropertyChangeListener());
- assertEquals(0, sup.getPropertyChangeListeners().length);
- }
-
- /*
- * Test the method removePropertyChangeListener(PropertyeChangeListener,
- * String) with a null listener parameter.
- */
- public void testRemovePropertyChangeListener_PropertyChangeListener_String_NullListener() {
- Object src = new Object();
- PropertyChangeSupport sup = new PropertyChangeSupport(src);
-
- sup.removePropertyChangeListener("myProp", null);
- assertEquals(0, sup.getPropertyChangeListeners().length);
- sup.addPropertyChangeListener("myProp", null);
- assertEquals(1, sup.getPropertyChangeListeners().length);
- sup.removePropertyChangeListener("myProp", null);
- assertEquals(0, sup.getPropertyChangeListeners().length);
- }
-
- /*
- * Test the method removePropertyChangeListener(PropertyeChangeListener,
- * String) with a null property name parameter.
- */
- public void testRemovePropertyChangeListener_PropertyChangeListener_String_NullProperty() {
- Object src = new Object();
- PropertyChangeSupport sup = new PropertyChangeSupport(src);
- // sup
- // .removePropertyChangeListener(null,
- // new MockPropertyChangeListener());
- sup.addPropertyChangeListener("myProp",
- new MockPropertyChangeListener());
- try {
- sup.removePropertyChangeListener(null,
- new MockPropertyChangeListener());
- fail("Should throw NullPointerException!");
- } catch (NullPointerException ex) {
- // expected
- }
- }
-
- /*
- * Test the method getPropertyChangeListeners() when there is one listener
- * for all properties and one for a named property.
- */
- public void testGetPropertyChangeListener_Normal() {
- Object src = new Object();
- PropertyChangeSupport sup = new PropertyChangeSupport(src);
- PropertyChangeListener l1 = new MockPropertyChangeListener();
- PropertyChangeListener l2 = new MockPropertyChangeListener();
- PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp",
- l2);
- PropertyChangeListener l4 = new MockPropertyChangeListener();
-
- sup.addPropertyChangeListener(l1);
- sup.addPropertyChangeListener(l3);
- sup.addPropertyChangeListener("myProp2", l4);
-
- assertEquals(3, sup.getPropertyChangeListeners().length);
- }
-
- /*
- * Test the method getPropertyChangeListeners() when there is no listeners.
- */
- public void testGetPropertyChangeListener_Empty() {
- Object src = new Object();
- PropertyChangeSupport sup = new PropertyChangeSupport(src);
- assertEquals(0, sup.getPropertyChangeListeners().length);
- }
-
- /*
- * Test the method getPropertyChangeListeners(String) when there is one
- * listener for all properties and one for the named property and a third
- * for another named property.
- */
- public void testGetPropertyChangeListener_String_Normal() {
- Object src = new Object();
- PropertyChangeSupport sup = new PropertyChangeSupport(src);
- PropertyChangeListener l1 = new MockPropertyChangeListener();
- PropertyChangeListener l2 = new MockPropertyChangeListener();
- PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp",
- l2);
- PropertyChangeListener l4 = new MockPropertyChangeListener();
-
- sup.addPropertyChangeListener(l1);
- sup.addPropertyChangeListener(l3);
- sup.addPropertyChangeListener("myProp2", l4);
-
- assertEquals(1, sup.getPropertyChangeListeners("myProp").length);
- assertSame(l2, sup.getPropertyChangeListeners("myProp")[0]);
- sup.addPropertyChangeListener("myProp",
- new MockPropertyChangeListener());
- assertEquals(2, sup.getPropertyChangeListeners("myProp").length);
- }
-
- /*
- * Test the method getPropertyChangeListeners(String) when there is no
- * listener for the named property but there is one for another named
- * property.
- */
- public void testGetPropertyChangeListener_String_None() {
- Object src = new Object();
- PropertyChangeSupport sup = new PropertyChangeSupport(src);
- PropertyChangeListener l1 = new MockPropertyChangeListener();
- PropertyChangeListener l2 = new MockPropertyChangeListener();
- PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp2",
- l2);
- PropertyChangeListener l4 = new MockPropertyChangeListener();
-
- sup.addPropertyChangeListener(l1);
- sup.addPropertyChangeListener(l3);
- sup.addPropertyChangeListener("myProp3", l4);
-
- assertEquals(0, sup.getPropertyChangeListeners("myProp").length);
- }
-
- /*
- * Test the method getPropertyChangeListeners(String) with a null parameter.
- */
- public void testGetPropertyChangeListener_String_Null() {
- Object src = new Object();
- PropertyChangeSupport sup = new PropertyChangeSupport(src);
- // sup.getPropertyChangeListeners(null);
- sup.addPropertyChangeListener("myProp",
- new MockPropertyChangeListener());
- try {
- sup.getPropertyChangeListeners(null);
- fail("Should throw NullPointerException!");
- } catch (NullPointerException ex) {
- // expected
- }
- }
-
- /*
- * Test the method hasListeners(String) when there is one listener for all
- * properties.
- */
- public void testHasListener_AllRegistered() {
- Object src = new Object();
- PropertyChangeSupport sup = new PropertyChangeSupport(src);
- PropertyChangeListener l1 = new MockPropertyChangeListener();
- PropertyChangeListener l2 = new MockPropertyChangeListener();
- PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp",
- l2);
-
- assertFalse(sup.hasListeners("myProp"));
- sup.addPropertyChangeListener(l1);
- assertTrue(sup.hasListeners("myProp"));
- sup.removePropertyChangeListener(l1);
- assertFalse(sup.hasListeners("myProp"));
- sup.addPropertyChangeListener(l3);
- assertTrue(sup.hasListeners("myProp"));
- }
-
- /*
- * Test the method hasListeners(String) when there is one listener for the
- * named property.
- */
- public void testHasListener_PropertyRegistered() {
- Object src = new Object();
- PropertyChangeSupport sup = new PropertyChangeSupport(src);
- PropertyChangeListener l1 = new MockPropertyChangeListener();
- PropertyChangeListener l2 = new MockPropertyChangeListener();
- PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp2",
- l2);
-
- assertFalse(sup.hasListeners("myProp"));
- sup.addPropertyChangeListener("myProP", l1);
- assertFalse(sup.hasListeners("myProp"));
- sup.addPropertyChangeListener("myProp", l2);
- assertTrue(sup.hasListeners("myProp"));
- sup.removePropertyChangeListener("myProp", l2);
- assertFalse(sup.hasListeners("myProp"));
- sup.addPropertyChangeListener("myProp", l3);
- assertFalse(sup.hasListeners("myProp"));
- }
-
- /*
- * Test the method hasListeners(String) when there is no listeners.
- */
- public void testHasListener_None() {
- Object src = new Object();
- PropertyChangeSupport sup = new PropertyChangeSupport(src);
- assertFalse(sup.hasListeners("myProp"));
- }
-
- /*
- * Test the method hasListeners(String) with a null parameter.
- */
- public void testHasListener_Null() {
- Object src = new Object();
- PropertyChangeSupport sup = new PropertyChangeSupport(src);
- // assertFalse(sup.hasListeners(null));
-
- PropertyChangeListener l1 = new MockPropertyChangeListener();
- sup.addPropertyChangeListener("myProP", l1);
- try {
- sup.hasListeners(null);
- fail("Should throw NullPointerException!");
- } catch (NullPointerException ex) {
- // expected
- }
- }
-
- /*
- * Test the method firePropertyChange(String, Object, Object) with normal
- * parameters, when there is no listeners.
- */
- public void testFirePropertyChange_Object_NoListeners() {
- Object src = new Object();
- PropertyChangeSupport sup = new PropertyChangeSupport(src);
- sup.firePropertyChange("myProp", new Object(), new Object());
- }
-
- /*
- * Test the method firePropertyChange(String, Object, Object) with normal
- * parameters, when there is a listener for all properties and another for
- * the named property.
- */
- public void testFirePropertyChange_Object_Normal() {
- Object src = new Object();
- PropertyChangeSupport sup = new PropertyChangeSupport(src);
- Object newValue = new Object();
- Object oldValue = new Object();
-
- MockPropertyChangeListener l1 = new MockPropertyChangeListener(src,
- "myProp", oldValue, newValue);
- MockPropertyChangeListener l2 = new MockPropertyChangeListener(src,
- "myProp", oldValue, newValue);
- PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp",
- l2);
- MockPropertyChangeListener l4 = new MockPropertyChangeListener(src,
- "myProp", oldValue, newValue);
- sup.addPropertyChangeListener(l1);
- sup.addPropertyChangeListener(l3);
- sup.addPropertyChangeListener("myProp", l4);
-
- sup.firePropertyChange("myProp", oldValue, newValue);
- l1.assertCalled();
- l2.assertCalled();
- l4.assertCalled();
- }
-
- /*
- * Test the method firePropertyChange(String, Object, Object) with equal old
- * and new non-null values, when there is a listener for all properties and
- * another for the named property.
- */
- public void testFirePropertyChange_Object_EqualValues() {
- Object src = new Object();
- PropertyChangeSupport sup = new PropertyChangeSupport(src);
- Object newValue = new Object();
- Object oldValue = newValue;
-
- MockPropertyChangeListener l1 = new MockPropertyChangeListener(src,
- "myProp", oldValue, newValue);
- MockPropertyChangeListener l2 = new MockPropertyChangeListener(src,
- "myProp", oldValue, newValue);
- PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp",
- l2);
- MockPropertyChangeListener l4 = new MockPropertyChangeListener(src,
- "myProp", oldValue, newValue);
- sup.addPropertyChangeListener(l1);
- sup.addPropertyChangeListener(l3);
- sup.addPropertyChangeListener("myProp", l4);
-
- sup.firePropertyChange("myProp", oldValue, newValue);
- l1.assertNotCalled();
- l2.assertNotCalled();
- l4.assertNotCalled();
- }
-
- /*
- * Test the method firePropertyChange(String, Object, Object) with null old
- * and new values, when there is a listener for all properties and another
- * for the named property.
- */
- public void testFirePropertyChange_Object_NullValues() {
- Object src = new Object();
- PropertyChangeSupport sup = new PropertyChangeSupport(src);
- Object newValue = null;
- Object oldValue = null;
-
- MockPropertyChangeListener l1 = new MockPropertyChangeListener(src,
- "myProp", oldValue, newValue);
- MockPropertyChangeListener l2 = new MockPropertyChangeListener(src,
- "myProp", oldValue, newValue);
- PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp",
- l2);
- MockPropertyChangeListener l4 = new MockPropertyChangeListener(src,
- "myProp", oldValue, newValue);
- sup.addPropertyChangeListener(l1);
- sup.addPropertyChangeListener(l3);
- sup.addPropertyChangeListener("myProp", l4);
-
- sup.firePropertyChange("myProp", oldValue, newValue);
- l1.assertCalled();
- l2.assertCalled();
- l4.assertCalled();
- }
-
- /*
- * Test the method firePropertyChange(String, Object, Object) with a
- * non-null old value and a null new value, when there is a listener for all
- * properties and another for the named property.
- */
- public void testFirePropertyChange_Object_NullNewValue() {
- Object src = new Object();
- PropertyChangeSupport sup = new PropertyChangeSupport(src);
- Object newValue = null;
- Object oldValue = new Object();
-
- MockPropertyChangeListener l1 = new MockPropertyChangeListener(src,
- "myProp", oldValue, newValue);
- MockPropertyChangeListener l2 = new MockPropertyChangeListener(src,
- "myProp", oldValue, newValue);
- PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp",
- l2);
- MockPropertyChangeListener l4 = new MockPropertyChangeListener(src,
- "myProp", oldValue, newValue);
- sup.addPropertyChangeListener(l1);
- sup.addPropertyChangeListener(l3);
- sup.addPropertyChangeListener("myProp", l4);
-
- sup.firePropertyChange("myProp", oldValue, newValue);
- l1.assertCalled();
- l2.assertCalled();
- l4.assertCalled();
- }
-
- /*
- * Test the method firePropertyChange(String, Object, Object) with a null
- * old value and a non-null new value, when there is a listener for all
- * properties and another for the named property.
- */
- public void testFirePropertyChange_Object_NullOldValue() {
- Object src = new Object();
- PropertyChangeSupport sup = new PropertyChangeSupport(src);
- Object newValue = new Object();
- Object oldValue = null;
-
- MockPropertyChangeListener l1 = new MockPropertyChangeListener(src,
- "myProp", oldValue, newValue);
- MockPropertyChangeListener l2 = new MockPropertyChangeListener(src,
- "myProp", oldValue, newValue);
- PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp",
- l2);
- MockPropertyChangeListener l4 = new MockPropertyChangeListener(src,
- "myProp", oldValue, newValue);
- sup.addPropertyChangeListener(l1);
- sup.addPropertyChangeListener(l3);
- sup.addPropertyChangeListener("myProp", l4);
-
- sup.firePropertyChange("myProp", oldValue, newValue);
- l1.assertCalled();
- l2.assertCalled();
- l4.assertCalled();
- }
-
- /*
- * Test the method firePropertyChange(String, Object, Object) with a null
- * property name parameter.
- */
- public void testFirePropertyChange_Object_NullProperty() {
- Object src = new Object();
- PropertyChangeSupport sup = new PropertyChangeSupport(src);
- Object newValue = new Object();
- Object oldValue = new Object();
-
- MockPropertyChangeListener l1 = new MockPropertyChangeListener(src,
- null, oldValue, newValue);
- MockPropertyChangeListener l2 = new MockPropertyChangeListener(src,
- null, oldValue, newValue);
- PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp",
- l2);
- MockPropertyChangeListener l4 = new MockPropertyChangeListener(src,
- null, oldValue, newValue);
- sup.addPropertyChangeListener(l1);
- sup.addPropertyChangeListener(l3);
- sup.addPropertyChangeListener("myProp", l4);
-
- sup.firePropertyChange(null, oldValue, newValue);
- l1.assertCalled();
- l2.assertNotCalled();
- l4.assertNotCalled();
- }
-
- /*
- * Test the method firePropertyChange(String, Object, Object) when a null
- * listener has been registered.
- */
- public void testFirePropertyChange_Object_NullListener() {
- Object src = new Object();
- PropertyChangeSupport sup = new PropertyChangeSupport(src);
- Object newValue = new Object();
- Object oldValue = new Object();
-
- sup.addPropertyChangeListener(null);
- try {
- sup.firePropertyChange("myProp", oldValue, newValue);
- fail("Should throw NullPointerException!");
- } catch (NullPointerException ex) {
- // expected
- }
- }
-
- /*
- * Test the method firePropertyChange(PropertyChangeEvent) with normal
- * parameters, when there is a listener for all properties and another for
- * the named property.
- */
- public void testFirePropertyChange_PropertyChangeEvent_Normal() {
- Object src = new Object();
- PropertyChangeSupport sup = new PropertyChangeSupport(src);
- Object newValue = new Object();
- Object oldValue = new Object();
- Object src2 = new Object();
- PropertyChangeEvent event = new PropertyChangeEvent(src2, "myProp",
- oldValue, newValue);
-
- MockPropertyChangeListener l1 = new MockPropertyChangeListener(src2,
- "myProp", oldValue, newValue);
- MockPropertyChangeListener l2 = new MockPropertyChangeListener(src2,
- "myProp", oldValue, newValue);
- PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp",
- l2);
- MockPropertyChangeListener l4 = new MockPropertyChangeListener(src2,
- "myProp", oldValue, newValue);
- sup.addPropertyChangeListener(l1);
- sup.addPropertyChangeListener(l3);
- sup.addPropertyChangeListener("myProp", l4);
-
- sup.firePropertyChange(event);
- l1.assertCalled();
- l2.assertCalled();
- l4.assertCalled();
- }
-
- /*
- * Test the method firePropertyChange(PropertyChangeEvent) with equal old
- * and new non-null values, when there is a listener for all properties and
- * another for the named property.
- */
- public void testFirePropertyChange_PropertyChangeEvent_EqualValues() {
- Object src = new Object();
- PropertyChangeSupport sup = new PropertyChangeSupport(src);
- Object newValue = new Object();
- Object oldValue = newValue;
- Object src2 = new Object();
- PropertyChangeEvent event = new PropertyChangeEvent(src2, "myProp",
- oldValue, newValue);
-
- MockPropertyChangeListener l1 = new MockPropertyChangeListener(src2,
- "myProp", oldValue, newValue);
- MockPropertyChangeListener l2 = new MockPropertyChangeListener(src2,
- "myProp", oldValue, newValue);
- PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp",
- l2);
- MockPropertyChangeListener l4 = new MockPropertyChangeListener(src2,
- "myProp", oldValue, newValue);
- sup.addPropertyChangeListener(l1);
- sup.addPropertyChangeListener(l3);
- sup.addPropertyChangeListener("myProp", l4);
-
- sup.firePropertyChange(event);
- l1.assertNotCalled();
- l2.assertNotCalled();
- l4.assertNotCalled();
- }
-
- /*
- * Test the method firePropertyChange(PropertyChangeEvent) with null old and
- * new values, when there is a listener for all properties and another for
- * the named property.
- */
- public void testFirePropertyChange_PropertyChangeEvent_NullValues() {
- Object src = new Object();
- PropertyChangeSupport sup = new PropertyChangeSupport(src);
- Object newValue = null;
- Object oldValue = null;
- Object src2 = new Object();
- PropertyChangeEvent event = new PropertyChangeEvent(src2, "myProp",
- oldValue, newValue);
-
- MockPropertyChangeListener l1 = new MockPropertyChangeListener(src2,
- "myProp", oldValue, newValue);
- MockPropertyChangeListener l2 = new MockPropertyChangeListener(src2,
- "myProp", oldValue, newValue);
- PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp",
- l2);
- MockPropertyChangeListener l4 = new MockPropertyChangeListener(src2,
- "myProp", oldValue, newValue);
- sup.addPropertyChangeListener(l1);
- sup.addPropertyChangeListener(l3);
- sup.addPropertyChangeListener("myProp", l4);
-
- sup.firePropertyChange(event);
- l1.assertCalled();
- l2.assertCalled();
- l4.assertCalled();
- }
-
- /*
- * Test the method firePropertyChange(PropertyChangeEvent) with a non-null
- * old value and a null new value, when there is a listener for all
- * properties and another for the named property.
- */
- public void testFirePropertyChange_PropertyChangeEvent_NullNewValue() {
- Object src = new Object();
- PropertyChangeSupport sup = new PropertyChangeSupport(src);
- Object newValue = null;
- Object oldValue = new Object();
- Object src2 = new Object();
- PropertyChangeEvent event = new PropertyChangeEvent(src2, "myProp",
- oldValue, newValue);
-
- MockPropertyChangeListener l1 = new MockPropertyChangeListener(src2,
- "myProp", oldValue, newValue);
- MockPropertyChangeListener l2 = new MockPropertyChangeListener(src2,
- "myProp", oldValue, newValue);
- PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp",
- l2);
- MockPropertyChangeListener l4 = new MockPropertyChangeListener(src2,
- "myProp", oldValue, newValue);
- sup.addPropertyChangeListener(l1);
- sup.addPropertyChangeListener(l3);
- sup.addPropertyChangeListener("myProp", l4);
-
- sup.firePropertyChange(event);
- l1.assertCalled();
- l2.assertCalled();
- l4.assertCalled();
- }
-
- /*
- * Test the method firePropertyChange(PropertyChangeEvent) with a null old
- * value and a non-null new value, when there is a listener for all
- * properties and another for the named property.
- */
- public void testFirePropertyChange_PropertyChangeEvent_NullOldValue() {
- Object src = new Object();
- PropertyChangeSupport sup = new PropertyChangeSupport(src);
- Object newValue = new Object();
- Object oldValue = null;
- Object src2 = new Object();
- PropertyChangeEvent event = new PropertyChangeEvent(src2, "myProp",
- oldValue, newValue);
-
- MockPropertyChangeListener l1 = new MockPropertyChangeListener(src2,
- "myProp", oldValue, newValue);
- MockPropertyChangeListener l2 = new MockPropertyChangeListener(src2,
- "myProp", oldValue, newValue);
- PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp",
- l2);
- MockPropertyChangeListener l4 = new MockPropertyChangeListener(src2,
- "myProp", oldValue, newValue);
- sup.addPropertyChangeListener(l1);
- sup.addPropertyChangeListener(l3);
- sup.addPropertyChangeListener("myProp", l4);
-
- sup.firePropertyChange(event);
- l1.assertCalled();
- l2.assertCalled();
- l4.assertCalled();
- }
-
- /*
- * Test the method firePropertyChange(PropertyChangeEvent) with a null
- * property name parameter.
- */
- public void testFirePropertyChange_PropertyChangeEvent_NullProperty() {
- Object src = new Object();
- PropertyChangeSupport sup = new PropertyChangeSupport(src);
- Object newValue = new Object();
- Object oldValue = new Object();
- Object src2 = new Object();
- PropertyChangeEvent event = new PropertyChangeEvent(src2, null,
- oldValue, newValue);
-
- MockPropertyChangeListener l1 = new MockPropertyChangeListener(src2,
- null, oldValue, newValue);
- MockPropertyChangeListener l2 = new MockPropertyChangeListener(src2,
- null, oldValue, newValue);
- PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp",
- l2);
- MockPropertyChangeListener l4 = new MockPropertyChangeListener(src2,
- null, oldValue, newValue);
- sup.addPropertyChangeListener(l1);
- sup.addPropertyChangeListener(l3);
- sup.addPropertyChangeListener("myProp", l4);
-
- sup.firePropertyChange(event);
- l1.assertCalled();
- l2.assertNotCalled();
- l4.assertNotCalled();
- }
-
- /*
- * Test the method firePropertyChange(PropertyChangeEvent) when null.
- */
- public void testFirePropertyChange_PropertyChangeEvent_Null() {
- Object src = new Object();
- PropertyChangeSupport sup = new PropertyChangeSupport(src);
-
- try {
- sup.firePropertyChange(null);
- fail("Should throw NullPointerException!");
- } catch (NullPointerException ex) {
- // expected
- }
- }
-
- /*
- * Test the method firePropertyChange(PropertyChangeEvent) when a null
- * listener has been registered.
- */
- public void testFirePropertyChange_PropertyChangeEvent_NullListener() {
- Object src = new Object();
- PropertyChangeSupport sup = new PropertyChangeSupport(src);
- Object newValue = new Object();
- Object oldValue = new Object();
- Object src2 = new Object();
- PropertyChangeEvent event = new PropertyChangeEvent(src2, "myProp",
- oldValue, newValue);
-
- sup.addPropertyChangeListener(null);
- try {
- sup.firePropertyChange(event);
- fail("Should throw NullPointerException!");
- } catch (NullPointerException ex) {
- // expected
- }
- }
-
- /*
- * Test the method firePropertyChange(String, boolean, boolean) with normal
- * parameters, when there is a listener for all properties and another for
- * the named property.
- */
- public void testFirePropertyChange_Boolean_Normal() {
- Object src = new Object();
- PropertyChangeSupport sup = new PropertyChangeSupport(src);
- Object newValue = Boolean.TRUE;
- Object oldValue = Boolean.FALSE;
-
- MockPropertyChangeListener l1 = new MockPropertyChangeListener(src,
- "myProp", oldValue, newValue);
- MockPropertyChangeListener l2 = new MockPropertyChangeListener(src,
- "myProp", oldValue, newValue);
- PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp",
- l2);
- MockPropertyChangeListener l4 = new MockPropertyChangeListener(src,
- "myProp", oldValue, newValue);
- sup.addPropertyChangeListener(l1);
- sup.addPropertyChangeListener(l3);
- sup.addPropertyChangeListener("myProp", l4);
-
- sup.firePropertyChange("myProp", false, true);
- l1.assertCalled();
- l2.assertCalled();
- l4.assertCalled();
- }
-
- /*
- * Test the method firePropertyChange(String, boolean, boolean) with equal
- * old and new non-null values, when there is a listener for all properties
- * and another for the named property.
- */
- public void testFirePropertyChange_Boolean_EqualValues() {
- Object src = new Object();
- PropertyChangeSupport sup = new PropertyChangeSupport(src);
- Object newValue = Boolean.TRUE;
- Object oldValue = newValue;
-
- MockPropertyChangeListener l1 = new MockPropertyChangeListener(src,
- "myProp", oldValue, newValue);
- MockPropertyChangeListener l2 = new MockPropertyChangeListener(src,
- "myProp", oldValue, newValue);
- PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp",
- l2);
- MockPropertyChangeListener l4 = new MockPropertyChangeListener(src,
- "myProp", oldValue, newValue);
- sup.addPropertyChangeListener(l1);
- sup.addPropertyChangeListener(l3);
- sup.addPropertyChangeListener("myProp", l4);
-
- sup.firePropertyChange("myProp", true, true);
- l1.assertNotCalled();
- l2.assertNotCalled();
- l4.assertNotCalled();
- }
-
- /*
- * Test the method firePropertyChange(String, boolean, boolean) with a null
- * property name parameter.
- */
- public void testFirePropertyChange_Boolean_NullProperty() {
- Object src = new Object();
- PropertyChangeSupport sup = new PropertyChangeSupport(src);
- Object newValue = Boolean.TRUE;
- Object oldValue = Boolean.FALSE;
-
- MockPropertyChangeListener l1 = new MockPropertyChangeListener(src,
- null, oldValue, newValue);
- MockPropertyChangeListener l2 = new MockPropertyChangeListener(src,
- null, oldValue, newValue);
- PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp",
- l2);
- MockPropertyChangeListener l4 = new MockPropertyChangeListener(src,
- null, oldValue, newValue);
- sup.addPropertyChangeListener(l1);
- sup.addPropertyChangeListener(l3);
- sup.addPropertyChangeListener("myProp", l4);
-
- sup.firePropertyChange(null, false, true);
- l1.assertCalled();
- l2.assertNotCalled();
- l4.assertNotCalled();
- }
-
- /*
- * Test the method firePropertyChange(String, boolean, boolean) when a null
- * listener has been registered.
- */
- public void testFirePropertyChange_Boolean_NullListener() {
- Object src = new Object();
- PropertyChangeSupport sup = new PropertyChangeSupport(src);
-
- sup.addPropertyChangeListener(null);
- try {
- sup.firePropertyChange("myProp", true, false);
- fail("Should throw NullPointerException!");
- } catch (NullPointerException ex) {
- // expected
- }
- }
-
- /*
- * Test the method firePropertyChange(String, int, int) with normal
- * parameters, when there is a listener for all properties and another for
- * the named property.
- */
- public void testFirePropertyChange_Int_Normal() {
- Object src = new Object();
- PropertyChangeSupport sup = new PropertyChangeSupport(src);
- Integer newValue = new Integer(1);
- Integer oldValue = new Integer(2);
-
- MockPropertyChangeListener l1 = new MockPropertyChangeListener(src,
- "myProp", oldValue, newValue);
- MockPropertyChangeListener l2 = new MockPropertyChangeListener(src,
- "myProp", oldValue, newValue);
- PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp",
- l2);
- MockPropertyChangeListener l4 = new MockPropertyChangeListener(src,
- "myProp", oldValue, newValue);
- sup.addPropertyChangeListener(l1);
- sup.addPropertyChangeListener(l3);
- sup.addPropertyChangeListener("myProp", l4);
-
- sup.firePropertyChange("myProp", oldValue.intValue(), newValue
- .intValue());
- l1.assertCalled();
- l2.assertCalled();
- l4.assertCalled();
- }
-
- /*
- * Test the method firePropertyChange(String, int, int) with equal old and
- * new non-null values, when there is a listener for all properties and
- * another for the named property.
- */
- public void testFirePropertyChange_Int_EqualValues() {
- Object src = new Object();
- PropertyChangeSupport sup = new PropertyChangeSupport(src);
- Integer newValue = new Integer(1);
- Integer oldValue = newValue;
-
- MockPropertyChangeListener l1 = new MockPropertyChangeListener(src,
- "myProp", oldValue, newValue);
- MockPropertyChangeListener l2 = new MockPropertyChangeListener(src,
- "myProp", oldValue, newValue);
- PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp",
- l2);
- MockPropertyChangeListener l4 = new MockPropertyChangeListener(src,
- "myProp", oldValue, newValue);
- sup.addPropertyChangeListener(l1);
- sup.addPropertyChangeListener(l3);
- sup.addPropertyChangeListener("myProp", l4);
-
- sup.firePropertyChange("myProp", oldValue.intValue(), newValue
- .intValue());
- l1.assertNotCalled();
- l2.assertNotCalled();
- l4.assertNotCalled();
- }
-
- /*
- * Test the method firePropertyChange(String, int, int) with a null property
- * name parameter.
- */
- public void testFirePropertyChange_Int_NullProperty() {
- Object src = new Object();
- PropertyChangeSupport sup = new PropertyChangeSupport(src);
- Integer newValue = new Integer(1);
- Integer oldValue = new Integer(2);
-
- MockPropertyChangeListener l1 = new MockPropertyChangeListener(src,
- null, oldValue, newValue);
- MockPropertyChangeListener l2 = new MockPropertyChangeListener(src,
- null, oldValue, newValue);
- PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp",
- l2);
- MockPropertyChangeListener l4 = new MockPropertyChangeListener(src,
- null, oldValue, newValue);
- sup.addPropertyChangeListener(l1);
- sup.addPropertyChangeListener(l3);
- sup.addPropertyChangeListener("myProp", l4);
-
- sup.firePropertyChange(null, oldValue.intValue(), newValue.intValue());
- l1.assertCalled();
- l2.assertNotCalled();
- l4.assertNotCalled();
- }
-
- /*
- * Test the method firePropertyChange(String, int, int) when a null listener
- * has been registered.
- */
- public void testFirePropertyChange_Int_NullListener() {
- Object src = new Object();
- PropertyChangeSupport sup = new PropertyChangeSupport(src);
-
- sup.addPropertyChangeListener(null);
- try {
- sup.firePropertyChange("myProp", 1, 2);
- fail("Should throw NullPointerException!");
- } catch (NullPointerException ex) {
- // expected
- }
- }
-
- /*
- * Test serialization/deserialization.
- */
- public void testSerialization() throws Exception {
- Object src = "PropertyChangeSupportSerializationTest";
- PropertyChangeSupport sup = new PropertyChangeSupport(src);
- PropertyChangeSupport sup2 = new PropertyChangeSupport(src);
- Integer newValue = new Integer(1);
- Integer oldValue = new Integer(2);
-
- MockPropertyChangeListener l1 = new MockPropertyChangeListener(src,
- "myProp", oldValue, newValue);
- MockPropertyChangeListener2 l2 = new MockPropertyChangeListener2();
-
- sup.addPropertyChangeListener(l1);
- sup.addPropertyChangeListener("myProp", l1);
- sup.addPropertyChangeListener("myProp", l2);
- sup2.addPropertyChangeListener(l1);
- sup2.addPropertyChangeListener("myProp", l1);
-
- PropertyChangeSupport deSup = (PropertyChangeSupport) SerializationTester
- .getDeserilizedObject(sup);
- assertEquals(sup2.getPropertyChangeListeners()[0], deSup
- .getPropertyChangeListeners()[0]);
- assertEquals(((PropertyChangeListenerProxy) sup2
- .getPropertyChangeListeners()[1]).getListener(),
- ((PropertyChangeListenerProxy) deSup
- .getPropertyChangeListeners()[1]).getListener());
- }
-
- /*
- * Test serialization/deserialization compatibility
- */
- public void testSerializationCompatibility() throws Exception {
- Object src = "PropertyChangeSupportSerializationTest";
- PropertyChangeSupport sup = new PropertyChangeSupport(src);
- PropertyChangeSupport sup2 = new PropertyChangeSupport(src);
- Integer newValue = new Integer(1);
- Integer oldValue = new Integer(2);
-
- MockPropertyChangeListener l1 = new MockPropertyChangeListener(src,
- "myProp", oldValue, newValue);
- MockPropertyChangeListener2 l2 = new MockPropertyChangeListener2();
-
- sup.addPropertyChangeListener(l1);
- sup.addPropertyChangeListener("myProp", l1);
- sup.addPropertyChangeListener("myProp", l2);
- sup2.addPropertyChangeListener(l1);
- sup2.addPropertyChangeListener("myProp", l1);
-
- PropertyChangeSupport deSup = (PropertyChangeSupport) SerializationTester
- .readObject(sup,
- "serialization/java/beans/PropertyChangeSupport.ser");
- assertEquals(sup2.getPropertyChangeListeners()[0], deSup
- .getPropertyChangeListeners()[0]);
- assertEquals(((PropertyChangeListenerProxy) sup2
- .getPropertyChangeListeners()[1]).getListener(),
- ((PropertyChangeListenerProxy) deSup
- .getPropertyChangeListeners()[1]).getListener());
- }
-
- /*
- * Mock PropertyChangeListener.
- */
- static class MockPropertyChangeListener implements PropertyChangeListener,
- Serializable {
-
- private transient Object expSrc;
-
- private String expPropName;
-
- private transient Object expOldValue;
-
- private transient Object expNewValue;
-
- private transient PropertyChangeEvent event;
-
- private transient boolean called = false;
-
- public MockPropertyChangeListener() {
- }
-
- public MockPropertyChangeListener(Object src, String propName,
- Object oldValue, Object newValue) {
- this.expSrc = src;
- this.expPropName = propName;
- this.expOldValue = oldValue;
- this.expNewValue = newValue;
- }
-
- public void setAll(Object src, String propName, Object oldValue,
- Object newValue) {
- this.expSrc = src;
- this.expPropName = propName;
- this.expOldValue = oldValue;
- this.expNewValue = newValue;
- }
-
- public void propertyChange(PropertyChangeEvent event) {
- this.event = event;
- }
-
- public void assertCalled() {
- assertSame(expSrc, event.getSource());
- assertEquals(expPropName, event.getPropertyName());
- assertEquals(expOldValue, event.getOldValue());
- assertEquals(expNewValue, event.getNewValue());
- assertNull(event.getPropagationId());
- }
-
- public void assertNotCalled() {
- assertNull(event);
- assertFalse(called);
- }
-
- public boolean equals(Object obj) {
- if (obj instanceof MockPropertyChangeListener) {
- MockPropertyChangeListener l = (MockPropertyChangeListener) obj;
- return null == this.expPropName ? null == l.expPropName
- : this.expPropName.equals(l.expPropName);
- }
- return false;
- }
- }
-
- /*
- * Mock PropertyChangeListener which is not serializable.
- */
- static class MockPropertyChangeListener2 implements PropertyChangeListener {
-
- public void propertyChange(PropertyChangeEvent event) {
- }
- }
-
-
- /**
- * @tests java.beans.PropertyChangeSupport#PropertyChangeSupport(
- * java.lang.Object)
- */
- public void testConstructor_Null() {
- // Regression for HARMONY-227
- try {
- new PropertyChangeSupport(null);
- fail("Should throw NullPointerException!");
- } catch (NullPointerException ex) {
- // expected
- }
- }
-
- /**
- * @tests java.beans.PropertyChangeSupport#addPropertyChangeSupport
- *
- */
- public void test_addPropertyChangeListenerNullNull() throws Exception {
- // Regression for HARMONY-441
- new PropertyChangeSupport("bean1")
- .addPropertyChangeListener(null, null);
- }
-
- /**
- * @tests java.beans.PropertyChangeSupport#removePropertyChangeListener(
- * java.lang.String, java.beans.PropertyChangeListener)
- */
- public void testRemovePropertyChangeListener() {
- // Regerssion for HARMONY-386
- PropertyChangeSupport prop = new PropertyChangeSupport(new Object());
-
- PropertyChangeListener lis1 = new PropertyChangeListener() {
- public void propertyChange(PropertyChangeEvent event) {}
- };
-
- PropertyChangeListener lis2 = new PropertyChangeListenerProxy("name",
- lis1);
-
- assertEquals(0, prop.getPropertyChangeListeners().length);
-
- prop.addPropertyChangeListener(lis2);
- assertEquals(1, prop.getPropertyChangeListeners().length);
-
- prop.removePropertyChangeListener("name", lis1);
- assertEquals(0, prop.getPropertyChangeListeners().length);
- }
-
-
- /**
- * @tests java.beans.PropertyChangeSupport#removePropertyChangeListener(
- * java.lang.String, java.beans.PropertyChangeListener)
- */
- public void testRemovePropertyChangeListener2() {
- // Regerssion for HARMONY-320
- PropertyChangeListener listener = new PropertyChangeListener() {
- public void propertyChange(PropertyChangeEvent arg0) {}
- };
-
- PropertyChangeSupport pcs = new PropertyChangeSupport(this);
-
- pcs.addPropertyChangeListener("property", listener);
- PropertyChangeListener[] listeners = pcs.getPropertyChangeListeners();
- assertEquals(1, listeners.length);
-
- pcs.removePropertyChangeListener(listeners[0]);
- listeners = pcs.getPropertyChangeListeners();
- assertEquals(0, listeners.length);
- }
-
-
- /**
- * The test checks the serialization for listeners supporting serialization
- */
- public void testSerializableListener() {
- writePropertyChangeListeners(new PropertyChangeListener[] {
- new SerializablePropertyChangeListener()
- });
- PropertyChangeListener[] pcls = readPropertyChangeListeners();
- }
-
- /**
- * The test checks the serialization for listeners not supporting
- * serialization
- */
- public void testNonSerializableListener() {
- writePropertyChangeListeners(new PropertyChangeListener[] {
- new NonSerializablePropertyChangeListener()
- });
- PropertyChangeListener[] pcls = readPropertyChangeListeners();
- }
-
- /**
- *
- */
- public static Test suite() {
- return new TestSuite(PropertyChangeSupportTest.class);
- }
-
- /**
- *
- */
- public static void main(String[] args) {
- TestRunner.run(suite());
- }
-
- private void writePropertyChangeListeners(PropertyChangeListener[] array) {
- ObjectOutputStream oos = null;
- try {
- oos = new ObjectOutputStream(new FileOutputStream("x.ser"));
- PropertyChangeSupport pcs = new PropertyChangeSupport("bean");
- if(array != null && array.length > 0) {
- for(int i = 0; i < array.length; ++i) {
- pcs.addPropertyChangeListener(array[i]);
- }
- }
- oos.writeObject(pcs);
- oos.flush();
- } catch (Exception e) {
- System.out.println(e.getClass() + ": " + e.getMessage());
- fail("Exception is thrown in testNonSerializableListener");
- } finally {
- if(oos != null) {
- try {
- oos.close();
- } catch (IOException ioe) {
- fail("Exception while closing ObjectOutputStream");
- }
- }
- }
- }
-
- private PropertyChangeListener[] readPropertyChangeListeners() {
- ObjectInputStream ois = null;
- PropertyChangeSupport pcs = null;
- try {
- ois = new ObjectInputStream(new FileInputStream("x.ser"));
- pcs = (PropertyChangeSupport) ois.readObject();
- } catch (Exception e) {
- System.out.println(e.getClass() + ": " + e.getMessage());
- fail("Exception is thrown in testNonSerializableListener while "
- + "reading");
- } finally {
- if(ois != null) {
- try {
- ois.close();
- } catch (IOException ioe) {
- fail("Exception while closing ObjectInputStream");
- }
- }
- }
-
- return pcs.getPropertyChangeListeners();
-
- }
-}
+/* Copyright 2005 The Apache Software Foundation or its licensors, as applicable
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.harmony.beans.tests.java.beans;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeListenerProxy;
+import java.beans.PropertyChangeSupport;
+import java.io.Serializable;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+
+import java.util.Arrays;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+import junit.textui.TestRunner;
+import tests.util.SerializationTester;
+
+import org.apache.harmony.beans.tests.java.beans.auxiliary.SerializablePropertyChangeListener;
+import org.apache.harmony.beans.tests.java.beans.auxiliary.NonSerializablePropertyChangeListener;
+
+/**
+ * Test class PropertyeChangeSupport.
+ */
+public class PropertyChangeSupportTest extends TestCase {
+
+ /*
+ * Test the constructor with a normal parameter.
+ */
+ public void testConstructor_Normal() {
+ Object src = new Object();
+ new PropertyChangeSupport(src);
+ }
+
+ /*
+ * Test the method addPropertyChangeListener(PropertyeChangeListener) with a
+ * normal listener parameter.
+ */
+ public void testAddPropertyChangeListener_PropertyChangeListener_Normal() {
+ Object src = new Object();
+ PropertyChangeSupport sup = new PropertyChangeSupport(src);
+ PropertyChangeListener l1 = new MockPropertyChangeListener();
+ PropertyChangeListener l2 = new MockPropertyChangeListener();
+ PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp",
+ l2);
+ PropertyChangeListener l4 = new PropertyChangeListenerProxy("myProp",
+ l3);
+
+ sup.addPropertyChangeListener(l1);
+
+ assertEquals(1, sup.getPropertyChangeListeners().length);
+ assertSame(l1, sup.getPropertyChangeListeners()[0]);
+
+ sup.removePropertyChangeListener(l1);
+ sup.addPropertyChangeListener(l3);
+ assertEquals(1, sup.getPropertyChangeListeners().length);
+ assertSame(l2, ((PropertyChangeListenerProxy) sup
+ .getPropertyChangeListeners()[0]).getListener());
+ assertNotSame(l3, sup.getPropertyChangeListeners()[0]);
+
+ sup.removePropertyChangeListener(sup.getPropertyChangeListeners()[0]);
+ assertEquals(0, sup.getPropertyChangeListeners().length);
+ sup.addPropertyChangeListener(l4);
+ assertNotSame(l3, ((PropertyChangeListenerProxy) sup
+ .getPropertyChangeListeners()[0]).getListener());
+ assertNotSame(l4, sup.getPropertyChangeListeners()[0]);
+ assertSame(
+ l2,
+ ((PropertyChangeListenerProxy) ((PropertyChangeListenerProxy) sup
+ .getPropertyChangeListeners()[0]).getListener())
+ .getListener());
+ }
+
+ /*
+ * Test the method addPropertyChangeListener(PropertyeChangeListener) with a
+ * null listener parameter.
+ */
+ public void testAddPropertyChangeListener_PropertyChangeListener_Null() {
+ Object src = new Object();
+ PropertyChangeSupport sup = new PropertyChangeSupport(src);
+
+ sup.addPropertyChangeListener(null);
+ PropertyChangeListener[] listeners = sup.getPropertyChangeListeners();
+ assertEquals(1, listeners.length);
+ assertSame(null, listeners[0]);
+ }
+
+ /*
+ * Test the method addPropertyChangeListener(PropertyeChangeListener) with a
+ * listener parameter that has already been registered.
+ */
+ public void testAddPropertyChangeListener_PropertyChangeListener_Duplicate() {
+ Object src = new Object();
+ PropertyChangeSupport sup = new PropertyChangeSupport(src);
+ PropertyChangeListener l1 = new MockPropertyChangeListener();
+
+ sup.addPropertyChangeListener(l1);
+ sup.addPropertyChangeListener(l1);
+
+ PropertyChangeListener[] listeners = sup.getPropertyChangeListeners();
+ assertEquals(2, listeners.length);
+ assertSame(l1, listeners[0]);
+ assertSame(l1, listeners[1]);
+ }
+
+ /*
+ * Test the method addPropertyChangeListener(PropertyeChangeListener,
+ * String) with a normal listener parameter and property name parameter.
+ */
+ public void testAddPropertyChangeListener_PropertyChangeListener_String_Normal() {
+ Object src = new Object();
+ PropertyChangeSupport sup = new PropertyChangeSupport(src);
+ PropertyChangeListener l1 = new MockPropertyChangeListener();
+ PropertyChangeListener l2 = new MockPropertyChangeListener();
+ PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp",
+ l2);
+
+ sup.addPropertyChangeListener("myProp2", l1);
+
+ PropertyChangeListener[] listeners = sup.getPropertyChangeListeners();
+ assertEquals(1, listeners.length);
+ assertSame(l1, ((PropertyChangeListenerProxy) listeners[0])
+ .getListener());
+
+ sup.removePropertyChangeListener(listeners[0]);
+ sup.addPropertyChangeListener("myProp3", l3);
+ listeners = sup.getPropertyChangeListeners();
+ assertEquals(1, listeners.length);
+ // pay attention to this recursive proxy
+ assertNotSame(l3, ((PropertyChangeListenerProxy) listeners[0])
+ .getListener());
+ assertNotSame(l3, ((PropertyChangeListenerProxy) listeners[0]));
+ assertSame(
+ l2,
+ ((PropertyChangeListenerProxy) ((PropertyChangeListenerProxy) listeners[0])
+ .getListener()).getListener());
+
+ listeners = sup.getPropertyChangeListeners("myProp");
+ assertEquals(0, listeners.length);
+
+ listeners = sup.getPropertyChangeListeners("myProp3");
+ assertEquals(1, listeners.length);
+ // pay attention to this recursive proxy
+ assertNotSame(l3, ((PropertyChangeListenerProxy) listeners[0])
+ .getListener());
+ assertNotSame(l3, ((PropertyChangeListenerProxy) listeners[0]));
+ assertSame(l2, ((PropertyChangeListenerProxy) listeners[0])
+ .getListener());
+
+ }
+
+ /*
+ * Test the method addPropertyChangeListener(PropertyeChangeListener,
+ * String) with a null listener parameter and a normal property name
+ * parameter.
+ */
+ public void testAddPropertyChangeListener_PropertyChangeListener_String_NullListener() {
+ Object src = new Object();
+ PropertyChangeSupport sup = new PropertyChangeSupport(src);
+
+ sup.addPropertyChangeListener("myProp", null);
+
+ PropertyChangeListener[] listeners = sup.getPropertyChangeListeners();
+ assertEquals(1, listeners.length);
+ assertSame(null, ((PropertyChangeListenerProxy) listeners[0])
+ .getListener());
+
+ PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp",
+ null);
+ assertEquals(1, listeners.length);
+ assertSame(null, ((PropertyChangeListenerProxy) listeners[0])
+ .getListener());
+ }
+
+ /*
+ * Test the method addPropertyChangeListener(PropertyeChangeListener,
+ * String) with a normal listener parameter and a null property name
+ * parameter.
+ */
+ public void testAddPropertyChangeListener_PropertyChangeListener_String_NullProperty() {
+ Object src = new Object();
+ PropertyChangeSupport sup = new PropertyChangeSupport(src);
+ PropertyChangeListener l1 = new MockPropertyChangeListener();
+ PropertyChangeListener l2 = new MockPropertyChangeListener();
+ PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp",
+ l2);
+
+ try {
+ sup.addPropertyChangeListener(null, l1);
+ fail("Should throw NullPointerException!");
+ } catch (NullPointerException ex) {
+ // expected
+ }
+
+ try {
+ sup.addPropertyChangeListener(null, l3);
+ fail("Should throw NullPointerException!");
+ } catch (NullPointerException ex) {
+ // expected
+ }
+
+ l3 = new PropertyChangeListenerProxy(null, l2);
+ try {
+ sup.addPropertyChangeListener(l3);
+ fail("Should throw NullPointerException!");
+ } catch (NullPointerException ex) {
+ // expected
+ }
+ }
+
+ /*
+ * Test the method addPropertyChangeListener(PropertyeChangeListener,
+ * String) with a listener parameter that has already been registered for
+ * the named property.
+ */
+ public void testAddPropertyChangeListener_PropertyChangeListener_String_Duplicate() {
+ Object src = new Object();
+ PropertyChangeSupport sup = new PropertyChangeSupport(src);
+ PropertyChangeListener l1 = new MockPropertyChangeListener();
+ PropertyChangeListener l2 = new MockPropertyChangeListener();
+ PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp",
+ l2);
+
+ sup.addPropertyChangeListener("myProp2", l1);
+ sup.addPropertyChangeListener("myProp2", l1);
+
+ PropertyChangeListener[] listeners = sup.getPropertyChangeListeners();
+ assertEquals(2, listeners.length);
+ assertSame(l1, ((PropertyChangeListenerProxy) listeners[0])
+ .getListener());
+ assertSame(l1, ((PropertyChangeListenerProxy) listeners[1])
+ .getListener());
+
+ sup.removePropertyChangeListener(listeners[0]);
+ sup.removePropertyChangeListener(listeners[1]);
+ sup.addPropertyChangeListener("myProp3", l3);
+ sup.addPropertyChangeListener("myProp3", l3);
+ listeners = sup.getPropertyChangeListeners();
+ assertEquals(2, listeners.length);
+ assertSame(
+ l2,
+ ((PropertyChangeListenerProxy) ((PropertyChangeListenerProxy) listeners[0])
+ .getListener()).getListener());
+ assertSame(
+ l2,
+ ((PropertyChangeListenerProxy) ((PropertyChangeListenerProxy) listeners[1])
+ .getListener()).getListener());
+ }
+
+ /*
+ * Test the method removePropertyChangeListener(PropertyeChangeListener)
+ * with a normal listener parameter.
+ */
+ public void testRemovePropertyChangeListener_PropertyChangeListener_Normal() {
+ Object src = new Object();
+ PropertyChangeSupport sup = new PropertyChangeSupport(src);
+ PropertyChangeListener l1 = new MockPropertyChangeListener();
+ PropertyChangeListener l2 = new MockPropertyChangeListener();
+ PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp",
+ l2);
+
+ sup.addPropertyChangeListener(l1);
+
+ PropertyChangeListener[] listeners = sup.getPropertyChangeListeners();
+ assertEquals(1, listeners.length);
+ sup.removePropertyChangeListener(l1);
+ listeners = sup.getPropertyChangeListeners();
+ assertEquals(0, listeners.length);
+ sup.addPropertyChangeListener(l3);
+ listeners = sup.getPropertyChangeListeners();
+ assertEquals(1, listeners.length);
+ sup.removePropertyChangeListener(l3);
+ listeners = sup.getPropertyChangeListeners();
+ assertEquals(0, listeners.length);
+ sup.addPropertyChangeListener("myProp3", l2);
+ listeners = sup.getPropertyChangeListeners();
+ assertEquals(1, listeners.length);
+ sup.removePropertyChangeListener(l2);
+ listeners = sup.getPropertyChangeListeners();
+ assertEquals(1, listeners.length);
+ sup.removePropertyChangeListener(listeners[0]);
+ listeners = sup.getPropertyChangeListeners();
+ assertEquals(0, listeners.length);
+ }
+
+ /*
+ * Test the method removePropertyChangeListener(PropertyeChangeListener)
+ * with a null listener parameter.
+ */
+ public void testRemovePropertyChangeListener_PropertyChangeListener_Null() {
+ Object src = new Object();
+ PropertyChangeSupport sup = new PropertyChangeSupport(src);
+ sup.removePropertyChangeListener(null);
+ assertEquals(0, sup.getPropertyChangeListeners().length);
+ sup.addPropertyChangeListener(null);
+ assertEquals(1, sup.getPropertyChangeListeners().length);
+ sup.removePropertyChangeListener(null);
+ assertEquals(0, sup.getPropertyChangeListeners().length);
+ }
+
+ /*
+ * Test the method removePropertyChangeListener(PropertyeChangeListener)
+ * with a non-registered listener parameter.
+ */
+ public void testRemovePropertyChangeListener_PropertyChangeListener_NonRegistered() {
+ Object src = new Object();
+ PropertyChangeSupport sup = new PropertyChangeSupport(src);
+ sup.removePropertyChangeListener(new MockPropertyChangeListener());
+ assertEquals(0, sup.getPropertyChangeListeners().length);
+ }
+
+ /*
+ * Test the method removePropertyChangeListener(PropertyeChangeListener,
+ * String) when a listener for all properties has been registered.
+ */
+ public void testRemovePropertyChangeListener_PropertyChangeListener_String_AllRegistered() {
+ Object src = new Object();
+ PropertyChangeSupport sup = new PropertyChangeSupport(src);
+ Object newValue = new Object();
+ Object oldValue = new Object();
+
+ MockPropertyChangeListener l1 = new MockPropertyChangeListener(src,
+ "myProp", oldValue, newValue);
+
+ sup.addPropertyChangeListener(l1);
+
+ sup.removePropertyChangeListener("myProp", l1);
+ assertEquals(1, sup.getPropertyChangeListeners().length);
+ assertEquals(0, sup.getPropertyChangeListeners("myProp").length);
+ sup.firePropertyChange("myProp", oldValue, newValue);
+ l1.assertCalled();
+ }
+
+ /*
+ * Test the method removePropertyChangeListener(PropertyeChangeListener,
+ * String) when a listener for the named property has been registered.
+ */
+ public void testRemovePropertyChangeListener_PropertyChangeListener_String_PropertyRegistered() {
+ Object src = new Object();
+ PropertyChangeSupport sup = new PropertyChangeSupport(src);
+ PropertyChangeListener l1 = new MockPropertyChangeListener();
+ sup.addPropertyChangeListener("myProp", l1);
+ assertEquals(1, sup.getPropertyChangeListeners().length);
+
+ sup.removePropertyChangeListener("myProp", l1);
+ assertEquals(0, sup.getPropertyChangeListeners().length);
+ assertEquals(0, sup.getPropertyChangeListeners("myProp").length);
+
+ PropertyChangeListener l2 = new MockPropertyChangeListener();
+ PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp",
+ l2);
+ sup.addPropertyChangeListener(l3);
+ assertEquals(1, sup.getPropertyChangeListeners().length);
+ sup.removePropertyChangeListener("myProp", l2);
+ assertEquals(0, sup.getPropertyChangeListeners().length);
+ assertEquals(0, sup.getPropertyChangeListeners("myProp").length);
+ }
+
+ /*
+ * Test the method removePropertyChangeListener(PropertyeChangeListener,
+ * String) with a non-registered listener parameter.
+ */
+ public void testRemovePropertyChangeListener_PropertyChangeListener_String_NonRegistered() {
+ Object src = new Object();
+ PropertyChangeSupport sup = new PropertyChangeSupport(src);
+ sup.removePropertyChangeListener("myProp",
+ new MockPropertyChangeListener());
+ assertEquals(0, sup.getPropertyChangeListeners().length);
+ }
+
+ /*
+ * Test the method removePropertyChangeListener(PropertyeChangeListener,
+ * String) with a null listener parameter.
+ */
+ public void testRemovePropertyChangeListener_PropertyChangeListener_String_NullListener() {
+ Object src = new Object();
+ PropertyChangeSupport sup = new PropertyChangeSupport(src);
+
+ sup.removePropertyChangeListener("myProp", null);
+ assertEquals(0, sup.getPropertyChangeListeners().length);
+ sup.addPropertyChangeListener("myProp", null);
+ assertEquals(1, sup.getPropertyChangeListeners().length);
+ sup.removePropertyChangeListener("myProp", null);
+ assertEquals(0, sup.getPropertyChangeListeners().length);
+ }
+
+ /*
+ * Test the method removePropertyChangeListener(PropertyeChangeListener,
+ * String) with a null property name parameter.
+ */
+ public void testRemovePropertyChangeListener_PropertyChangeListener_String_NullProperty() {
+ Object src = new Object();
+ PropertyChangeSupport sup = new PropertyChangeSupport(src);
+ // sup
+ // .removePropertyChangeListener(null,
+ // new MockPropertyChangeListener());
+ sup.addPropertyChangeListener("myProp",
+ new MockPropertyChangeListener());
+ try {
+ sup.removePropertyChangeListener(null,
+ new MockPropertyChangeListener());
+ fail("Should throw NullPointerException!");
+ } catch (NullPointerException ex) {
+ // expected
+ }
+ }
+
+ /*
+ * Test the method getPropertyChangeListeners() when there is one listener
+ * for all properties and one for a named property.
+ */
+ public void testGetPropertyChangeListener_Normal() {
+ Object src = new Object();
+ PropertyChangeSupport sup = new PropertyChangeSupport(src);
+ PropertyChangeListener l1 = new MockPropertyChangeListener();
+ PropertyChangeListener l2 = new MockPropertyChangeListener();
+ PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp",
+ l2);
+ PropertyChangeListener l4 = new MockPropertyChangeListener();
+
+ sup.addPropertyChangeListener(l1);
+ sup.addPropertyChangeListener(l3);
+ sup.addPropertyChangeListener("myProp2", l4);
+
+ assertEquals(3, sup.getPropertyChangeListeners().length);
+ }
+
+ /*
+ * Test the method getPropertyChangeListeners() when there is no listeners.
+ */
+ public void testGetPropertyChangeListener_Empty() {
+ Object src = new Object();
+ PropertyChangeSupport sup = new PropertyChangeSupport(src);
+ assertEquals(0, sup.getPropertyChangeListeners().length);
+ }
+
+ /*
+ * Test the method getPropertyChangeListeners(String) when there is one
+ * listener for all properties and one for the named property and a third
+ * for another named property.
+ */
+ public void testGetPropertyChangeListener_String_Normal() {
+ Object src = new Object();
+ PropertyChangeSupport sup = new PropertyChangeSupport(src);
+ PropertyChangeListener l1 = new MockPropertyChangeListener();
+ PropertyChangeListener l2 = new MockPropertyChangeListener();
+ PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp",
+ l2);
+ PropertyChangeListener l4 = new MockPropertyChangeListener();
+
+ sup.addPropertyChangeListener(l1);
+ sup.addPropertyChangeListener(l3);
+ sup.addPropertyChangeListener("myProp2", l4);
+
+ assertEquals(1, sup.getPropertyChangeListeners("myProp").length);
+ assertSame(l2, sup.getPropertyChangeListeners("myProp")[0]);
+ sup.addPropertyChangeListener("myProp",
+ new MockPropertyChangeListener());
+ assertEquals(2, sup.getPropertyChangeListeners("myProp").length);
+ }
+
+ /*
+ * Test the method getPropertyChangeListeners(String) when there is no
+ * listener for the named property but there is one for another named
+ * property.
+ */
+ public void testGetPropertyChangeListener_String_None() {
+ Object src = new Object();
+ PropertyChangeSupport sup = new PropertyChangeSupport(src);
+ PropertyChangeListener l1 = new MockPropertyChangeListener();
+ PropertyChangeListener l2 = new MockPropertyChangeListener();
+ PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp2",
+ l2);
+ PropertyChangeListener l4 = new MockPropertyChangeListener();
+
+ sup.addPropertyChangeListener(l1);
+ sup.addPropertyChangeListener(l3);
+ sup.addPropertyChangeListener("myProp3", l4);
+
+ assertEquals(0, sup.getPropertyChangeListeners("myProp").length);
+ }
+
+ /*
+ * Test the method getPropertyChangeListeners(String) with a null parameter.
+ */
+ public void testGetPropertyChangeListener_String_Null() {
+ Object src = new Object();
+ PropertyChangeSupport sup = new PropertyChangeSupport(src);
+ // sup.getPropertyChangeListeners(null);
+ sup.addPropertyChangeListener("myProp",
+ new MockPropertyChangeListener());
+ try {
+ sup.getPropertyChangeListeners(null);
+ fail("Should throw NullPointerException!");
+ } catch (NullPointerException ex) {
+ // expected
+ }
+ }
+
+ /*
+ * Test the method hasListeners(String) when there is one listener for all
+ * properties.
+ */
+ public void testHasListener_AllRegistered() {
+ Object src = new Object();
+ PropertyChangeSupport sup = new PropertyChangeSupport(src);
+ PropertyChangeListener l1 = new MockPropertyChangeListener();
+ PropertyChangeListener l2 = new MockPropertyChangeListener();
+ PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp",
+ l2);
+
+ assertFalse(sup.hasListeners("myProp"));
+ sup.addPropertyChangeListener(l1);
+ assertTrue(sup.hasListeners("myProp"));
+ sup.removePropertyChangeListener(l1);
+ assertFalse(sup.hasListeners("myProp"));
+ sup.addPropertyChangeListener(l3);
+ assertTrue(sup.hasListeners("myProp"));
+ }
+
+ /*
+ * Test the method hasListeners(String) when there is one listener for the
+ * named property.
+ */
+ public void testHasListener_PropertyRegistered() {
+ Object src = new Object();
+ PropertyChangeSupport sup = new PropertyChangeSupport(src);
+ PropertyChangeListener l1 = new MockPropertyChangeListener();
+ PropertyChangeListener l2 = new MockPropertyChangeListener();
+ PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp2",
+ l2);
+
+ assertFalse(sup.hasListeners("myProp"));
+ sup.addPropertyChangeListener("myProP", l1);
+ assertFalse(sup.hasListeners("myProp"));
+ sup.addPropertyChangeListener("myProp", l2);
+ assertTrue(sup.hasListeners("myProp"));
+ sup.removePropertyChangeListener("myProp", l2);
+ assertFalse(sup.hasListeners("myProp"));
+ sup.addPropertyChangeListener("myProp", l3);
+ assertFalse(sup.hasListeners("myProp"));
+ }
+
+ /*
+ * Test the method hasListeners(String) when there is no listeners.
+ */
+ public void testHasListener_None() {
+ Object src = new Object();
+ PropertyChangeSupport sup = new PropertyChangeSupport(src);
+ assertFalse(sup.hasListeners("myProp"));
+ }
+
+ /*
+ * Test the method hasListeners(String) with a null parameter.
+ */
+ public void testHasListener_Null() {
+ Object src = new Object();
+ PropertyChangeSupport sup = new PropertyChangeSupport(src);
+ // assertFalse(sup.hasListeners(null));
+
+ PropertyChangeListener l1 = new MockPropertyChangeListener();
+ sup.addPropertyChangeListener("myProP", l1);
+ try {
+ sup.hasListeners(null);
+ fail("Should throw NullPointerException!");
+ } catch (NullPointerException ex) {
+ // expected
+ }
+ }
+
+ /*
+ * Test the method firePropertyChange(String, Object, Object) with normal
+ * parameters, when there is no listeners.
+ */
+ public void testFirePropertyChange_Object_NoListeners() {
+ Object src = new Object();
+ PropertyChangeSupport sup = new PropertyChangeSupport(src);
+ sup.firePropertyChange("myProp", new Object(), new Object());
+ }
+
+ /*
+ * Test the method firePropertyChange(String, Object, Object) with normal
+ * parameters, when there is a listener for all properties and another for
+ * the named property.
+ */
+ public void testFirePropertyChange_Object_Normal() {
+ Object src = new Object();
+ PropertyChangeSupport sup = new PropertyChangeSupport(src);
+ Object newValue = new Object();
+ Object oldValue = new Object();
+
+ MockPropertyChangeListener l1 = new MockPropertyChangeListener(src,
+ "myProp", oldValue, newValue);
+ MockPropertyChangeListener l2 = new MockPropertyChangeListener(src,
+ "myProp", oldValue, newValue);
+ PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp",
+ l2);
+ MockPropertyChangeListener l4 = new MockPropertyChangeListener(src,
+ "myProp", oldValue, newValue);
+ sup.addPropertyChangeListener(l1);
+ sup.addPropertyChangeListener(l3);
+ sup.addPropertyChangeListener("myProp", l4);
+
+ sup.firePropertyChange("myProp", oldValue, newValue);
+ l1.assertCalled();
+ l2.assertCalled();
+ l4.assertCalled();
+ }
+
+ /*
+ * Test the method firePropertyChange(String, Object, Object) with equal old
+ * and new non-null values, when there is a listener for all properties and
+ * another for the named property.
+ */
+ public void testFirePropertyChange_Object_EqualValues() {
+ Object src = new Object();
+ PropertyChangeSupport sup = new PropertyChangeSupport(src);
+ Object newValue = new Object();
+ Object oldValue = newValue;
+
+ MockPropertyChangeListener l1 = new MockPropertyChangeListener(src,
+ "myProp", oldValue, newValue);
+ MockPropertyChangeListener l2 = new MockPropertyChangeListener(src,
+ "myProp", oldValue, newValue);
+ PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp",
+ l2);
+ MockPropertyChangeListener l4 = new MockPropertyChangeListener(src,
+ "myProp", oldValue, newValue);
+ sup.addPropertyChangeListener(l1);
+ sup.addPropertyChangeListener(l3);
+ sup.addPropertyChangeListener("myProp", l4);
+
+ sup.firePropertyChange("myProp", oldValue, newValue);
+ l1.assertNotCalled();
+ l2.assertNotCalled();
+ l4.assertNotCalled();
+ }
+
+ /*
+ * Test the method firePropertyChange(String, Object, Object) with null old
+ * and new values, when there is a listener for all properties and another
+ * for the named property.
+ */
+ public void testFirePropertyChange_Object_NullValues() {
+ Object src = new Object();
+ PropertyChangeSupport sup = new PropertyChangeSupport(src);
+ Object newValue = null;
+ Object oldValue = null;
+
+ MockPropertyChangeListener l1 = new MockPropertyChangeListener(src,
+ "myProp", oldValue, newValue);
+ MockPropertyChangeListener l2 = new MockPropertyChangeListener(src,
+ "myProp", oldValue, newValue);
+ PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp",
+ l2);
+ MockPropertyChangeListener l4 = new MockPropertyChangeListener(src,
+ "myProp", oldValue, newValue);
+ sup.addPropertyChangeListener(l1);
+ sup.addPropertyChangeListener(l3);
+ sup.addPropertyChangeListener("myProp", l4);
+
+ sup.firePropertyChange("myProp", oldValue, newValue);
+ l1.assertCalled();
+ l2.assertCalled();
+ l4.assertCalled();
+ }
+
+ /*
+ * Test the method firePropertyChange(String, Object, Object) with a
+ * non-null old value and a null new value, when there is a listener for all
+ * properties and another for the named property.
+ */
+ public void testFirePropertyChange_Object_NullNewValue() {
+ Object src = new Object();
+ PropertyChangeSupport sup = new PropertyChangeSupport(src);
+ Object newValue = null;
+ Object oldValue = new Object();
+
+ MockPropertyChangeListener l1 = new MockPropertyChangeListener(src,
+ "myProp", oldValue, newValue);
+ MockPropertyChangeListener l2 = new MockPropertyChangeListener(src,
+ "myProp", oldValue, newValue);
+ PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp",
+ l2);
+ MockPropertyChangeListener l4 = new MockPropertyChangeListener(src,
+ "myProp", oldValue, newValue);
+ sup.addPropertyChangeListener(l1);
+ sup.addPropertyChangeListener(l3);
+ sup.addPropertyChangeListener("myProp", l4);
+
+ sup.firePropertyChange("myProp", oldValue, newValue);
+ l1.assertCalled();
+ l2.assertCalled();
+ l4.assertCalled();
+ }
+
+ /*
+ * Test the method firePropertyChange(String, Object, Object) with a null
+ * old value and a non-null new value, when there is a listener for all
+ * properties and another for the named property.
+ */
+ public void testFirePropertyChange_Object_NullOldValue() {
+ Object src = new Object();
+ PropertyChangeSupport sup = new PropertyChangeSupport(src);
+ Object newValue = new Object();
+ Object oldValue = null;
+
+ MockPropertyChangeListener l1 = new MockPropertyChangeListener(src,
+ "myProp", oldValue, newValue);
+ MockPropertyChangeListener l2 = new MockPropertyChangeListener(src,
+ "myProp", oldValue, newValue);
+ PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp",
+ l2);
+ MockPropertyChangeListener l4 = new MockPropertyChangeListener(src,
+ "myProp", oldValue, newValue);
+ sup.addPropertyChangeListener(l1);
+ sup.addPropertyChangeListener(l3);
+ sup.addPropertyChangeListener("myProp", l4);
+
+ sup.firePropertyChange("myProp", oldValue, newValue);
+ l1.assertCalled();
+ l2.assertCalled();
+ l4.assertCalled();
+ }
+
+ /*
+ * Test the method firePropertyChange(String, Object, Object) with a null
+ * property name parameter.
+ */
+ public void testFirePropertyChange_Object_NullProperty() {
+ Object src = new Object();
+ PropertyChangeSupport sup = new PropertyChangeSupport(src);
+ Object newValue = new Object();
+ Object oldValue = new Object();
+
+ MockPropertyChangeListener l1 = new MockPropertyChangeListener(src,
+ null, oldValue, newValue);
+ MockPropertyChangeListener l2 = new MockPropertyChangeListener(src,
+ null, oldValue, newValue);
+ PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp",
+ l2);
+ MockPropertyChangeListener l4 = new MockPropertyChangeListener(src,
+ null, oldValue, newValue);
+ sup.addPropertyChangeListener(l1);
+ sup.addPropertyChangeListener(l3);
+ sup.addPropertyChangeListener("myProp", l4);
+
+ sup.firePropertyChange(null, oldValue, newValue);
+ l1.assertCalled();
+ l2.assertNotCalled();
+ l4.assertNotCalled();
+ }
+
+ /*
+ * Test the method firePropertyChange(String, Object, Object) when a null
+ * listener has been registered.
+ */
+ public void testFirePropertyChange_Object_NullListener() {
+ Object src = new Object();
+ PropertyChangeSupport sup = new PropertyChangeSupport(src);
+ Object newValue = new Object();
+ Object oldValue = new Object();
+
+ sup.addPropertyChangeListener(null);
+ try {
+ sup.firePropertyChange("myProp", oldValue, newValue);
+ fail("Should throw NullPointerException!");
+ } catch (NullPointerException ex) {
+ // expected
+ }
+ }
+
+ /*
+ * Test the method firePropertyChange(PropertyChangeEvent) with normal
+ * parameters, when there is a listener for all properties and another for
+ * the named property.
+ */
+ public void testFirePropertyChange_PropertyChangeEvent_Normal() {
+ Object src = new Object();
+ PropertyChangeSupport sup = new PropertyChangeSupport(src);
+ Object newValue = new Object();
+ Object oldValue = new Object();
+ Object src2 = new Object();
+ PropertyChangeEvent event = new PropertyChangeEvent(src2, "myProp",
+ oldValue, newValue);
+
+ MockPropertyChangeListener l1 = new MockPropertyChangeListener(src2,
+ "myProp", oldValue, newValue);
+ MockPropertyChangeListener l2 = new MockPropertyChangeListener(src2,
+ "myProp", oldValue, newValue);
+ PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp",
+ l2);
+ MockPropertyChangeListener l4 = new MockPropertyChangeListener(src2,
+ "myProp", oldValue, newValue);
+ sup.addPropertyChangeListener(l1);
+ sup.addPropertyChangeListener(l3);
+ sup.addPropertyChangeListener("myProp", l4);
+
+ sup.firePropertyChange(event);
+ l1.assertCalled();
+ l2.assertCalled();
+ l4.assertCalled();
+ }
+
+ /*
+ * Test the method firePropertyChange(PropertyChangeEvent) with equal old
+ * and new non-null values, when there is a listener for all properties and
+ * another for the named property.
+ */
+ public void testFirePropertyChange_PropertyChangeEvent_EqualValues() {
+ Object src = new Object();
+ PropertyChangeSupport sup = new PropertyChangeSupport(src);
+ Object newValue = new Object();
+ Object oldValue = newValue;
+ Object src2 = new Object();
+ PropertyChangeEvent event = new PropertyChangeEvent(src2, "myProp",
+ oldValue, newValue);
+
+ MockPropertyChangeListener l1 = new MockPropertyChangeListener(src2,
+ "myProp", oldValue, newValue);
+ MockPropertyChangeListener l2 = new MockPropertyChangeListener(src2,
+ "myProp", oldValue, newValue);
+ PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp",
+ l2);
+ MockPropertyChangeListener l4 = new MockPropertyChangeListener(src2,
+ "myProp", oldValue, newValue);
+ sup.addPropertyChangeListener(l1);
+ sup.addPropertyChangeListener(l3);
+ sup.addPropertyChangeListener("myProp", l4);
+
+ sup.firePropertyChange(event);
+ l1.assertNotCalled();
+ l2.assertNotCalled();
+ l4.assertNotCalled();
+ }
+
+ /*
+ * Test the method firePropertyChange(PropertyChangeEvent) with null old and
+ * new values, when there is a listener for all properties and another for
+ * the named property.
+ */
+ public void testFirePropertyChange_PropertyChangeEvent_NullValues() {
+ Object src = new Object();
+ PropertyChangeSupport sup = new PropertyChangeSupport(src);
+ Object newValue = null;
+ Object oldValue = null;
+ Object src2 = new Object();
+ PropertyChangeEvent event = new PropertyChangeEvent(src2, "myProp",
+ oldValue, newValue);
+
+ MockPropertyChangeListener l1 = new MockPropertyChangeListener(src2,
+ "myProp", oldValue, newValue);
+ MockPropertyChangeListener l2 = new MockPropertyChangeListener(src2,
+ "myProp", oldValue, newValue);
+ PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp",
+ l2);
+ MockPropertyChangeListener l4 = new MockPropertyChangeListener(src2,
+ "myProp", oldValue, newValue);
+ sup.addPropertyChangeListener(l1);
+ sup.addPropertyChangeListener(l3);
+ sup.addPropertyChangeListener("myProp", l4);
+
+ sup.firePropertyChange(event);
+ l1.assertCalled();
+ l2.assertCalled();
+ l4.assertCalled();
+ }
+
+ /*
+ * Test the method firePropertyChange(PropertyChangeEvent) with a non-null
[... 630 lines stripped ...]