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 import java.util.List; 015 016 import junit.framework.AssertionFailedError; 017 018 import org.junit.Test; 019 import org.picocontainer.Characteristics; 020 import org.picocontainer.DefaultPicoContainer; 021 import org.picocontainer.MutablePicoContainer; 022 import org.picocontainer.PicoContainer; 023 import org.picocontainer.behaviors.Caching; 024 import org.picocontainer.behaviors.ImplementationHiding; 025 import org.picocontainer.injectors.ConstructorInjection; 026 import org.picocontainer.tck.AbstractImplementationHidingPicoContainerTest; 027 028 /** 029 * 030 * @author Aslak Hellesøy 031 */ 032 public class ImplementationHidingWithDefaultPicoContainerTestCase extends AbstractImplementationHidingPicoContainerTest { 033 034 protected MutablePicoContainer createImplementationHidingPicoContainer() { 035 return createPicoContainer(null); 036 } 037 038 protected Properties[] getProperties() { 039 return new Properties[] {Characteristics.NO_CACHE, Characteristics.NO_HIDE_IMPL}; 040 } 041 042 // TODO (PH) should IH do caching at all and CtorInjection instead of AdaptingInjection ? 043 044 protected void addDefaultComponentFactories(List expectedList) { 045 expectedList.add(Caching.class); 046 expectedList.add(ImplementationHiding.class); 047 expectedList.add(ConstructorInjection.class); 048 } 049 050 protected MutablePicoContainer createPicoContainer(PicoContainer parent) { 051 return new DefaultPicoContainer(new Caching().wrap(new ImplementationHiding().wrap(new ConstructorInjection())), parent); 052 } 053 054 @Test 055 public void testAggregatedVerificationException() { 056 super.testAggregatedVerificationException(); 057 } 058 059 @Test public void testSameInstanceCanBeUsedAsDifferentTypeWhenCaching() { 060 // we're choosing a CAF for DPC, thus Caching (a default) not enabled. 061 try { 062 super.testSameInstanceCanBeUsedAsDifferentTypeWhenCaching(); 063 } catch (AssertionFailedError e) { 064 assertTrue(e.getMessage().indexOf("expected same:<org.picocontainer.testmodel.WashableTouchable@") > -1); 065 assertTrue(e.getMessage().indexOf("was not:<org.picocontainer.testmodel.WashableTouchable@") > -1); 066 } 067 068 } 069 070 @Test public void testAcceptImplementsBreadthFirstStrategy() { 071 super.testAcceptImplementsBreadthFirstStrategy(); 072 } 073 074 }