1/* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 18package org.apache.harmony.beans.tests.java.beans; 19 20import java.beans.PropertyChangeEvent; 21import java.io.Serializable; 22 23import junit.framework.TestCase; 24 25import org.apache.harmony.testframework.serialization.SerializationTest; 26import org.apache.harmony.testframework.serialization.SerializationTest.SerializableAssert; 27 28/** 29 * Test class java.beans.PropertyChangeEvent. 30 */ 31public class PropertyChangeEventTest extends TestCase { 32 /* 33 * Test the constructor with normal parameters. 34 */ 35 public void testConstructor_Normal() { 36 Object src = new Object(); 37 Object oldValue = new Object(); 38 Object newValue = new Object(); 39 40 PropertyChangeEvent event = new PropertyChangeEvent(src, "myPropName", 41 oldValue, newValue); 42 assertSame(src, event.getSource()); 43 assertEquals("myPropName", event.getPropertyName()); 44 assertSame(oldValue, event.getOldValue()); 45 assertSame(newValue, event.getNewValue()); 46 assertNull(event.getPropagationId()); 47 } 48 49 /* 50 * Test the constructor with null parameters except the source parameter. 51 */ 52 public void testConstructor_Null() { 53 Object src = new Object(); 54 PropertyChangeEvent event = new PropertyChangeEvent(src, null, null, 55 null); 56 assertSame(src, event.getSource()); 57 assertNull(event.getPropertyName()); 58 assertSame(null, event.getOldValue()); 59 assertSame(null, event.getNewValue()); 60 assertNull(event.getPropagationId()); 61 } 62 63 /* 64 * Test the constructor with null properties but non-null old and new 65 * values. 66 */ 67 public void testConstructor_NullProperty() { 68 Object src = new Object(); 69 Object oldValue = new Object(); 70 Object newValue = new Object(); 71 PropertyChangeEvent event = new PropertyChangeEvent(src, null, 72 oldValue, newValue); 73 assertSame(src, event.getSource()); 74 assertNull(event.getPropertyName()); 75 assertSame(oldValue, event.getOldValue()); 76 assertSame(newValue, event.getNewValue()); 77 assertNull(event.getPropagationId()); 78 } 79 80 /* 81 * Test the constructor with null source parameter. 82 */ 83 public void testConstructor_NullSrc() { 84 try { 85 new PropertyChangeEvent(null, "prop", new Object(), new Object()); 86 fail("Should throw IllegalArgumentException!"); 87 } catch (IllegalArgumentException ex) { 88 // expected 89 } 90 } 91 92 /* 93 * Test the method setPropagationId() with a normal value. 94 */ 95 public void testSetPropagationId_Normal() { 96 Object src = new Object(); 97 Object oldValue = new Object(); 98 Object newValue = new Object(); 99 100 PropertyChangeEvent event = new PropertyChangeEvent(src, "myPropName", 101 oldValue, newValue); 102 assertNull(event.getPropagationId()); 103 104 Object pid = new Object(); 105 event.setPropagationId(pid); 106 107 assertSame(src, event.getSource()); 108 assertEquals("myPropName", event.getPropertyName()); 109 assertSame(oldValue, event.getOldValue()); 110 assertSame(newValue, event.getNewValue()); 111 assertSame(pid, event.getPropagationId()); 112 } 113 114 /* 115 * Test the method setPropagationId() with a null value. 116 */ 117 public void testSetPropagationId_Null() { 118 Object src = new Object(); 119 Object oldValue = new Object(); 120 Object newValue = new Object(); 121 122 PropertyChangeEvent event = new PropertyChangeEvent(src, "myPropName", 123 oldValue, newValue); 124 assertNull(event.getPropagationId()); 125 126 // set null when already null 127 event.setPropagationId(null); 128 assertNull(event.getPropagationId()); 129 130 // set a non-null value 131 Object pid = new Object(); 132 event.setPropagationId(pid); 133 assertSame(src, event.getSource()); 134 assertEquals("myPropName", event.getPropertyName()); 135 assertSame(oldValue, event.getOldValue()); 136 assertSame(newValue, event.getNewValue()); 137 assertSame(pid, event.getPropagationId()); 138 139 // reset to null 140 event.setPropagationId(null); 141 assertNull(event.getPropagationId()); 142 } 143 144 // comparator for PropertyChangeEvent objects 145 public static final SerializableAssert comparator = new SerializableAssert() { 146 public void assertDeserialized(Serializable initial, 147 Serializable deserialized) { 148 149 PropertyChangeEvent initEv = (PropertyChangeEvent) initial; 150 PropertyChangeEvent desrEv = (PropertyChangeEvent) deserialized; 151 152 assertEquals("NewValue", initEv.getNewValue(), desrEv.getNewValue()); 153 assertEquals("OldValue", initEv.getOldValue(), desrEv.getOldValue()); 154 assertEquals("PropagationId", initEv.getPropagationId(), desrEv 155 .getPropagationId()); 156 assertEquals("PropertyName", initEv.getPropertyName(), desrEv 157 .getPropertyName()); 158 } 159 }; 160 161 /** 162 * @tests serialization/deserialization. 163 */ 164 public void testSerializationSelf() throws Exception { 165 166 SerializationTest.verifySelf(new PropertyChangeEvent(new Object(), 167 "myPropName", "oldValue", "newValue"), comparator); 168 } 169 170 /** 171 * @tests serialization/deserialization compatibility with RI. 172 */ 173 public void testSerializationCompatibility() throws Exception { 174 175 SerializationTest 176 .verifyGolden(this, new PropertyChangeEvent(new Object(), 177 "myPropName", "oldValue", "newValue"), comparator); 178 } 179} 180