1561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/* 2561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Licensed to the Apache Software Foundation (ASF) under one or more 3561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * contributor license agreements. See the NOTICE file distributed with 4561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * this work for additional information regarding copyright ownership. 5561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The ASF licenses this file to You under the Apache License, Version 2.0 6561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * (the "License"); you may not use this file except in compliance with 7561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * the License. You may obtain a copy of the License at 8561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 9561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 10561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 11561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Unless required by applicable law or agreed to in writing, software 12561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * distributed under the License is distributed on an "AS IS" BASIS, 13561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * See the License for the specific language governing permissions and 15561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * limitations under the License. 16561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 17561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 18561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage org.apache.harmony.beans.tests.java.beans; 19561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 20561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.beans.IndexedPropertyChangeEvent; 21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.beans.PropertyChangeEvent; 22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.beans.PropertyChangeListener; 23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.beans.PropertyChangeListenerProxy; 24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.beans.PropertyChangeSupport; 25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.File; 26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.FileInputStream; 27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.FileOutputStream; 28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.IOException; 29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.ObjectInputStream; 30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.ObjectOutputStream; 31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.Serializable; 32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.TestCase; 34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport org.apache.harmony.beans.tests.support.NonSerializablePropertyChangeListener; 36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport org.apache.harmony.beans.tests.support.SerializablePropertyChangeListener; 37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport org.apache.harmony.testframework.serialization.SerializationTest; 38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport org.apache.harmony.testframework.serialization.SerializationTest.SerializableAssert; 39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport tests.util.SerializationTester; 41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/** 43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test class PropertyChangeSupport. 44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class PropertyChangeSupportTest extends TestCase { 46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private File tempFile; 48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes protected void setUp() throws Exception { 51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes tempFile = File.createTempFile("beans", ".ser"); 52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes protected void tearDown() throws Exception { 56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes tempFile.delete(); 57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes tempFile = null; 58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test the constructor with a normal parameter. 61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testConstructor_Normal() { 63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object src = new Object(); 64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new PropertyChangeSupport(src); 65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test the method addPropertyChangeListener(PropertyChangeListener) with a 69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * normal listener parameter. 70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testAddPropertyChangeListener_PropertyChangeListener_Normal() { 72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object src = new Object(); 73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport sup = new PropertyChangeSupport(src); 74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener l1 = new MockPropertyChangeListener(); 75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener l2 = new MockPropertyChangeListener(); 76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp", 77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l2); 78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener l4 = new PropertyChangeListenerProxy("myProp", 79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l3); 80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(l1); 82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(1, sup.getPropertyChangeListeners().length); 84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertSame(l1, sup.getPropertyChangeListeners()[0]); 85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.removePropertyChangeListener(l1); 87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(l3); 88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(1, sup.getPropertyChangeListeners().length); 89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertSame(l2, ((PropertyChangeListenerProxy) sup 90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getPropertyChangeListeners()[0]).getListener()); 91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotSame(l3, sup.getPropertyChangeListeners()[0]); 92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.removePropertyChangeListener(sup.getPropertyChangeListeners()[0]); 94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, sup.getPropertyChangeListeners().length); 95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(l4); 96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes //RI asserts to true here, really strange behavior 97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotSame(l3, ((PropertyChangeListenerProxy) sup 98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getPropertyChangeListeners()[0]).getListener()); 99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotSame(l4, sup.getPropertyChangeListeners()[0]); 100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertSame( 101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l2, 102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ((PropertyChangeListenerProxy) ((PropertyChangeListenerProxy) sup 103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getPropertyChangeListeners()[0]).getListener()) 104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getListener()); 105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test the method addPropertyChangeListener(PropertyChangeListener) with a 109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * null listener parameter. 110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testAddPropertyChangeListener_PropertyChangeListener_Null() { 112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object src = new Object(); 113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport sup = new PropertyChangeSupport(src); 114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(null); 116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener[] listeners = sup.getPropertyChangeListeners(); 117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, listeners.length); 118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test the method addPropertyChangeListener(PropertyChangeListener) with a 122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * listener parameter that has already been registered. 123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testAddPropertyChangeListener_PropertyChangeListener_Duplicate() { 125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object src = new Object(); 126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport sup = new PropertyChangeSupport(src); 127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener l1 = new MockPropertyChangeListener(); 128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(l1); 130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(l1); 131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener[] listeners = sup.getPropertyChangeListeners(); 133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(2, listeners.length); 134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertSame(l1, listeners[0]); 135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertSame(l1, listeners[1]); 136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test the method addPropertyChangeListener(PropertyChangeListener, 140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * String) with a normal listener parameter and property name parameter. 141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testAddPropertyChangeListener_PropertyChangeListener_String_Normal() { 143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object src = new Object(); 144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport sup = new PropertyChangeSupport(src); 145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener l1 = new MockPropertyChangeListener(); 146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener l2 = new MockPropertyChangeListener(); 147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp", 148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l2); 149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener[] listeners; 150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener("myProp2", l1); 152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes listeners = sup.getPropertyChangeListeners(); 154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(1, listeners.length); 155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertSame(l1, ((PropertyChangeListenerProxy) listeners[0]) 156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getListener()); 157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.removePropertyChangeListener(listeners[0]); 159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener("myProp3", l3); 160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes listeners = sup.getPropertyChangeListeners(); 161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(1, listeners.length); 162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // pay attention to this recursive proxy 163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotSame(l3, ((PropertyChangeListenerProxy) listeners[0]) 164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getListener()); 165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotSame(l3, listeners[0]); 166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertSame( 167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l2, 168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ((PropertyChangeListenerProxy) ((PropertyChangeListenerProxy) listeners[0]) 169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getListener()).getListener()); 170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes listeners = sup.getPropertyChangeListeners("myProp"); 172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, listeners.length); 173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes listeners = sup.getPropertyChangeListeners("myProp3"); 175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(1, listeners.length); 176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // pay attention to this recursive proxy 177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotSame(l3, ((PropertyChangeListenerProxy) listeners[0]) 178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getListener()); 179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotSame(l3, listeners[0]); 180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertSame(l2, ((PropertyChangeListenerProxy) listeners[0]) 181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getListener()); 182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test the method addPropertyChangeListener(PropertyChangeListener, 187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * String) with a null listener parameter and a normal property name 188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * parameter. 189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testAddPropertyChangeListener_PropertyChangeListener_String_NullListener() { 191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object src = new Object(); 192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport sup = new PropertyChangeSupport(src); 193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener("myProp", null); 195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener[] listeners = sup.getPropertyChangeListeners(); 197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, listeners.length); 198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new PropertyChangeListenerProxy("myProp", null); 200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, listeners.length); 201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test the method addPropertyChangeListener(PropertyChangeListener, 205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * String) with a normal listener parameter and a null property name 206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * parameter. 207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testAddPropertyChangeListener_PropertyChangeListener_String_NullProperty() { 209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object src = new Object(); 210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport sup = new PropertyChangeSupport(src); 211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener l1 = new MockPropertyChangeListener(); 212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener l2 = new MockPropertyChangeListener(); 213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp", 214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l2); 215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(null, l1); 217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(null, l3); 218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l3 = new PropertyChangeListenerProxy(null, l2); 219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(l3); 220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test the method addPropertyChangeListener(PropertyChangeListener, 224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * String) with a listener parameter that has already been registered for 225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * the named property. 226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testAddPropertyChangeListener_PropertyChangeListener_String_Duplicate() { 228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object src = new Object(); 229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport sup = new PropertyChangeSupport(src); 230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener l1 = new MockPropertyChangeListener(); 231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener l2 = new MockPropertyChangeListener(); 232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp", 233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l2); 234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener("myProp2", l1); 236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener("myProp2", l1); 237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener[] listeners = sup.getPropertyChangeListeners(); 239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(2, listeners.length); 240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertSame(l1, ((PropertyChangeListenerProxy) listeners[0]) 241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getListener()); 242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertSame(l1, ((PropertyChangeListenerProxy) listeners[1]) 243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getListener()); 244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.removePropertyChangeListener(listeners[0]); 246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.removePropertyChangeListener(listeners[1]); 247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener("myProp3", l3); 248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener("myProp3", l3); 249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes listeners = sup.getPropertyChangeListeners(); 250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(2, listeners.length); 251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertSame( 252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l2, 253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ((PropertyChangeListenerProxy) ((PropertyChangeListenerProxy) listeners[0]) 254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getListener()).getListener()); 255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertSame( 256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l2, 257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ((PropertyChangeListenerProxy) ((PropertyChangeListenerProxy) listeners[1]) 258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getListener()).getListener()); 259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test the method removePropertyChangeListener(PropertyChangeListener) 263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * with a normal listener parameter. 264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testRemovePropertyChangeListener_PropertyChangeListener_Normal() { 266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object src = new Object(); 267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport sup = new PropertyChangeSupport(src); 268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener l1 = new MockPropertyChangeListener(); 269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener l2 = new MockPropertyChangeListener(); 270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp", 271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l2); 272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(l1); 274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener[] listeners = sup.getPropertyChangeListeners(); 276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(1, listeners.length); 277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.removePropertyChangeListener(l1); 278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes listeners = sup.getPropertyChangeListeners(); 279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, listeners.length); 280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(l3); 281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes listeners = sup.getPropertyChangeListeners(); 282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(1, listeners.length); 283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.removePropertyChangeListener(l3); 284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes listeners = sup.getPropertyChangeListeners(); 285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, listeners.length); 286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener("myProp3", l2); 287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes listeners = sup.getPropertyChangeListeners(); 288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(1, listeners.length); 289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.removePropertyChangeListener(l2); 290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes listeners = sup.getPropertyChangeListeners(); 291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(1, listeners.length); 292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.removePropertyChangeListener(listeners[0]); 293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes listeners = sup.getPropertyChangeListeners(); 294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, listeners.length); 295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test the method removePropertyChangeListener(PropertyChangeListener) 299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * with a null listener parameter. 300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testRemovePropertyChangeListener_PropertyChangeListener_Null() { 302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object src = new Object(); 303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport sup = new PropertyChangeSupport(src); 304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.removePropertyChangeListener(null); 306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, sup.getPropertyChangeListeners().length); 307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(null); 308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, sup.getPropertyChangeListeners().length); 309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.removePropertyChangeListener(null); 310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, sup.getPropertyChangeListeners().length); 311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test the method removePropertyChangeListener(PropertyChangeListener) 315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * with a non-registered listener parameter. 316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testRemovePropertyChangeListener_PropertyChangeListener_NonRegistered() { 318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object src = new Object(); 319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport sup = new PropertyChangeSupport(src); 320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.removePropertyChangeListener(new MockPropertyChangeListener()); 321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, sup.getPropertyChangeListeners().length); 322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test the method removePropertyChangeListener(PropertyChangeListener, 326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * String) when a listener for all properties has been registered. 327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testRemovePropertyChangeListener_PropertyChangeListener_String_AllRegistered() { 329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object src = new Object(); 330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport sup = new PropertyChangeSupport(src); 331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object newValue = new Object(); 332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object oldValue = new Object(); 333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockPropertyChangeListener l1 = new MockPropertyChangeListener(src, 335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "myProp", oldValue, newValue); 336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(l1); 338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.removePropertyChangeListener("myProp", l1); 340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(1, sup.getPropertyChangeListeners().length); 341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, sup.getPropertyChangeListeners("myProp").length); 342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.firePropertyChange("myProp", oldValue, newValue); 343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l1.assertCalled(); 344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test the method removePropertyChangeListener(PropertyChangeListener, 348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * String) when a listener for the named property has been registered. 349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testRemovePropertyChangeListener_PropertyChangeListener_String_PropertyRegistered() { 351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object src = new Object(); 352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport sup = new PropertyChangeSupport(src); 353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener l1 = new MockPropertyChangeListener(); 354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener("myProp", l1); 355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(1, sup.getPropertyChangeListeners().length); 356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.removePropertyChangeListener("myProp", l1); 358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, sup.getPropertyChangeListeners().length); 359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, sup.getPropertyChangeListeners("myProp").length); 360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener l2 = new MockPropertyChangeListener(); 362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp", 363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l2); 364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(l3); 365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(1, sup.getPropertyChangeListeners().length); 366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.removePropertyChangeListener("myProp", l2); 367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, sup.getPropertyChangeListeners().length); 368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, sup.getPropertyChangeListeners("myProp").length); 369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test the method removePropertyChangeListener(PropertyChangeListener, 373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * String) with a non-registered listener parameter. 374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testRemovePropertyChangeListener_PropertyChangeListener_String_NonRegistered() { 376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object src = new Object(); 377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport sup = new PropertyChangeSupport(src); 378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.removePropertyChangeListener("myProp", 379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new MockPropertyChangeListener()); 380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, sup.getPropertyChangeListeners().length); 381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test the method removePropertyChangeListener(PropertyChangeListener, 385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * String) with a null listener parameter. 386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testRemovePropertyChangeListener_PropertyChangeListener_String_NullListener() { 388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object src = new Object(); 389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport sup = new PropertyChangeSupport(src); 390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.removePropertyChangeListener("myProp", null); 392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, sup.getPropertyChangeListeners().length); 393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener("myProp", null); 394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, sup.getPropertyChangeListeners().length); 395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.removePropertyChangeListener("myProp", null); 396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, sup.getPropertyChangeListeners().length); 397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test the method removePropertyChangeListener(PropertyChangeListener, 401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * String) with a null property name parameter. 402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testRemovePropertyChangeListener_PropertyChangeListener_String_NullProperty() { 404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object src = new Object(); 405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport sup = new PropertyChangeSupport(src); 406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.removePropertyChangeListener(null, 408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new MockPropertyChangeListener()); 409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener("myProp", 410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new MockPropertyChangeListener()); 411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.removePropertyChangeListener(null, 412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new MockPropertyChangeListener()); 413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test the method getPropertyChangeListeners() when there is one listener 417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * for all properties and one for a named property. 418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testGetPropertyChangeListener_Normal() { 420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object src = new Object(); 421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport sup = new PropertyChangeSupport(src); 422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener l1 = new MockPropertyChangeListener(); 423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener l2 = new MockPropertyChangeListener(); 424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp", 425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l2); 426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener l4 = new MockPropertyChangeListener(); 427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(l1); 429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(l3); 430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener("myProp2", l4); 431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(3, sup.getPropertyChangeListeners().length); 433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test the method getPropertyChangeListeners() when there is no listeners. 437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testGetPropertyChangeListener_Empty() { 439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object src = new Object(); 440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport sup = new PropertyChangeSupport(src); 441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, sup.getPropertyChangeListeners().length); 442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test the method getPropertyChangeListeners(String) when there is one 446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * listener for all properties and one for the named property and a third 447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * for another named property. 448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 449561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testGetPropertyChangeListener_String_Normal() { 450561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object src = new Object(); 451561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport sup = new PropertyChangeSupport(src); 452561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener l1 = new MockPropertyChangeListener(); 453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener l2 = new MockPropertyChangeListener(); 454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp", 455561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l2); 456561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener l4 = new MockPropertyChangeListener(); 457561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(l1); 459561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(l3); 460561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener("myProp2", l4); 461561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(1, sup.getPropertyChangeListeners("myProp").length); 463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertSame(l2, sup.getPropertyChangeListeners("myProp")[0]); 464561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener("myProp", 465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new MockPropertyChangeListener()); 466561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(2, sup.getPropertyChangeListeners("myProp").length); 467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 468561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 469561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 470561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test the method getPropertyChangeListeners(String) when there is no 471561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * listener for the named property but there is one for another named 472561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * property. 473561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 474561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testGetPropertyChangeListener_String_None() { 475561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object src = new Object(); 476561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport sup = new PropertyChangeSupport(src); 477561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener l1 = new MockPropertyChangeListener(); 478561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener l2 = new MockPropertyChangeListener(); 479561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp2", 480561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l2); 481561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener l4 = new MockPropertyChangeListener(); 482561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 483561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(l1); 484561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(l3); 485561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener("myProp3", l4); 486561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 487561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, sup.getPropertyChangeListeners("myProp").length); 488561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 489561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 490561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 491561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test the method getPropertyChangeListeners(String) with a null parameter. 492561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 493561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testGetPropertyChangeListener_String_Null() { 494561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object src = new Object(); 495561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport sup = new PropertyChangeSupport(src); 496561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 497561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.getPropertyChangeListeners(null); 498561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener("myProp", 499561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new MockPropertyChangeListener()); 500561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.getPropertyChangeListeners(null); 501561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 502561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 503561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 504561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test the method hasListeners(String) when there is one listener for all 505561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * properties. 506561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 507561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testHasListener_AllRegistered() { 508561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object src = new Object(); 509561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport sup = new PropertyChangeSupport(src); 510561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener l1 = new MockPropertyChangeListener(); 511561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener l2 = new MockPropertyChangeListener(); 512561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp", 513561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l2); 514561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 515561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(sup.hasListeners("myProp")); 516561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(l1); 517561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(sup.hasListeners("myProp")); 518561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.removePropertyChangeListener(l1); 519561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(sup.hasListeners("myProp")); 520561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(l3); 521561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(sup.hasListeners("myProp")); 522561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 523561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 524561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 525561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test the method hasListeners(String) when there is one listener for the 526561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * named property. 527561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 528561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testHasListener_PropertyRegistered() { 529561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object src = new Object(); 530561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport sup = new PropertyChangeSupport(src); 531561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener l1 = new MockPropertyChangeListener(); 532561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener l2 = new MockPropertyChangeListener(); 533561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp", 534561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l2); 535561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 536561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(sup.hasListeners("myProp")); 537561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener("myProP", l1); 538561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(sup.hasListeners("myProp")); 539561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener("myProp", l2); 540561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(sup.hasListeners("myProp")); 541561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.removePropertyChangeListener("myProp", l2); 542561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(sup.hasListeners("myProp")); 543561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // The following assertion fails on RI. See HARMONY-2526 544561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener("myProp", l3); 545561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(sup.hasListeners("myProp")); 546561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 547561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 548561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 549561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test the method hasListeners(String) when there is no listeners. 550561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 551561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testHasListener_None() { 552561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object src = new Object(); 553561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport sup = new PropertyChangeSupport(src); 554561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(sup.hasListeners("myProp")); 555561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 556561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 557561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 558561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test the method hasListeners(String) with a null parameter. 559561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 560561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testHasListener_Null() { 561561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object src = new Object(); 562561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport sup = new PropertyChangeSupport(src); 563561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener l1 = new MockPropertyChangeListener(); 564561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 565561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(sup.hasListeners(null)); 566561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 567561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener("myProP", l1); 568561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.hasListeners(null); 569561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 570561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 571561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testFireIndexedPropertyChange() { 572561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes final Object src = new Object(); 573561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport pcs = new PropertyChangeSupport(src); 574561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes pcs.addPropertyChangeListener(new PropertyChangeListener() { 575561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void propertyChange(PropertyChangeEvent evt) { 576561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(src, evt.getSource()); 577561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, ((IndexedPropertyChangeEvent)evt).getIndex()); 578561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("one", evt.getOldValue()); 579561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("two", evt.getNewValue()); 580561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 581561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }); 582561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 583561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes pcs.fireIndexedPropertyChange("foo", 0, "one", "two"); 584561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 585561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 586561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 587561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test the method firePropertyChange(String, Object, Object) with normal 588561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * parameters, when there is no listeners. 589561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 590561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testFirePropertyChange_Object_NoListeners() { 591561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object src = new Object(); 592561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport sup = new PropertyChangeSupport(src); 593561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.firePropertyChange("myProp", new Object(), new Object()); 594561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 595561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 596561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 597561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test the method firePropertyChange(String, Object, Object) with normal 598561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * parameters, when there is a listener for all properties and another for 599561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * the named property. 600561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 601561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testFirePropertyChange_Object_Normal() { 602561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object src = new Object(); 603561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport sup = new PropertyChangeSupport(src); 604561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object newValue = new Object(); 605561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object oldValue = new Object(); 606561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 607561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockPropertyChangeListener l1 = new MockPropertyChangeListener(src, 608561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "myProp", oldValue, newValue); 609561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockPropertyChangeListener l2 = new MockPropertyChangeListener(src, 610561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "myProp", oldValue, newValue); 611561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp", 612561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l2); 613561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockPropertyChangeListener l4 = new MockPropertyChangeListener(src, 614561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "myProp", oldValue, newValue); 615561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(l1); 616561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(l3); 617561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener("myProp", l4); 618561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 619561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.firePropertyChange("myProp", oldValue, newValue); 620561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l1.assertCalled(); 621561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l2.assertCalled(); 622561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l4.assertCalled(); 623561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 624561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 625561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 626561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test the method firePropertyChange(String, Object, Object) with equal old 627561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * and new non-null values, when there is a listener for all properties and 628561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * another for the named property. 629561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 630561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testFirePropertyChange_Object_EqualValues() { 631561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object src = new Object(); 632561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport sup = new PropertyChangeSupport(src); 633561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object newValue = new Object(); 634561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object oldValue = newValue; 635561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 636561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockPropertyChangeListener l1 = new MockPropertyChangeListener(src, 637561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "myProp", oldValue, newValue); 638561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockPropertyChangeListener l2 = new MockPropertyChangeListener(src, 639561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "myProp", oldValue, newValue); 640561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp", 641561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l2); 642561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockPropertyChangeListener l4 = new MockPropertyChangeListener(src, 643561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "myProp", oldValue, newValue); 644561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(l1); 645561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(l3); 646561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener("myProp", l4); 647561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 648561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.firePropertyChange("myProp", oldValue, newValue); 649561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l1.assertNotCalled(); 650561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l2.assertNotCalled(); 651561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l4.assertNotCalled(); 652561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 653561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 654561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 655561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test the method firePropertyChange(String, Object, Object) with null old 656561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * and new values, when there is a listener for all properties and another 657561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * for the named property. 658561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 659561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testFirePropertyChange_Object_NullValues() { 660561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object src = new Object(); 661561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport sup = new PropertyChangeSupport(src); 662561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object newValue = null; 663561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object oldValue = null; 664561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 665561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockPropertyChangeListener l1 = new MockPropertyChangeListener(src, 666561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "myProp", oldValue, newValue); 667561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockPropertyChangeListener l2 = new MockPropertyChangeListener(src, 668561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "myProp", oldValue, newValue); 669561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp", 670561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l2); 671561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockPropertyChangeListener l4 = new MockPropertyChangeListener(src, 672561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "myProp", oldValue, newValue); 673561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(l1); 674561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(l3); 675561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener("myProp", l4); 676561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 677561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.firePropertyChange("myProp", oldValue, newValue); 678561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l1.assertCalled(); 679561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l2.assertCalled(); 680561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l4.assertCalled(); 681561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 682561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 683561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 684561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test the method firePropertyChange(String, Object, Object) with a 685561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * non-null old value and a null new value, when there is a listener for all 686561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * properties and another for the named property. 687561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 688561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testFirePropertyChange_Object_NullNewValue() { 689561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object src = new Object(); 690561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport sup = new PropertyChangeSupport(src); 691561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object newValue = null; 692561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object oldValue = new Object(); 693561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 694561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockPropertyChangeListener l1 = new MockPropertyChangeListener(src, 695561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "myProp", oldValue, newValue); 696561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockPropertyChangeListener l2 = new MockPropertyChangeListener(src, 697561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "myProp", oldValue, newValue); 698561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp", 699561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l2); 700561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockPropertyChangeListener l4 = new MockPropertyChangeListener(src, 701561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "myProp", oldValue, newValue); 702561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(l1); 703561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(l3); 704561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener("myProp", l4); 705561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 706561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.firePropertyChange("myProp", oldValue, newValue); 707561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l1.assertCalled(); 708561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l2.assertCalled(); 709561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l4.assertCalled(); 710561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 711561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 712561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 713561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test the method firePropertyChange(String, Object, Object) with a null 714561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * old value and a non-null new value, when there is a listener for all 715561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * properties and another for the named property. 716561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 717561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testFirePropertyChange_Object_NullOldValue() { 718561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object src = new Object(); 719561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport sup = new PropertyChangeSupport(src); 720561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object newValue = new Object(); 721561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object oldValue = null; 722561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 723561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockPropertyChangeListener l1 = new MockPropertyChangeListener(src, 724561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "myProp", oldValue, newValue); 725561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockPropertyChangeListener l2 = new MockPropertyChangeListener(src, 726561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "myProp", oldValue, newValue); 727561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp", 728561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l2); 729561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockPropertyChangeListener l4 = new MockPropertyChangeListener(src, 730561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "myProp", oldValue, newValue); 731561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(l1); 732561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(l3); 733561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener("myProp", l4); 734561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 735561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.firePropertyChange("myProp", oldValue, newValue); 736561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l1.assertCalled(); 737561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l2.assertCalled(); 738561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l4.assertCalled(); 739561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 740561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 741561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 742561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test the method firePropertyChange(String, Object, Object) with a null 743561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * property name parameter. 744561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 745561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testFirePropertyChange_Object_NullProperty() { 746561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object src = new Object(); 747561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport sup = new PropertyChangeSupport(src); 748561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object newValue = new Object(); 749561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object oldValue = new Object(); 750561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 751561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockPropertyChangeListener l1 = new MockPropertyChangeListener(src, 752561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes null, oldValue, newValue); 753561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockPropertyChangeListener l2 = new MockPropertyChangeListener(src, 754561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes null, oldValue, newValue); 755561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp", 756561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l2); 757561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockPropertyChangeListener l4 = new MockPropertyChangeListener(src, 758561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes null, oldValue, newValue); 759561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(l1); 760561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(l3); 761561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener("myProp", l4); 762561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 763561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.firePropertyChange(null, oldValue, newValue); 764561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l1.assertCalled(); 765561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l2.assertNotCalled(); 766561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l4.assertNotCalled(); 767561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 768561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 769561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 770561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test the method firePropertyChange(String, Object, Object) when a null 771561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * listener has been registered. 772561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 773561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testFirePropertyChange_Object_NullListener() { 774561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object src = new Object(); 775561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport sup = new PropertyChangeSupport(src); 776561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object newValue = new Object(); 777561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object oldValue = new Object(); 778561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 779561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(null); 780561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.firePropertyChange("myProp", oldValue, newValue); 781561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 782561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 783561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 784561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test the method firePropertyChange(PropertyChangeEvent) with normal 785561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * parameters, when there is a listener for all properties and another for 786561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * the named property. 787561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 788561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testFirePropertyChange_PropertyChangeEvent_Normal() { 789561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object src = new Object(); 790561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport sup = new PropertyChangeSupport(src); 791561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object newValue = new Object(); 792561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object oldValue = new Object(); 793561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object src2 = new Object(); 794561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeEvent event = new PropertyChangeEvent(src2, "myProp", 795561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes oldValue, newValue); 796561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 797561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockPropertyChangeListener l1 = new MockPropertyChangeListener(src2, 798561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "myProp", oldValue, newValue); 799561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockPropertyChangeListener l2 = new MockPropertyChangeListener(src2, 800561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "myProp", oldValue, newValue); 801561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp", 802561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l2); 803561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockPropertyChangeListener l4 = new MockPropertyChangeListener(src2, 804561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "myProp", oldValue, newValue); 805561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(l1); 806561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(l3); 807561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener("myProp", l4); 808561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 809561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.firePropertyChange(event); 810561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l1.assertCalled(); 811561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l2.assertCalled(); 812561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l4.assertCalled(); 813561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 814561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 815561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 816561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test the method firePropertyChange(PropertyChangeEvent) with equal old 817561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * and new non-null values, when there is a listener for all properties and 818561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * another for the named property. 819561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 820561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testFirePropertyChange_PropertyChangeEvent_EqualValues() { 821561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object src = new Object(); 822561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport sup = new PropertyChangeSupport(src); 823561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object newValue = new Object(); 824561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object oldValue = newValue; 825561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object src2 = new Object(); 826561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeEvent event = new PropertyChangeEvent(src2, "myProp", 827561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes oldValue, newValue); 828561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 829561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockPropertyChangeListener l1 = new MockPropertyChangeListener(src2, 830561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "myProp", oldValue, newValue); 831561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockPropertyChangeListener l2 = new MockPropertyChangeListener(src2, 832561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "myProp", oldValue, newValue); 833561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp", 834561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l2); 835561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockPropertyChangeListener l4 = new MockPropertyChangeListener(src2, 836561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "myProp", oldValue, newValue); 837561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(l1); 838561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(l3); 839561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener("myProp", l4); 840561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 841561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.firePropertyChange(event); 842561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l1.assertNotCalled(); 843561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l2.assertNotCalled(); 844561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l4.assertNotCalled(); 845561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 846561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 847561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 848561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test the method firePropertyChange(PropertyChangeEvent) with null old and 849561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * new values, when there is a listener for all properties and another for 850561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * the named property. 851561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 852561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testFirePropertyChange_PropertyChangeEvent_NullValues() { 853561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object src = new Object(); 854561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport sup = new PropertyChangeSupport(src); 855561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object newValue = null; 856561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object oldValue = null; 857561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object src2 = new Object(); 858561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeEvent event = new PropertyChangeEvent(src2, "myProp", 859561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes oldValue, newValue); 860561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 861561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockPropertyChangeListener l1 = new MockPropertyChangeListener(src2, 862561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "myProp", oldValue, newValue); 863561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockPropertyChangeListener l2 = new MockPropertyChangeListener(src2, 864561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "myProp", oldValue, newValue); 865561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp", 866561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l2); 867561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockPropertyChangeListener l4 = new MockPropertyChangeListener(src2, 868561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "myProp", oldValue, newValue); 869561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(l1); 870561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(l3); 871561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener("myProp", l4); 872561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 873561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.firePropertyChange(event); 874561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l1.assertCalled(); 875561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l2.assertCalled(); 876561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l4.assertCalled(); 877561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 878561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 879561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 880561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test the method firePropertyChange(PropertyChangeEvent) with a non-null 881561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * old value and a null new value, when there is a listener for all 882561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * properties and another for the named property. 883561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 884561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testFirePropertyChange_PropertyChangeEvent_NullNewValue() { 885561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object src = new Object(); 886561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport sup = new PropertyChangeSupport(src); 887561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object newValue = null; 888561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object oldValue = new Object(); 889561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object src2 = new Object(); 890561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeEvent event = new PropertyChangeEvent(src2, "myProp", 891561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes oldValue, newValue); 892561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 893561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockPropertyChangeListener l1 = new MockPropertyChangeListener(src2, 894561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "myProp", oldValue, newValue); 895561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockPropertyChangeListener l2 = new MockPropertyChangeListener(src2, 896561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "myProp", oldValue, newValue); 897561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp", 898561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l2); 899561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockPropertyChangeListener l4 = new MockPropertyChangeListener(src2, 900561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "myProp", oldValue, newValue); 901561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(l1); 902561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(l3); 903561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener("myProp", l4); 904561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 905561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.firePropertyChange(event); 906561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l1.assertCalled(); 907561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l2.assertCalled(); 908561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l4.assertCalled(); 909561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 910561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 911561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 912561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test the method firePropertyChange(PropertyChangeEvent) with a null old 913561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * value and a non-null new value, when there is a listener for all 914561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * properties and another for the named property. 915561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 916561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testFirePropertyChange_PropertyChangeEvent_NullOldValue() { 917561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object src = new Object(); 918561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport sup = new PropertyChangeSupport(src); 919561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object newValue = new Object(); 920561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object oldValue = null; 921561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object src2 = new Object(); 922561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeEvent event = new PropertyChangeEvent(src2, "myProp", 923561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes oldValue, newValue); 924561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 925561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockPropertyChangeListener l1 = new MockPropertyChangeListener(src2, 926561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "myProp", oldValue, newValue); 927561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockPropertyChangeListener l2 = new MockPropertyChangeListener(src2, 928561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "myProp", oldValue, newValue); 929561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp", 930561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l2); 931561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockPropertyChangeListener l4 = new MockPropertyChangeListener(src2, 932561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "myProp", oldValue, newValue); 933561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(l1); 934561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(l3); 935561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener("myProp", l4); 936561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 937561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.firePropertyChange(event); 938561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l1.assertCalled(); 939561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l2.assertCalled(); 940561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l4.assertCalled(); 941561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 942561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 943561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 944561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test the method firePropertyChange(PropertyChangeEvent) with a null 945561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * property name parameter. 946561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 947561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testFirePropertyChange_PropertyChangeEvent_NullProperty() { 948561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object src = new Object(); 949561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport sup = new PropertyChangeSupport(src); 950561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object newValue = new Object(); 951561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object oldValue = new Object(); 952561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object src2 = new Object(); 953561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeEvent event = new PropertyChangeEvent(src2, null, 954561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes oldValue, newValue); 955561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 956561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockPropertyChangeListener l1 = new MockPropertyChangeListener(src2, 957561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes null, oldValue, newValue); 958561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockPropertyChangeListener l2 = new MockPropertyChangeListener(src2, 959561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes null, oldValue, newValue); 960561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp", 961561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l2); 962561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockPropertyChangeListener l4 = new MockPropertyChangeListener(src2, 963561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes null, oldValue, newValue); 964561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(l1); 965561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(l3); 966561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener("myProp", l4); 967561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 968561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.firePropertyChange(event); 969561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l1.assertCalled(); 970561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l2.assertNotCalled(); 971561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l4.assertNotCalled(); 972561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 973561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 974561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 975561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test the method firePropertyChange(PropertyChangeEvent) when null. 976561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 977561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testFirePropertyChange_PropertyChangeEvent_Null() { 978561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object src = new Object(); 979561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport sup = new PropertyChangeSupport(src); 980561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 981561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 982561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.firePropertyChange(null); 983561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NullPointerException!"); 984561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException ex) { 985561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 986561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 987561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 988561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 989561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 990561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test the method firePropertyChange(PropertyChangeEvent) when a null 991561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * listener has been registered. 992561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 993561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testFirePropertyChange_PropertyChangeEvent_NullListener() { 994561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport sup = new PropertyChangeSupport(new Object()); 995561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeEvent event = new PropertyChangeEvent(new Object(), 996561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "myProp", new Object(), new Object()); 997561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 998561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(null); 999561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.firePropertyChange(event); 1000561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1001561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1002561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 1003561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test the method firePropertyChange(String, boolean, boolean) with normal 1004561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * parameters, when there is a listener for all properties and another for 1005561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * the named property. 1006561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1007561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testFirePropertyChange_Boolean_Normal() { 1008561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object src = new Object(); 1009561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport sup = new PropertyChangeSupport(src); 1010561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object newValue = Boolean.TRUE; 1011561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object oldValue = Boolean.FALSE; 1012561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1013561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockPropertyChangeListener l1 = new MockPropertyChangeListener(src, 1014561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "myProp", oldValue, newValue); 1015561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockPropertyChangeListener l2 = new MockPropertyChangeListener(src, 1016561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "myProp", oldValue, newValue); 1017561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp", 1018561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l2); 1019561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockPropertyChangeListener l4 = new MockPropertyChangeListener(src, 1020561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "myProp", oldValue, newValue); 1021561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(l1); 1022561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(l3); 1023561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener("myProp", l4); 1024561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1025561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.firePropertyChange("myProp", false, true); 1026561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l1.assertCalled(); 1027561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l2.assertCalled(); 1028561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l4.assertCalled(); 1029561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1030561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1031561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 1032561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test the method firePropertyChange(String, boolean, boolean) with equal 1033561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * old and new non-null values, when there is a listener for all properties 1034561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * and another for the named property. 1035561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1036561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testFirePropertyChange_Boolean_EqualValues() { 1037561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object src = new Object(); 1038561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport sup = new PropertyChangeSupport(src); 1039561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object newValue = Boolean.TRUE; 1040561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object oldValue = newValue; 1041561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1042561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockPropertyChangeListener l1 = new MockPropertyChangeListener(src, 1043561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "myProp", oldValue, newValue); 1044561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockPropertyChangeListener l2 = new MockPropertyChangeListener(src, 1045561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "myProp", oldValue, newValue); 1046561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp", 1047561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l2); 1048561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockPropertyChangeListener l4 = new MockPropertyChangeListener(src, 1049561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "myProp", oldValue, newValue); 1050561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(l1); 1051561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(l3); 1052561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener("myProp", l4); 1053561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1054561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.firePropertyChange("myProp", true, true); 1055561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l1.assertNotCalled(); 1056561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l2.assertNotCalled(); 1057561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l4.assertNotCalled(); 1058561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1059561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1060561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 1061561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test the method firePropertyChange(String, boolean, boolean) with a null 1062561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * property name parameter. 1063561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1064561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testFirePropertyChange_Boolean_NullProperty() { 1065561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object src = new Object(); 1066561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport sup = new PropertyChangeSupport(src); 1067561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object newValue = Boolean.TRUE; 1068561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object oldValue = Boolean.FALSE; 1069561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1070561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockPropertyChangeListener l1 = new MockPropertyChangeListener(src, 1071561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes null, oldValue, newValue); 1072561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockPropertyChangeListener l2 = new MockPropertyChangeListener(src, 1073561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes null, oldValue, newValue); 1074561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp", 1075561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l2); 1076561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockPropertyChangeListener l4 = new MockPropertyChangeListener(src, 1077561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes null, oldValue, newValue); 1078561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(l1); 1079561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(l3); 1080561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener("myProp", l4); 1081561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1082561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.firePropertyChange(null, false, true); 1083561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l1.assertCalled(); 1084561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l2.assertNotCalled(); 1085561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l4.assertNotCalled(); 1086561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1087561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1088561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 1089561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test the method firePropertyChange(String, boolean, boolean) when a null 1090561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * listener has been registered. 1091561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1092561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testFirePropertyChange_Boolean_NullListener() { 1093561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport sup = new PropertyChangeSupport(new Object()); 1094561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1095561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(null); 1096561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.firePropertyChange("myProp", true, false); 1097561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1098561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1099561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 1100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test the method firePropertyChange(String, int, int) with normal 1101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * parameters, when there is a listener for all properties and another for 1102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * the named property. 1103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testFirePropertyChange_Int_Normal() { 1105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object src = new Object(); 1106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport sup = new PropertyChangeSupport(src); 1107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int newValue = 1; 1108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int oldValue = 2; 1109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockPropertyChangeListener l1 = new MockPropertyChangeListener(src, 1111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "myProp", oldValue, newValue); 1112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockPropertyChangeListener l2 = new MockPropertyChangeListener(src, 1113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "myProp", oldValue, newValue); 1114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp", 1115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l2); 1116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockPropertyChangeListener l4 = new MockPropertyChangeListener(src, 1117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "myProp", oldValue, newValue); 1118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(l1); 1119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(l3); 1120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener("myProp", l4); 1121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.firePropertyChange("myProp", oldValue, newValue); 1123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l1.assertCalled(); 1124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l2.assertCalled(); 1125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l4.assertCalled(); 1126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 1129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test the method firePropertyChange(String, int, int) with equal old and 1130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * new non-null values, when there is a listener for all properties and 1131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * another for the named property. 1132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testFirePropertyChange_Int_EqualValues() { 1134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object src = new Object(); 1135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport sup = new PropertyChangeSupport(src); 1136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Integer newValue = new Integer(1); 1137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Integer oldValue = newValue; 1138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockPropertyChangeListener l1 = new MockPropertyChangeListener(src, 1140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "myProp", oldValue, newValue); 1141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockPropertyChangeListener l2 = new MockPropertyChangeListener(src, 1142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "myProp", oldValue, newValue); 1143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp", 1144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l2); 1145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockPropertyChangeListener l4 = new MockPropertyChangeListener(src, 1146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "myProp", oldValue, newValue); 1147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(l1); 1148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(l3); 1149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener("myProp", l4); 1150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.firePropertyChange("myProp", oldValue.intValue(), newValue 1152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .intValue()); 1153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l1.assertNotCalled(); 1154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l2.assertNotCalled(); 1155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l4.assertNotCalled(); 1156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 1159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test the method firePropertyChange(String, int, int) with a null property 1160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * name parameter. 1161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testFirePropertyChange_Int_NullProperty() { 1163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object src = new Object(); 1164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport sup = new PropertyChangeSupport(src); 1165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Integer newValue = new Integer(1); 1166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Integer oldValue = new Integer(2); 1167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockPropertyChangeListener l1 = new MockPropertyChangeListener(src, 1169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes null, oldValue, newValue); 1170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockPropertyChangeListener l2 = new MockPropertyChangeListener(src, 1171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes null, oldValue, newValue); 1172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp", 1173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l2); 1174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockPropertyChangeListener l4 = new MockPropertyChangeListener(src, 1175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes null, oldValue, newValue); 1176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(l1); 1177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(l3); 1178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener("myProp", l4); 1179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.firePropertyChange(null, oldValue.intValue(), newValue.intValue()); 1181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l1.assertCalled(); 1182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l2.assertNotCalled(); 1183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes l4.assertNotCalled(); 1184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 1187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test the method firePropertyChange(String, int, int) when a null listener 1188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * has been registered. 1189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testFirePropertyChange_Int_NullListener() { 1191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object src = new Object(); 1192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport sup = new PropertyChangeSupport(src); 1193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(null); 1195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.firePropertyChange("myProp", 1, 2); 1196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 1199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test serialization/deserialization. 1200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testSerialization() throws Exception { 1202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object src = "PropertyChangeSupportSerializationTest"; 1203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport sup = new PropertyChangeSupport(src); 1204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport sup2 = new PropertyChangeSupport(src); 1205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Integer newValue = new Integer(1); 1206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Integer oldValue = new Integer(2); 1207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockPropertyChangeListener l1 = new MockPropertyChangeListener(src, 1209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "myProp", oldValue, newValue); 1210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockPropertyChangeListener2 l2 = new MockPropertyChangeListener2(); 1211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(l1); 1213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener("myProp", l1); 1214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener("myProp", l2); 1215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup2.addPropertyChangeListener(l1); 1216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup2.addPropertyChangeListener("myProp", l1); 1217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport deSup = (PropertyChangeSupport) SerializationTester 1219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getDeserilizedObject(sup); 1220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(sup2.getPropertyChangeListeners()[0], deSup 1221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getPropertyChangeListeners()[0]); 1222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(((PropertyChangeListenerProxy) sup2 1223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getPropertyChangeListeners()[1]).getListener(), 1224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ((PropertyChangeListenerProxy) deSup 1225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getPropertyChangeListeners()[1]).getListener()); 1226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 1229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test serialization/deserialization compatibility 1230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testSerializationCompatibility() throws Exception { 1233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object src = "PropertyChangeSupportSerializationTest"; 1234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport sup = new PropertyChangeSupport(src); 1235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport sup2 = new PropertyChangeSupport(src); 1236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Integer newValue = new Integer(1); 1237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Integer oldValue = new Integer(2); 1238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockPropertyChangeListener l1 = new MockPropertyChangeListener(src, 1240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "myProp", oldValue, newValue); 1241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockPropertyChangeListener2 l2 = new MockPropertyChangeListener2(); 1242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener(l1); 1244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener("myProp", l1); 1245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup.addPropertyChangeListener("myProp", l2); 1246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup2.addPropertyChangeListener(l1); 1247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sup2.addPropertyChangeListener("myProp", l1); 1248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SerializationTest.verifyGolden(this, sup2, new SerializableAssert() { 1249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void assertDeserialized(Serializable initial, 1250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Serializable deserialized) { 1251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport sup2 = (PropertyChangeSupport) initial; 1252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport deSup = (PropertyChangeSupport) deserialized; 1253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(sup2.getPropertyChangeListeners()[0], deSup 1254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getPropertyChangeListeners()[0]); 1255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(((PropertyChangeListenerProxy) sup2 1256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getPropertyChangeListeners()[1]).getListener(), 1257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ((PropertyChangeListenerProxy) deSup 1258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getPropertyChangeListeners()[1]).getListener()); 1259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }); 1261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 1264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Mock PropertyChangeListener. 1265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes static class MockPropertyChangeListener implements PropertyChangeListener, 1267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Serializable { 1268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final long serialVersionUID = 161877638385579731L; 1270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private transient Object expSrc; 1272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private String expPropName; 1274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private transient Object expOldValue; 1276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private transient Object expNewValue; 1278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private transient PropertyChangeEvent event; 1280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private final transient boolean called = false; 1282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public MockPropertyChangeListener() { 1284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public MockPropertyChangeListener(Object src, String propName, 1287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object oldValue, Object newValue) { 1288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes this.expSrc = src; 1289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes this.expPropName = propName; 1290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes this.expOldValue = oldValue; 1291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes this.expNewValue = newValue; 1292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void setAll(Object src, String propName, Object oldValue, 1295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object newValue) { 1296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes this.expSrc = src; 1297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes this.expPropName = propName; 1298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes this.expOldValue = oldValue; 1299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes this.expNewValue = newValue; 1300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void propertyChange(PropertyChangeEvent event) { 1303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes this.event = event; 1304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void assertCalled() { 1307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertSame(expSrc, event.getSource()); 1308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(expPropName, event.getPropertyName()); 1309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(expOldValue, event.getOldValue()); 1310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(expNewValue, event.getNewValue()); 1311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull(event.getPropagationId()); 1312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void assertNotCalled() { 1315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull(event); 1316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(called); 1317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 1320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public boolean equals(Object obj) { 1321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (obj instanceof MockPropertyChangeListener) { 1322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockPropertyChangeListener l = (MockPropertyChangeListener) obj; 1323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return null == this.expPropName ? null == l.expPropName 1324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes : this.expPropName.equals(l.expPropName); 1325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return false; 1327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 1331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Mock PropertyChangeListener which is not serializable. 1332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes static class MockPropertyChangeListener2 implements PropertyChangeListener { 1334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void propertyChange(PropertyChangeEvent event) { 1336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 1340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Mock PropertyChangeListener that modifies the listener set on 1341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * notification. 1342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes static class MockPropertyChangeListener3 implements PropertyChangeListener { 1344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport changeSupport; 1346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public MockPropertyChangeListener3(PropertyChangeSupport changeSupport) { 1348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super(); 1349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes this.changeSupport = changeSupport; 1350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* On property changed event modify the listener set */ 1353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void propertyChange(PropertyChangeEvent event) { 1354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes changeSupport 1355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .addPropertyChangeListener(new PropertyChangeListener() { 1356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void propertyChange(PropertyChangeEvent event) { 1357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Empty 1358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }); 1360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 1364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Regression test for concurrent modification of listener set 1365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @SuppressWarnings("unused") 1367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testConcurrentModification() { 1368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport changeSupport = new PropertyChangeSupport("bogus"); 1369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockPropertyChangeListener3 changeListener = new MockPropertyChangeListener3( 1370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes changeSupport); 1371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes changeSupport.firePropertyChange("bogus property", "previous", "newer"); 1372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 1375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.beans.PropertyChangeSupport#PropertyChangeSupport( 1376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * java.lang.Object) 1377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testConstructor_Null() { 1379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Regression for HARMONY-227 1380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new PropertyChangeSupport(null); 1382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NullPointerException!"); 1383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException ex) { 1384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 1385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 1389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.beans.PropertyChangeSupport#addPropertyChangeSupport 1390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 1391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_addPropertyChangeListenerNullNull() throws Exception { 1393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Regression for HARMONY-441 1394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new PropertyChangeSupport("bean1") 1395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .addPropertyChangeListener(null, null); 1396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 1399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.beans.PropertyChangeSupport#removePropertyChangeListener( 1400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * java.lang.String, java.beans.PropertyChangeListener) 1401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testRemovePropertyChangeListener() { 1403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Regression for HARMONY-386 1404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport prop = new PropertyChangeSupport(new Object()); 1405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener lis1 = new PropertyChangeListener() { 1407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void propertyChange(PropertyChangeEvent event) { 1409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }; 1411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener lis2 = new PropertyChangeListenerProxy("name", 1413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes lis1); 1414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, prop.getPropertyChangeListeners().length); 1416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes prop.addPropertyChangeListener(lis2); 1418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(1, prop.getPropertyChangeListeners().length); 1419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes prop.removePropertyChangeListener("name", lis1); 1421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, prop.getPropertyChangeListeners().length); 1422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 1425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.beans.PropertyChangeSupport#removePropertyChangeListener( 1426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * java.lang.String, java.beans.PropertyChangeListener) 1427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testRemovePropertyChangeListener2() { 1429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Regression for HARMONY-320 1430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener listener = new PropertyChangeListener() { 1431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void propertyChange(PropertyChangeEvent arg0) { 1433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }; 1435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport pcs = new PropertyChangeSupport(this); 1437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes pcs.addPropertyChangeListener("property", listener); 1439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeListener[] listeners = pcs.getPropertyChangeListeners(); 1440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(1, listeners.length); 1441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes pcs.removePropertyChangeListener(listeners[0]); 1443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes listeners = pcs.getPropertyChangeListeners(); 1444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, listeners.length); 1445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 1448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The test checks the serialization for listeners supporting serialization 1449561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1450561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testSerializableListener() throws Exception { 1451561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writePropertyChangeListeners(new PropertyChangeListener[] { new SerializablePropertyChangeListener() }); 1452561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes readPropertyChangeListeners(); 1453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1455561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 1456561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The test checks the serialization for listeners not supporting 1457561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * serialization 1458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1459561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testNonSerializableListener() throws Exception { 1460561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writePropertyChangeListeners(new PropertyChangeListener[] { new NonSerializablePropertyChangeListener() }); 1461561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes readPropertyChangeListeners(); 1462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1464561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private void writePropertyChangeListeners(PropertyChangeListener[] array) { 1465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ObjectOutputStream oos = null; 1466561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes oos = new ObjectOutputStream(new FileOutputStream(tempFile)); 1468561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport pcs = new PropertyChangeSupport("bean"); 1469561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (array != null && array.length > 0) { 1470561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (PropertyChangeListener element : array) { 1471561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes pcs.addPropertyChangeListener(element); 1472561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1473561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1474561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes oos.writeObject(pcs); 1475561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes oos.flush(); 1476561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Exception e) { 1477561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println(e.getClass() + ": " + e.getMessage()); 1478561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Exception is thrown in testNonSerializableListener"); 1479561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } finally { 1480561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (oos != null) { 1481561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1482561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes oos.close(); 1483561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException ioe) { 1484561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Exception while closing ObjectOutputStream"); 1485561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1486561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1487561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1488561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1489561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1490561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private PropertyChangeListener[] readPropertyChangeListeners() 1491561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws Exception { 1492561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ObjectInputStream ois = null; 1493561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeSupport pcs = null; 1494561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1495561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ois = new ObjectInputStream(new FileInputStream(tempFile)); 1496561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes pcs = (PropertyChangeSupport) ois.readObject(); 1497561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } finally { 1498561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (ois != null) { 1499561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ois.close(); 1500561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1501561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1502561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return pcs.getPropertyChangeListeners(); 1503561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1504561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes} 1505