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 }