001package org.picocontainer.parameters;
002
003import static org.junit.Assert.*;
004
005import java.util.ArrayList;
006import java.util.List;
007
008import org.junit.After;
009import org.junit.Before;
010import org.junit.Test;
011import org.picocontainer.Parameter;
012import org.picocontainer.PicoCompositionException;
013import org.picocontainer.Parameter.Resolver;
014import org.picocontainer.visitors.TraversalCheckingVisitor;
015
016public 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}