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 * 009 *****************************************************************************/ 010package org.picocontainer.monitors; 011 012import static org.junit.Assert.assertEquals; 013import static org.junit.Assert.assertNull; 014import static org.picocontainer.tck.MockFactory.mockeryWithCountingNamingScheme; 015 016import java.lang.reflect.Constructor; 017import java.lang.reflect.Method; 018 019import org.jmock.Mockery; 020import org.jmock.integration.junit4.JMock; 021import org.junit.Test; 022import org.junit.runner.RunWith; 023import org.picocontainer.ComponentAdapter; 024import org.picocontainer.MutablePicoContainer; 025import org.picocontainer.PicoLifecycleException; 026 027@RunWith(JMock.class) 028public class NullComponentMonitorTestCase { 029 030 private Mockery mockery = mockeryWithCountingNamingScheme(); 031 032 @Test public void testItAll() throws NoSuchMethodException { 033 034 NullComponentMonitor ncm = new NullComponentMonitor(); 035 ncm.instantiated(makePico(), makeCA(), makeConstructor(), "foo", new Object[0], 10); 036 assertEquals(makeConstructor(), ncm.instantiating(makePico(), makeCA(), makeConstructor())); 037 ncm.instantiationFailed(makePico(), makeCA(), makeConstructor(), new Exception()); 038 ncm.invocationFailed(makeConstructor(), "foo", new Exception()); 039 ncm.invoked(makePico(), makeCA(), makeMethod(), "foo", 10, new Object[0], null); 040 ncm.invoking(makePico(), makeCA(), makeMethod(), "foo", new Object[0]); 041 try { 042 ncm.lifecycleInvocationFailed(makePico(), makeCA(), makeMethod(), "foo", new RuntimeException()); 043 } catch (PicoLifecycleException e) { 044 assertEquals(makeMethod(), e.getMethod()); 045 assertEquals("foo", e.getInstance()); 046 assertEquals("PicoLifecycleException: method 'public java.lang.String java.lang.String.toString()', instance 'foo, java.lang.RuntimeException", e.getMessage()); 047 } 048 assertNull(ncm.noComponentFound(makePico(), String.class)); 049 050 } 051 052 private MutablePicoContainer makePico() { 053 return mockery.mock(MutablePicoContainer.class); 054 } 055 056 private ComponentAdapter makeCA() { 057 return mockery.mock(ComponentAdapter.class); 058 } 059 060 private Constructor makeConstructor() { 061 return String.class.getConstructors()[0]; 062 } 063 064 private Method makeMethod() throws NoSuchMethodException { 065 return String.class.getMethod("toString"); 066 } 067 068 069}