001 /*****************************************************************************
002 * Copyright (C) PicoContainer Organization. All rights reserved. *
003 * ------------------------------------------------------------------------- *
004 * The software in this package is published under the terms of the BSD *
005 * style license a copy of which has been included with this distribution in *
006 * the LICENSE.txt file. *
007 * *
008 *****************************************************************************/
009 package org.picocontainer.containers;
010
011 import static org.junit.Assert.assertTrue;
012
013 import java.util.Properties;
014
015 import junit.framework.AssertionFailedError;
016
017 import org.junit.Test;
018 import org.picocontainer.Characteristics;
019 import org.picocontainer.DefaultPicoContainer;
020 import org.picocontainer.MutablePicoContainer;
021 import org.picocontainer.PicoContainer;
022 import org.picocontainer.behaviors.Caching;
023 import org.picocontainer.behaviors.ImplementationHiding;
024 import org.picocontainer.injectors.ConstructorInjection;
025 import org.picocontainer.tck.AbstractImplementationHidingPicoContainerTest;
026
027 /**
028 *
029 * @author Aslak Hellesøy
030 */
031 public class ImplementationHidingWithDefaultPicoContainerTestCase extends AbstractImplementationHidingPicoContainerTest {
032
033 protected MutablePicoContainer createImplementationHidingPicoContainer() {
034 return createPicoContainer(null);
035 }
036
037 protected Properties[] getProperties() {
038 return new Properties[] {Characteristics.NO_CACHE, Characteristics.NO_HIDE_IMPL};
039 }
040
041 protected MutablePicoContainer createPicoContainer(PicoContainer parent) {
042 return new DefaultPicoContainer(new Caching().wrap(new ImplementationHiding().wrap(new ConstructorInjection())), parent);
043 }
044
045 @Test public void testSameInstanceCanBeUsedAsDifferentTypeWhenCaching() {
046 // we're choosing a CAF for DPC, thus Caching (a default) not enabled.
047 try {
048 super.testSameInstanceCanBeUsedAsDifferentTypeWhenCaching();
049 } catch (AssertionFailedError e) {
050 assertTrue(e.getMessage().indexOf("expected same:<org.picocontainer.testmodel.WashableTouchable@") > -1);
051 assertTrue(e.getMessage().indexOf("was not:<org.picocontainer.testmodel.WashableTouchable@") > -1);
052 }
053
054 }
055
056 @Test public void testAcceptImplementsBreadthFirstStrategy() {
057 super.testAcceptImplementsBreadthFirstStrategy();
058 }
059
060 }