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 }