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 * Original code by the committers * 009 *****************************************************************************/ 010 011 package org.picocontainer.alternatives; 012 013 import java.util.ArrayList; 014 import java.util.Iterator; 015 import java.util.List; 016 017 import org.picocontainer.MutablePicoContainer; 018 import org.picocontainer.PicoContainer; 019 import org.picocontainer.alternatives.ImmutablePicoContainerTestCase.UnsatisfiableIterator; 020 import org.picocontainer.defaults.ConstructorInjectionComponentAdapterFactory; 021 import org.picocontainer.defaults.DefaultPicoContainer; 022 import org.picocontainer.tck.AbstractPicoContainerTestCase; 023 024 /** 025 * @author Paul Hammant 026 * @version $Revision: 3140 $ 027 */ 028 public class CachingPicoContainerTestCase extends AbstractPicoContainerTestCase { 029 030 protected MutablePicoContainer createImplementationHidingPicoContainer() { 031 return new CachingPicoContainer(); 032 } 033 034 protected MutablePicoContainer createPicoContainer(PicoContainer parent) { 035 return new CachingPicoContainer(parent); 036 } 037 038 public void testUsageOfADifferentComponentAdapterFactory() { 039 // Jira bug 212 - logical opposite 040 MutablePicoContainer parent = new DefaultPicoContainer(); 041 CachingPicoContainer pico = new CachingPicoContainer(new ConstructorInjectionComponentAdapterFactory(), parent); 042 pico.registerComponentImplementation(List.class, ArrayList.class); 043 List list1 = (List) pico.getComponentInstanceOfType(List.class); 044 List list2 = (List) pico.getComponentInstanceOfType(List.class); 045 assertNotNull(list1); 046 assertNotNull(list2); 047 assertTrue(list1 == list2); 048 } 049 050 051 public void testComponentAdaptersListsAreNotCached() { 052 MutablePicoContainer parent = new DefaultPicoContainer(); 053 CachingPicoContainer pico = new CachingPicoContainer(new ConstructorInjectionComponentAdapterFactory(), parent); 054 pico.registerComponentImplementation(List.class, ArrayList.class); 055 List list1 = (List) pico.getComponentAdaptersOfType(List.class); 056 List list2 = (List) pico.getComponentAdaptersOfType(List.class); 057 assertNotNull(list1); 058 assertNotNull(list2); 059 assertTrue(list1 != list2); 060 } 061 062 063 public void testDelegationOfVerify() { 064 DefaultPicoContainer mpc = new DefaultPicoContainer(); 065 mpc.registerComponentImplementation(Iterator.class, UnsatisfiableIterator.class); 066 CachingPicoContainer pico = new CachingPicoContainer(mpc); 067 pico.verify(); 068 069 } 070 071 }