001    package org.picocontainer.doc.introduction;
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    /**
009     * @author Aslak Hellesøy
010     * @version $Revision: 1297 $
011     */
012    public class HierarchyTestCase extends TestCase {
013        public void testHierarchy() {
014            try {
015                // START SNIPPET: wontwork
016                // Create x hierarchy of containers
017                MutablePicoContainer x = new DefaultPicoContainer();
018                MutablePicoContainer y = new DefaultPicoContainer( x );
019                MutablePicoContainer z = new DefaultPicoContainer( x );
020    
021                // Assemble components
022                x.registerComponentImplementation(Apple.class);
023                y.registerComponentImplementation(Juicer.class);
024                z.registerComponentImplementation(Peeler.class);
025    
026                // Instantiate components
027                Peeler peeler = (Peeler) z.getComponentInstance(Peeler.class);
028                // WON'T WORK! peeler will be null
029                peeler = (Peeler) x.getComponentInstance(Peeler.class);
030                // WON'T WORK! This will throw an exception
031                Juicer juicer = (Juicer) y.getComponentInstance(Juicer.class);
032                // END SNIPPET: wontwork
033            } catch (UnsatisfiableDependenciesException e) {
034                // expected
035            }
036        }
037    
038    }