001    package org.picocontainer.injectors;
002    
003    import static org.junit.Assert.assertEquals;
004    import static org.junit.Assert.assertSame;
005    import org.junit.Test;
006    import org.picocontainer.*;
007    import static org.picocontainer.injectors.Injector.constructor;
008    import org.picocontainer.monitors.NullComponentMonitor;
009    import org.picocontainer.parameters.ConstantParameter;
010    import org.picocontainer.tck.AbstractComponentAdapterTest;
011    import org.picocontainer.testmodel.NullLifecycle;
012    import org.picocontainer.testmodel.RecordingLifecycle;
013    import org.picocontainer.visitors.AbstractPicoVisitor;
014    
015    /**
016     * test capabilities of injector factory. as this is mostly convenience wrapper around
017     * constructors, we just test that everything was passed through
018     *
019     * @author ko5tik
020     */
021    public class InjectorTestCase {
022    
023        final Object key = new Object();
024        final Parameter checked = new ConstantParameter(null);
025        final Parameter[] checkedArray = new Parameter[]{checked};
026        final ComponentMonitor monitor = new NullComponentMonitor();
027    
028    
029        final PicoVisitor parameterChecker = new AbstractPicoVisitor() {
030    
031    
032            public boolean visitContainer(PicoContainer pico) {
033                return false;  //To change body of implemented methods use File | Settings | File Templates.
034            }
035    
036            public void visitComponentAdapter(ComponentAdapter<?> componentAdapter) {
037                //To change body of implemented methods use File | Settings | File Templates.
038            }
039    
040            public void visitComponentFactory(ComponentFactory componentFactory) {
041                //To change body of implemented methods use File | Settings | File Templates.
042            }
043    
044            public void visitParameter(Parameter parameter) {
045                assertSame(checked, parameter);
046            }
047        };
048    
049        /**
050         * test that all parameters were passed to respective constructor
051         */
052        @Test
053        public void testSimpleConstructor() {
054            ComponentAdapter adapter = constructor(key, getClass(), checked);
055            assertSame(key, adapter.getComponentKey());
056            assertSame(getClass(), adapter.getComponentImplementation());
057            adapter.accept(parameterChecker);
058        }
059    }