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    }