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    }