    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 static org.junit.Assert.assertEquals;
    013    import static org.junit.Assert.assertFalse;
    014    import static org.junit.Assert.assertSame;
    015    import static org.junit.Assert.assertTrue;
    016
    017    import java.util.Properties;
    018
    019    import org.junit.Before;
    020    import org.junit.Test;
    021    import org.picocontainer.Characteristics;
    022    import org.picocontainer.ComponentAdapter;
    023    import org.picocontainer.ComponentFactory;
    024    import org.picocontainer.DefaultPicoContainer;
    025    import org.picocontainer.PicoCompositionException;
    026    import org.picocontainer.lifecycle.NullLifecycleStrategy;
    027    import org.picocontainer.monitors.NullComponentMonitor;
    028    import org.picocontainer.testmodel.SimpleTouchable;
    029    import org.picocontainer.testmodel.Touchable;
    030
    031    /**
    032     * @author Aslak Helles&oslash;y
    033     */
    034    public abstract class AbstractComponentFactoryTest {
    035
    036        protected DefaultPicoContainer picoContainer;
    037
    038        protected abstract ComponentFactory createComponentFactory();
    039
    040        @Before
    041        public void setUp() throws Exception {
    042            picoContainer = new DefaultPicoContainer();
    043        }
    044
    045        @Test public void testEquals() throws PicoCompositionException {
    046            ComponentAdapter componentAdapter = createComponentFactory().createComponentAdapter(new NullComponentMonitor(),
    047                                                                                                new NullLifecycleStrategy(),
    048                                                                                                new Properties(
    049                                                                                                    Characteristics
    050                                                                                                        .CDI),
    051                                                                                                Touchable.class,
    052                                                                                                SimpleTouchable.class);
    053
    054            assertEquals(componentAdapter, componentAdapter);
    055            assertTrue(!componentAdapter.equals("blah"));
    056        }
    057
    058        @Test public void testRegisterComponent() throws PicoCompositionException {
    059            ComponentAdapter componentAdapter =
    060                createComponentFactory().createComponentAdapter(new NullComponentMonitor(),
    061                                                                new NullLifecycleStrategy(),
    062                                                                new Properties(Characteristics
    063                                                                    .CDI),
    064                                                                Touchable.class,
    065                                                                SimpleTouchable.class);
    066
    067            picoContainer.addAdapter(componentAdapter);
    068
    069            ComponentAdapter adapter = (ComponentAdapter)picoContainer.getComponentAdapters().toArray()[0];
    070            assertSame(componentAdapter.getComponentKey(), adapter.getComponentKey());
    071        }
    072
    073        @Test public void testUnregisterComponent() throws PicoCompositionException {
    074            ComponentAdapter componentAdapter =
    075                createComponentFactory().createComponentAdapter(new NullComponentMonitor(),
    076                                                                new NullLifecycleStrategy(),
    077                                                                new Properties(Characteristics
    078                                                                    .CDI),
    079                                                                Touchable.class,
    080                                                                SimpleTouchable.class);
    081
    082            picoContainer.addAdapter(componentAdapter);
    083            picoContainer.removeComponent(Touchable.class);
    084
    085            assertFalse(picoContainer.getComponentAdapters().contains(componentAdapter));
    086        }
    087    }