001package org.picocontainer.defaults.issues;
002
003import org.junit.Test;import static org.junit.Assert.assertFalse;import static org.junit.Assert.assertSame;
004import org.picocontainer.Startable;
005import org.picocontainer.DefaultPicoContainer;
006import org.picocontainer.ComponentAdapter;
007import org.picocontainer.Characteristics;
008import org.picocontainer.injectors.ConstructorInjector;
009import org.picocontainer.injectors.SingleMemberInjector;
010import org.picocontainer.behaviors.Cached;
011import org.picocontainer.behaviors.Stored;
012
013public class Issue0352TestCase {
014
015    public static class Foo {
016        }
017
018        // This test failed before patch (see revision #5396)
019        @Test
020        public void testShouldFindSupertypeOfAdapterOnAbstractAdapterDerivative() {
021                ConstructorInjector<Foo> injector = new ConstructorInjector<Foo>("key", Foo.class);
022                assertSame(injector, injector.findAdapterOfType(SingleMemberInjector.class));
023        }
024
025        // This test works
026        @Test
027        public void testShouldFindSupertypeOfAdapterOnAbstractBehaviorDerivative() {
028                ConstructorInjector<Foo> injector = new ConstructorInjector<Foo>("key", Foo.class);
029                Cached<Foo> adapter = new Cached<Foo>(injector);
030                assertSame(adapter, adapter.findAdapterOfType(Stored.class));
031                assertSame(injector, adapter.findAdapterOfType(SingleMemberInjector.class));
032        }
033
034}