001    package org.picocontainer.doc.tutorial.blocks;
002    
003    import junit.framework.TestCase;
004    
005    import org.picocontainer.MutablePicoContainer;
006    import org.picocontainer.defaults.CachingComponentAdapter;
007    import org.picocontainer.defaults.CachingComponentAdapterFactory;
008    import org.picocontainer.defaults.ConstructorInjectionComponentAdapter;
009    import org.picocontainer.defaults.DefaultPicoContainer;
010    import org.picocontainer.defaults.InstanceComponentAdapter;
011    import org.picocontainer.defaults.SetterInjectionComponentAdapter;
012    import org.picocontainer.defaults.SetterInjectionComponentAdapterFactory;
013    import org.picocontainer.defaults.SynchronizedComponentAdapter;
014    import org.picocontainer.defaults.SynchronizedComponentAdapterFactory;
015    import org.picocontainer.doc.introduction.Apple;
016    import org.picocontainer.doc.introduction.Juicer;
017    import org.picocontainer.doc.introduction.Peeler;
018    
019    
020    /**
021     * Test case for the snippets used in "Component Adapters and Factories"
022     * 
023     * @author Jörg Schaible
024     */
025    public class BuildingBlocksTestCase extends TestCase {
026        public void testRegisterConvenient() {
027            // START SNIPPET: register-convenient
028            MutablePicoContainer picoContainer = new DefaultPicoContainer();
029            picoContainer.registerComponentImplementation(Juicer.class);
030            picoContainer.registerComponentImplementation("My Peeler", Peeler.class);
031            picoContainer.registerComponentInstance(new Apple());
032            // END SNIPPET: register-convenient
033            // START SNIPPET: register-direct
034            picoContainer.registerComponent(new InstanceComponentAdapter("Another Apple", new Apple()));
035            // END SNIPPET: register-direct
036        }
037    
038        public void testRegisterEquivalentConvenient() {
039            MutablePicoContainer picoContainer = new DefaultPicoContainer();
040            // START SNIPPET: register-equivalent-convenient
041            picoContainer.registerComponentImplementation(Juicer.class);
042            // END SNIPPET: register-equivalent-convenient
043        }
044    
045        public void testRegisterEquivalentAtLength() {
046            MutablePicoContainer picoContainer = new DefaultPicoContainer();
047            // START SNIPPET: register-equivalent-at-length
048            picoContainer.registerComponent(
049                    new CachingComponentAdapter(
050                            new ConstructorInjectionComponentAdapter(Juicer.class, Juicer.class, null)));
051            // END SNIPPET: register-equivalent-at-length
052        }
053    
054        public void testRegisterDifferentComponentAdapterFactory() {
055            // START SNIPPET: register-different-caf
056            MutablePicoContainer picoContainer = new DefaultPicoContainer(
057                    new SynchronizedComponentAdapterFactory(
058                            new CachingComponentAdapterFactory(
059                                    new SetterInjectionComponentAdapterFactory())));
060            // END SNIPPET: register-different-caf
061        }
062    
063        public void testRegisterEquivalentAtLength2() {
064            MutablePicoContainer picoContainer = new DefaultPicoContainer();
065            // START SNIPPET: register-equivalent-at-length2
066            picoContainer.registerComponent(
067                    new SynchronizedComponentAdapter(
068                            new CachingComponentAdapter(
069                                    new SetterInjectionComponentAdapter(
070                                            JuicerBean.class, JuicerBean.class, null))));
071            // END SNIPPET: register-equivalent-at-length2
072        }
073    }