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    }