001package org.picocontainer.lifecycle;
002
003import org.junit.Test;
004import static org.junit.Assert.assertEquals;
005import org.picocontainer.DefaultPicoContainer;
006import static org.picocontainer.Characteristics.CACHE;
007import org.picocontainer.containers.EmptyPicoContainer;
008import org.picocontainer.monitors.NullComponentMonitor;
009
010public 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}