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.PropertyChangeEvent; 21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.Serializable; 22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.TestCase; 24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport org.apache.harmony.testframework.serialization.SerializationTest; 26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport org.apache.harmony.testframework.serialization.SerializationTest.SerializableAssert; 27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/** 29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test class java.beans.PropertyChangeEvent. 30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class PropertyChangeEventTest extends TestCase { 32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test the constructor with normal parameters. 34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testConstructor_Normal() { 36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object src = new Object(); 37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object oldValue = new Object(); 38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object newValue = new Object(); 39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeEvent event = new PropertyChangeEvent(src, "myPropName", 41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes oldValue, newValue); 42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertSame(src, event.getSource()); 43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("myPropName", event.getPropertyName()); 44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertSame(oldValue, event.getOldValue()); 45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertSame(newValue, event.getNewValue()); 46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull(event.getPropagationId()); 47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test the constructor with null parameters except the source parameter. 51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testConstructor_Null() { 53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object src = new Object(); 54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeEvent event = new PropertyChangeEvent(src, null, null, 55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes null); 56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertSame(src, event.getSource()); 57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull(event.getPropertyName()); 58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertSame(null, event.getOldValue()); 59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertSame(null, event.getNewValue()); 60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull(event.getPropagationId()); 61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test the constructor with null properties but non-null old and new 65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * values. 66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testConstructor_NullProperty() { 68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object src = new Object(); 69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object oldValue = new Object(); 70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object newValue = new Object(); 71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeEvent event = new PropertyChangeEvent(src, null, 72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes oldValue, newValue); 73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertSame(src, event.getSource()); 74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull(event.getPropertyName()); 75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertSame(oldValue, event.getOldValue()); 76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertSame(newValue, event.getNewValue()); 77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull(event.getPropagationId()); 78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test the constructor with null source parameter. 82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testConstructor_NullSrc() { 84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new PropertyChangeEvent(null, "prop", new Object(), new Object()); 86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw IllegalArgumentException!"); 87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalArgumentException ex) { 88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test the method setPropagationId() with a normal value. 94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testSetPropagationId_Normal() { 96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object src = new Object(); 97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object oldValue = new Object(); 98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object newValue = new Object(); 99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeEvent event = new PropertyChangeEvent(src, "myPropName", 101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes oldValue, newValue); 102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull(event.getPropagationId()); 103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object pid = new Object(); 105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes event.setPropagationId(pid); 106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertSame(src, event.getSource()); 108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("myPropName", event.getPropertyName()); 109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertSame(oldValue, event.getOldValue()); 110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertSame(newValue, event.getNewValue()); 111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertSame(pid, event.getPropagationId()); 112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test the method setPropagationId() with a null value. 116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testSetPropagationId_Null() { 118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object src = new Object(); 119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object oldValue = new Object(); 120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object newValue = new Object(); 121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeEvent event = new PropertyChangeEvent(src, "myPropName", 123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes oldValue, newValue); 124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull(event.getPropagationId()); 125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // set null when already null 127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes event.setPropagationId(null); 128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull(event.getPropagationId()); 129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // set a non-null value 131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object pid = new Object(); 132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes event.setPropagationId(pid); 133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertSame(src, event.getSource()); 134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("myPropName", event.getPropertyName()); 135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertSame(oldValue, event.getOldValue()); 136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertSame(newValue, event.getNewValue()); 137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertSame(pid, event.getPropagationId()); 138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // reset to null 140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes event.setPropagationId(null); 141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull(event.getPropagationId()); 142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // comparator for PropertyChangeEvent objects 145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static final SerializableAssert comparator = new SerializableAssert() { 146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void assertDeserialized(Serializable initial, 147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Serializable deserialized) { 148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeEvent initEv = (PropertyChangeEvent) initial; 150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PropertyChangeEvent desrEv = (PropertyChangeEvent) deserialized; 151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("NewValue", initEv.getNewValue(), desrEv.getNewValue()); 153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("OldValue", initEv.getOldValue(), desrEv.getOldValue()); 154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("PropagationId", initEv.getPropagationId(), desrEv 155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getPropagationId()); 156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("PropertyName", initEv.getPropertyName(), desrEv 157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getPropertyName()); 158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }; 160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests serialization/deserialization. 163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testSerializationSelf() throws Exception { 165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SerializationTest.verifySelf(new PropertyChangeEvent(new Object(), 167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "myPropName", "oldValue", "newValue"), comparator); 168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests serialization/deserialization compatibility with RI. 172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testSerializationCompatibility() throws Exception { 174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SerializationTest 176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .verifyGolden(this, new PropertyChangeEvent(new Object(), 177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "myPropName", "oldValue", "newValue"), comparator); 178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes} 180