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 }