001 package org.picocontainer.parameters;
002
003 import static org.junit.Assert.*;
004
005 import java.util.ArrayList;
006 import java.util.List;
007
008 import org.junit.After;
009 import org.junit.Before;
010 import org.junit.Test;
011 import org.picocontainer.Parameter;
012 import org.picocontainer.PicoCompositionException;
013 import org.picocontainer.Parameter.Resolver;
014 import org.picocontainer.visitors.TraversalCheckingVisitor;
015
016 public class NullParameterTestCase {
017
018 private NullParameter instance;
019
020 @Before
021 public void setUp() throws Exception {
022 instance = NullParameter.INSTANCE;
023 }
024
025 @After
026 public void tearDown() throws Exception {
027 instance = null;
028 }
029
030 @Test
031 public void testAccept() {
032 final List<Parameter> parametersVisited = new ArrayList<Parameter>();
033 TraversalCheckingVisitor visitor = new TraversalCheckingVisitor() {
034 @Override
035 public void visitParameter(Parameter parameter) {
036 parametersVisited.add(parameter);
037 }
038
039 };
040 instance.accept(visitor);
041 assertEquals(1, parametersVisited.size());
042 assertEquals(instance, parametersVisited.get(0));
043 }
044
045 @Test
046 public void testResolve() {
047 //Doesn't realy matter what's passed in, it'll get the same result :)
048 Resolver result = instance.resolve(null, null, null, String.class, null, false, null);
049
050 assertNotNull(result);
051 assertTrue(result.isResolved());
052 assertNull(result.resolveInstance());
053
054 result = instance.resolve(null, null, null, Void.TYPE, null, false, null);
055 assertNotNull(result);
056 assertFalse(result.isResolved());
057 }
058
059 @Test
060 public void testVerify() {
061 instance.verify(null, null, String.class, null, false, null);
062
063 try {
064
065 instance.verify(null, null, Integer.TYPE, null, false, null);
066 fail("Should have thrown PicoCompositionException when verifying primitive types");
067 } catch (PicoCompositionException ex) {
068 assertNotNull(ex.getMessage());
069 }
070 }
071
072 }