001 /*****************************************************************************
002 * Copyright (C) PicoContainer Organization. All rights reserved. *
003 * ------------------------------------------------------------------------- *
004 * The software in this package is published under the terms of the BSD *
005 * style license a copy of which has been included with this distribution in *
006 * the LICENSE.txt file. *
007 * *
008 * Original code by *
009 *****************************************************************************/
010 package org.picocontainer.doc.tutorial.blocks;
011
012 import junit.framework.TestCase;
013
014 import org.picocontainer.MutablePicoContainer;
015 import org.picocontainer.Parameter;
016 import org.picocontainer.DefaultPicoContainer;
017 import org.picocontainer.monitors.NullComponentMonitor;
018 import org.picocontainer.lifecycle.NullLifecycleStrategy;
019 import org.picocontainer.behaviors.CachingBehaviorFactory;
020 import org.picocontainer.behaviors.CachingBehavior;
021 import org.picocontainer.injectors.ConstructorInjector;
022 import org.picocontainer.adapters.InstanceAdapter;
023 import org.picocontainer.injectors.SetterInjector;
024 import org.picocontainer.injectors.SetterInjectionFactory;
025 import org.picocontainer.behaviors.SynchronizedBehavior;
026 import org.picocontainer.behaviors.SynchronizedBehaviorFactory;
027 import org.picocontainer.doc.introduction.Apple;
028 import org.picocontainer.doc.introduction.Juicer;
029 import org.picocontainer.doc.introduction.Peeler;
030
031
032 /**
033 * Test case for the snippets used in "Component Adapters and Factories"
034 *
035 * @author Jörg Schaible
036 */
037 public class BuildingBlocksTestCase extends TestCase {
038 public void testRegisterConvenient() {
039 // START SNIPPET: register-convenient
040 MutablePicoContainer picoContainer = new DefaultPicoContainer();
041 picoContainer.addComponent(Juicer.class);
042 picoContainer.addComponent("My Peeler", Peeler.class);
043 picoContainer.addComponent(new Apple());
044 // END SNIPPET: register-convenient
045 // START SNIPPET: register-direct
046 picoContainer.addAdapter(new InstanceAdapter("Another Apple", new Apple(), new NullLifecycleStrategy(),
047 new NullComponentMonitor()));
048 // END SNIPPET: register-direct
049 }
050
051 public void testRegisterEquivalentConvenient() {
052 MutablePicoContainer picoContainer = new DefaultPicoContainer();
053 // START SNIPPET: register-equivalent-convenient
054 picoContainer.addComponent(Juicer.class);
055 // END SNIPPET: register-equivalent-convenient
056 }
057
058 public void testRegisterEquivalentAtLength() {
059 MutablePicoContainer picoContainer = new DefaultPicoContainer();
060 // START SNIPPET: register-equivalent-at-length
061 picoContainer.addAdapter(
062 new CachingBehavior(
063 new ConstructorInjector(Juicer.class, Juicer.class, null, new NullComponentMonitor(), new NullLifecycleStrategy())));
064 // END SNIPPET: register-equivalent-at-length
065 }
066
067 public void testRegisterDifferentComponentAdapterFactory() {
068
069 // START SNIPPET: register-different-componentFactory
070 MutablePicoContainer picoContainer = new DefaultPicoContainer(
071 new SynchronizedBehaviorFactory().forThis(new CachingBehaviorFactory().forThis(new SetterInjectionFactory())));
072 // END SNIPPET: register-different-componentFactory
073 }
074
075 public void testRegisterEquivalentAtLength2() {
076 MutablePicoContainer picoContainer = new DefaultPicoContainer();
077 // START SNIPPET: register-equivalent-at-length2
078 picoContainer.addAdapter(
079 new SynchronizedBehavior(
080 new CachingBehavior(
081 new SetterInjector(
082 JuicerBean.class, JuicerBean.class, (Parameter[])null, new NullComponentMonitor(), new NullLifecycleStrategy()))));
083 // END SNIPPET: register-equivalent-at-length2
084 }
085 }