Package org.apache.harmony.beans.tests.java.beans.beancontext

Source Code of org.apache.harmony.beans.tests.java.beans.beancontext.BeanContextEventTest$MockBeanContextEvent

/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements.  See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License.  You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package org.apache.harmony.beans.tests.java.beans.beancontext;

import java.beans.beancontext.BeanContext;
import java.beans.beancontext.BeanContextEvent;
import java.beans.beancontext.BeanContextServicesSupport;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Locale;

import junit.framework.TestCase;

import org.apache.harmony.beans.tests.support.beancontext.Utils;
import org.apache.harmony.beans.tests.support.beancontext.mock.MockBeanContext;
import org.apache.harmony.beans.tests.support.beancontext.mock.MockBeanContextServiceProviderS;
import org.apache.harmony.beans.tests.support.beancontext.mock.MockBeanContextServicesListenerS;
import org.apache.harmony.testframework.serialization.SerializationTest;
import org.apache.harmony.testframework.serialization.SerializationTest.SerializableAssert;

/**
* Test BeanContextEvent
*/
public class BeanContextEventTest extends TestCase {

    private static class MockBeanContextEvent extends BeanContextEvent {

        static final long serialVersionUID = -5990761357871915928L;

        /**
         * @param bc
         */
        protected MockBeanContextEvent(BeanContext bc) {
            super(bc);

            assertSame(bc, getSource());
            assertSame(bc, getBeanContext());
            assertNull(this.propagatedFrom);
        }
       
    }

    public static void main(String[] args) {
        junit.textui.TestRunner.run(BeanContextEventTest.class);
    }

    public void testBeanContextEvent_NullParam() {
        try {
            new MockBeanContextEvent(null);
            fail("IAE expected");
        } catch (IllegalArgumentException e) {
            // expected
        }
    }

    public void testBeanContextEvent() {
        BeanContext ctx = new MockBeanContext();
        BeanContextEvent event = new MockBeanContextEvent(ctx);
        assertSame(ctx, event.getSource());
        assertSame(ctx, event.getBeanContext());
        assertNull(event.getPropagatedFrom());
        assertFalse(event.isPropagated());
    }

    public void testGetBeanContext() {
        BeanContext ctx = new MockBeanContext();
        BeanContextEvent event = new MockBeanContextEvent(ctx);
        assertSame(ctx, event.getBeanContext());
    }

    public void testGetPropagatedFrom() {
        BeanContext ctx = new MockBeanContext();
        BeanContextEvent event = new MockBeanContextEvent(ctx);
        assertNull(event.getPropagatedFrom());

        BeanContext ctx2 = new MockBeanContext();
        event.setPropagatedFrom(ctx2);
        assertSame(ctx2, event.getPropagatedFrom());

        event.setPropagatedFrom(ctx);
        assertSame(ctx, event.getPropagatedFrom());

        event.setPropagatedFrom(null);
        assertNull(event.getPropagatedFrom());
    }

    public void testIsPropagated() {
        BeanContext ctx = new MockBeanContext();
        BeanContextEvent event = new MockBeanContextEvent(ctx);
        assertFalse(event.isPropagated());

        BeanContext ctx2 = new MockBeanContext();
        event.setPropagatedFrom(ctx2);
        assertTrue(event.isPropagated());

        event.setPropagatedFrom(ctx);
        assertTrue(event.isPropagated());

        event.setPropagatedFrom(null);
        assertFalse(event.isPropagated());
    }

    public void testSetPropagatedFrom() {
        BeanContext ctx = new MockBeanContext();
        BeanContextEvent event = new MockBeanContextEvent(ctx);
        assertNull(event.getPropagatedFrom());

        BeanContext ctx2 = new MockBeanContext();
        event.setPropagatedFrom(ctx2);
        assertSame(ctx2, event.getPropagatedFrom());

        event.setPropagatedFrom(ctx);
        assertSame(ctx, event.getPropagatedFrom());

        event.setPropagatedFrom(null);
        assertNull(event.getPropagatedFrom());
    }
   
