Home | History | Annotate | Download | only in beans
      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 
     18 package org.apache.harmony.beans.tests.java.beans;
     19 
     20 import java.beans.PropertyChangeEvent;
     21 import java.beans.PropertyChangeListener;
     22 import java.beans.PropertyChangeListenerProxy;
     23 
     24 import junit.framework.TestCase;
     25 
     26 /**
     27  * Test for PropertyChangeListenerProxy
     28  */
     29 public class PropertyChangeListenerProxyTest extends TestCase {
     30 
     31     PropertyChangeListenerProxy proxy;
     32 
     33     PropertyChangeListener listener = new MockPropertyChangeListener();
     34 
     35     String name = "mock";
     36 
     37     static PropertyChangeEvent event = null;
     38 
     39     @Override
     40     protected void setUp() throws Exception {
     41         super.setUp();
     42         proxy = new PropertyChangeListenerProxy(name, listener);
     43     }
     44 
     45     public void testPropertyChangeListenerProxy() {
     46         proxy = new PropertyChangeListenerProxy(null, listener);
     47         assertSame(listener, proxy.getListener());
     48         assertNull(proxy.getPropertyName());
     49         PropertyChangeEvent newevent = new PropertyChangeEvent(new Object(),
     50                 "name", new Object(), new Object());
     51         proxy.propertyChange(newevent);
     52         assertSame(newevent, event);
     53         proxy = new PropertyChangeListenerProxy(name, null);
     54         assertSame(name, proxy.getPropertyName());
     55         assertNull(proxy.getListener());
     56         try {
     57             proxy.propertyChange(new PropertyChangeEvent(new Object(), "name",
     58                     new Object(), new Object()));
     59             fail("NullPointerException expected");
     60         } catch (NullPointerException e) {
     61         }
     62 
     63         proxy = new PropertyChangeListenerProxy(name, listener);
     64         assertSame(listener, proxy.getListener());
     65         assertSame(name, proxy.getPropertyName());
     66         newevent = new PropertyChangeEvent(new Object(), "name", new Object(),
     67                 new Object());
     68         assertSame(name, proxy.getPropertyName());
     69         proxy.propertyChange(newevent);
     70         assertSame(newevent, event);
     71     }
     72 
     73     public void testPropertyChange() {
     74         proxy.propertyChange(null);
     75         assertNull(event);
     76     }
     77 
     78     /**
     79      * Regression for HARMONY-407
     80      */
     81     public void testPropertyChange_PropertyChangeEvent() {
     82         PropertyChangeListenerProxy proxy = new PropertyChangeListenerProxy(
     83                 "harmony", null);
     84         try {
     85             proxy.propertyChange(null);
     86             fail("NullPointerException expected");
     87         } catch (NullPointerException e) {
     88         }
     89     }
     90 
     91     public static class MockPropertyChangeListener implements
     92             PropertyChangeListener {
     93         public void propertyChange(PropertyChangeEvent newevent) {
     94             event = newevent;
     95         }
     96     }
     97 
     98 }
     99