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 Michael Rettig * 009 *****************************************************************************/ 010 package org.picocontainer.defaults.issues; 011 012 import static org.junit.Assert.assertNotNull; 013 014 import org.junit.Test; 015 import org.picocontainer.DefaultPicoContainer; 016 import org.picocontainer.visitors.VerifyingVisitor; 017 018 019 public class Issue0229TestCase { 020 021 public static class MockRunnable implements Runnable { 022 public void run() { 023 } 024 } 025 026 public static class OtherRunnable implements Runnable { 027 public void run() { 028 } 029 } 030 031 public static class MockRunner { 032 private final Runnable[] _runners; 033 034 public MockRunner(Runnable[] runnables) { 035 _runners = runnables; 036 } 037 038 public Runnable[] getRunners(){ 039 return _runners; 040 } 041 } 042 043 @Test public void testArrayDependenciesAndVerification() { 044 DefaultPicoContainer container = new DefaultPicoContainer(); 045 container.addComponent(new MockRunnable()); 046 container.addComponent(new OtherRunnable()); 047 container.addComponent(MockRunner.class); 048 049 // this will fail to resolve the Runnable array on the MockRunner 050 VerifyingVisitor visitor = new VerifyingVisitor(); 051 visitor.traverse(container); 052 053 container.start(); 054 assertNotNull(container.getComponent(MockRunner.class)); 055 } 056 057 }