001    package org.picocontainer.defaults.issues;
002    
003    import org.junit.Test;import static org.junit.Assert.assertFalse;import static org.junit.Assert.assertSame;
004    import org.picocontainer.Startable;
005    import org.picocontainer.DefaultPicoContainer;
006    import org.picocontainer.ComponentAdapter;
007    import org.picocontainer.Characteristics;
008    import org.picocontainer.injectors.ConstructorInjector;
009    import org.picocontainer.injectors.SingleMemberInjector;
010    import org.picocontainer.behaviors.Cached;
011    import org.picocontainer.behaviors.Stored;
012    
013    public 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    }