    public void testSerialization() throws Exception {
        final BeanContextServicesSupport ctx = new BeanContextServicesSupport(
                null, Locale.FRANCE, false, false);
        final BeanContextServicesSupport ctx2 = new BeanContextServicesSupport(
                ctx, Locale.ITALY, true, true);
        BeanContextEvent event = new MockBeanContextEvent(ctx2);
        event.setPropagatedFrom(ctx);
        SerializationTest.verifySelf(event, new SerializableAssert(){
            public void assertDeserialized(Serializable arg0, Serializable arg1) {
                BeanContextEvent e1 = (BeanContextEvent)arg0;
                BeanContextEvent e2 = (BeanContextEvent)arg1;
                assertNull((BeanContextServicesSupport)e2.getSource());
                assertNotNull((BeanContextServicesSupport)e1.getSource());
                assertEqualsSerially((BeanContextServicesSupport)e1.getPropagatedFrom(), (BeanContextServicesSupport)e2.getPropagatedFrom());
                assertEqualsSerially(ctx, (BeanContextServicesSupport)e2.getPropagatedFrom());
            }
        });
    }
   
    public static void assertEqualsSerially(BeanContextServicesSupport orig,
            BeanContextServicesSupport ser) {

        // check bcsListeners
        ArrayList origBcsListeners = (ArrayList) Utils.getField(orig,
                "bcsListeners");
        ArrayList serBcsListeners = (ArrayList) Utils.getField(ser,
                "bcsListeners");
        int i = 0, j = 0;
        while (i < origBcsListeners.size()) {
            Object l1 = origBcsListeners.get(i);
            if (l1 instanceof Serializable) {
                Object l2 = serBcsListeners.get(j);
                assertSame(l1.getClass(), l2.getClass());
                if (l1 instanceof MockBeanContextServicesListenerS) {
                    assertEquals(((MockBeanContextServicesListenerS) l1).id,
                            ((MockBeanContextServicesListenerS) l2).id);
                }
                j++;
            }
            i++;
        }
        assertEquals(j, serBcsListeners.size());

        // check services
        HashMap origServices = (HashMap) Utils.getField(orig, "services");
        HashMap serServices = (HashMap) Utils.getField(ser, "services");
        int count = 0;
        for (Iterator iter = origServices.keySet().iterator(); iter.hasNext();) {
            Object serviceClass = iter.next();
            Object bcssProvider = origServices.get(serviceClass);
            Object provider = Utils.getField(bcssProvider, "serviceProvider");
            if (provider instanceof Serializable) {
                assertTrue(serServices.containsKey(serviceClass));
                if (provider instanceof MockBeanContextServiceProviderS) {
                    Object serProvider = Utils.getField(serServices
                            .get(serviceClass), "serviceProvider");
                    assertEquals(
                            ((MockBeanContextServiceProviderS) provider).id,
                            ((MockBeanContextServiceProviderS) serProvider).id);
                }
                count++;
            }
        }
        assertEquals(count, serServices.size());
    }   

    public void testSerializationComptibility() throws Exception {
        final BeanContextServicesSupport ctx = new BeanContextServicesSupport(
                null, Locale.ITALY, true, true);
        final BeanContextServicesSupport ctx2 = new BeanContextServicesSupport(
                null, Locale.CHINA, true, true);
       
        BeanContextEvent event = new MockBeanContextEvent(ctx);
        event.setPropagatedFrom(ctx2);
        SerializationTest.verifyGolden(this, event, new SerializableAssert(){
            public void assertDeserialized(Serializable arg0, Serializable arg1) {
                BeanContextEvent e1 = (BeanContextEvent)arg0;
                BeanContextEvent e2 = (BeanContextEvent)arg1;
                assertNull((BeanContextServicesSupport)e2.getSource());
                assertNotNull((BeanContextServicesSupport)e1.getSource());
                assertEqualsSerially((BeanContextServicesSupport)e1.getPropagatedFrom(), (BeanContextServicesSupport)e2.getPropagatedFrom());
                assertEqualsSerially(ctx2, (BeanContextServicesSupport)e2.getPropagatedFrom());
            }
        });
    }
}
TOP

Related Classes of org.apache.harmony.beans.tests.java.beans.beancontext.BeanContextEventTest$MockBeanContextEvent

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.