001    package org.picocontainer.lifecycle;
002    
003    import org.junit.Test;
004    import static org.junit.Assert.assertEquals;
005    import org.picocontainer.DefaultPicoContainer;
006    import static org.picocontainer.Characteristics.CACHE;
007    import org.picocontainer.containers.EmptyPicoContainer;
008    import org.picocontainer.monitors.NullComponentMonitor;
009    
010    public class CompositeLifecycleStrategyTestCase {
011        
012        @Test
013        public void testMixOfThirdPartyAndBuiltInStartableAndDisposable() {
014            DefaultPicoContainer pico = new DefaultPicoContainer(new CompositeLifecycleStrategy(
015                        new MyStartableLifecycleStrategy(),
016                        new StartableLifecycleStrategy(new NullComponentMonitor())),
017                    new EmptyPicoContainer());
018            StringBuilder sb = new StringBuilder();
019            pico.addComponent(sb);
020            pico.as(CACHE).addComponent(ThirdPartyStartableComponent.class);
021            pico.as(CACHE).addComponent(BuiltInStartableComponent.class);
022            pico.start();
023            pico.stop();
024            pico.dispose();
025            assertEquals("<<>>!!", sb.toString());
026        }
027    
028    }