001 package org.picocontainer.defaults.issues; 002 003 import junit.framework.TestCase; 004 import org.picocontainer.MutablePicoContainer; 005 import org.picocontainer.defaults.DefaultPicoContainer; 006 import org.picocontainer.defaults.UnsatisfiableDependenciesException; 007 008 public class Issue0191TestCase extends TestCase { 009 010 static int sharkCount = 0 ; 011 static int codCount = 0 ; 012 013 /* 014 This bug as descripbed in the bug report, cannot be reproduced. Needs work. 015 */ 016 public void testTheBug() 017 { 018 MutablePicoContainer pico = new DefaultPicoContainer( ) ; 019 pico.registerComponentImplementation(Shark.class); 020 pico.registerComponentImplementation(Cod.class); 021 try { 022 pico.registerComponentImplementation(Bowl.class); 023 Bowl bowl = (Bowl) pico.getComponentInstance(Bowl.class); 024 fail("Should have barfed here with UnsatisfiableDependenciesException"); 025 Fish[] fishes = bowl.getFishes( ) ; 026 for( int i = 0 ; i < fishes.length ; i++ ) 027 System.out.println( "fish["+i+"]="+fishes[i] ) ; 028 } catch (UnsatisfiableDependenciesException e) { 029 // expected, well except that there is supposed to be a different bug here. 030 } 031 } 032 033 034 class Bowl 035 { 036 private final Fish[] fishes; 037 private final Cod[] cods; 038 public Bowl(Fish[] fishes, Cod[] cods) 039 { 040 this.fishes = fishes; 041 this.cods = cods; 042 } 043 public Fish[] getFishes() 044 { 045 return fishes; 046 } 047 public Cod[] getCods() 048 { 049 return cods; 050 } 051 052 } 053 054 public interface Fish 055 { 056 } 057 058 class Cod implements Fish 059 { 060 int instanceNum ; 061 public Cod( ) { instanceNum = codCount++ ; } ; 062 public String toString( ) { 063 return "Cod #" + instanceNum ; 064 } 065 } 066 067 class Shark implements Fish 068 { 069 int instanceNum ; 070 public Shark( ) { instanceNum = sharkCount++ ; } ; 071 public String toString( ) { 072 return "Shark #" + instanceNum ; 073 } 074 } 075 076 }