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 }