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ø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 }