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 }