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 }