001    /*****************************************************************************
002     * Copyright (C) PicoContainer Organization. All rights reserved.            *
003     * ------------------------------------------------------------------------- *
004     * The software in this package is published under the terms of the BSD      *
005     * style license a copy of which has been included with this distribution in *
006     * the LICENSE.txt file.                                                     *
007     *                                                                           *
008     * Original code by                                                          *
009     *****************************************************************************/
010    package org.picocontainer.tck;
011    
012    import junit.framework.TestCase;
013    import org.picocontainer.ComponentAdapter;
014    import org.picocontainer.PicoIntrospectionException;
015    import org.picocontainer.PicoRegistrationException;
016    import org.picocontainer.defaults.AssignabilityRegistrationException;
017    import org.picocontainer.defaults.ComponentAdapterFactory;
018    import org.picocontainer.defaults.DefaultPicoContainer;
019    import org.picocontainer.defaults.NotConcreteRegistrationException;
020    import org.picocontainer.testmodel.SimpleTouchable;
021    import org.picocontainer.testmodel.Touchable;
022    
023    /**
024     * @author Aslak Hellesøy
025     * @version $Revision: 1234 $
026     */
027    public abstract class AbstractComponentAdapterFactoryTestCase extends TestCase {
028        protected DefaultPicoContainer picoContainer;
029    
030        protected abstract ComponentAdapterFactory createComponentAdapterFactory();
031    
032        protected void setUp() throws Exception {
033            picoContainer = new DefaultPicoContainer();
034        }
035    
036        public void testEquals() throws PicoIntrospectionException, AssignabilityRegistrationException, NotConcreteRegistrationException {
037            ComponentAdapter componentAdapter = createComponentAdapterFactory().createComponentAdapter(Touchable.class, SimpleTouchable.class, null);
038    
039            assertEquals(componentAdapter, componentAdapter);
040            assertTrue(!componentAdapter.equals("blah"));
041        }
042    
043        public void testRegisterComponent() throws PicoRegistrationException, AssignabilityRegistrationException {
044            ComponentAdapter componentAdapter =
045                    createComponentAdapterFactory().createComponentAdapter(Touchable.class, SimpleTouchable.class, null);
046    
047            picoContainer.registerComponent(componentAdapter);
048    
049            assertTrue(picoContainer.getComponentAdapters().contains(componentAdapter));
050        }
051    
052        public void testUnregisterComponent() throws PicoRegistrationException, AssignabilityRegistrationException {
053            ComponentAdapter componentAdapter =
054                    createComponentAdapterFactory().createComponentAdapter(Touchable.class, SimpleTouchable.class, null);
055    
056            picoContainer.registerComponent(componentAdapter);
057            picoContainer.unregisterComponent(Touchable.class);
058    
059            assertFalse(picoContainer.getComponentAdapters().contains(componentAdapter));
060        }
061    }