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 org.picocontainer.MutablePicoContainer;
012 import org.picocontainer.PicoContainer;
013 import org.picocontainer.behaviors.ImplementationHiding;
014 import org.picocontainer.behaviors.Caching;
015 import org.picocontainer.injectors.ConstructorInjection;
016 import org.picocontainer.DefaultPicoContainer;
017 import org.picocontainer.Characteristics;
018 import org.picocontainer.tck.AbstractImplementationHidingPicoContainerTestCase;
019
020 import java.util.Properties;
021
022 import junit.framework.AssertionFailedError;
023
024 /**
025 *
026 * @author Aslak Hellesøy
027 */
028 public class ImplementationHidingWithDefaultPicoContainerTestCase extends AbstractImplementationHidingPicoContainerTestCase {
029
030 protected MutablePicoContainer createImplementationHidingPicoContainer() {
031 return createPicoContainer(null);
032 }
033
034 protected Properties[] getProperties() {
035 return new Properties[] {Characteristics.NO_CACHE, Characteristics.NO_HIDE_IMPL};
036 }
037
038 protected MutablePicoContainer createPicoContainer(PicoContainer parent) {
039 return new DefaultPicoContainer(new Caching().wrap(new ImplementationHiding().wrap(new ConstructorInjection())), parent);
040 }
041
042 public void testSameInstanceCanBeUsedAsDifferentTypeWhenCaching() {
043 // we're choosing a CAF for DPC, thus Caching (a default) not enabled.
044 try {
045 super.testSameInstanceCanBeUsedAsDifferentTypeWhenCaching();
046 } catch (AssertionFailedError e) {
047 assertTrue(e.getMessage().indexOf("expected same:<org.picocontainer.testmodel.WashableTouchable@") > -1);
048 assertTrue(e.getMessage().indexOf("was not:<org.picocontainer.testmodel.WashableTouchable@") > -1);
049 }
050
051 }
052
053 public void testAcceptImplementsBreadthFirstStrategy() {
054 super.testAcceptImplementsBreadthFirstStrategy();
055 }
056
057 }