1 package org.picocontainer.defaults;
2
3 import junit.framework.TestCase;
4 import org.picocontainer.testmodel.Touchable;
5 import org.picocontainer.testmodel.SimpleTouchable;
6 import org.picocontainer.testmodel.DependsOnTouchable;
7 import org.picocontainer.internals.ConstantParameter;
8 import org.picocontainer.internals.ComponentParameter;
9 import org.picocontainer.internals.ComponentSpecification;
10 import org.picocontainer.internals.Parameter;
11 import org.picocontainer.PicoIntrospectionException;
12 import org.picocontainer.PicoInitializationException;
13 import org.picocontainer.PicoRegistrationException;
14 import org.picocontainer.PicoInstantiationException;
15
16
17 /***
18 * @author Jon Tirsen (tirsen@codehaus.org)
19 * @version $Revision: 1.7 $
20 */
21 public class ParameterTestCase extends TestCase {
22 public void testComponentSpecificationHandlesPrimtiveTypes() {
23 assertTrue(ComponentSpecification.isAssignableFrom(Integer.class, Integer.TYPE));
24 assertTrue(ComponentSpecification.isAssignableFrom(Integer.TYPE, Integer.class));
25 assertTrue(ComponentSpecification.isAssignableFrom(String.class, String.class));
26 assertFalse(ComponentSpecification.isAssignableFrom(Integer.class, String.class));
27 }
28
29 static class TestClass {
30 public TestClass(String s1, String s2, String s3) {
31 }
32 }
33
34 public void testComponentSpecificationCreatesDefaultParameters() throws PicoIntrospectionException {
35 ComponentSpecification componentSpec =
36 new ComponentSpecification(new DefaultComponentFactory(), null, TestClass.class);
37 assertEquals(3, componentSpec.getParameters().length);
38 }
39
40 public void testComponentParameterFetches() throws PicoInstantiationException, PicoRegistrationException, PicoInitializationException {
41 DefaultComponentRegistry dcr = new DefaultComponentRegistry();
42 DefaultPicoContainer pico = new DefaultPicoContainer.WithComponentRegistry(dcr);
43 pico.registerComponent(Touchable.class, SimpleTouchable.class);
44 ComponentParameter parameter = new ComponentParameter();
45
46 assertNull(pico.getComponent(Touchable.class));
47 Touchable Touchable = (Touchable) parameter.resolve(dcr, null, Touchable.class);
48 assertNotNull(pico.getComponent(Touchable.class));
49 assertSame(Touchable, pico.getComponent(Touchable.class));
50 }
51
52 public void testConstantParameter() throws PicoInstantiationException {
53 Object value = new Object();
54 ConstantParameter parameter = new ConstantParameter(value);
55 assertSame(value, parameter.resolve(null, null, null));
56 }
57
58 public void testFredWithTouchableSpecifiedAsConstant() throws PicoRegistrationException, PicoInitializationException {
59 DefaultPicoContainer pico = new DefaultPicoContainer.Default();
60 SimpleTouchable touchable = new SimpleTouchable();
61 pico.registerComponent(DependsOnTouchable.class, DependsOnTouchable.class, new Parameter[]{
62 new ConstantParameter(touchable)
63 });
64 pico.instantiateComponents();
65 assertTrue(touchable.wasTouched);
66 }
67
68 }
This page was automatically generated by Maven