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 *****************************************************************************/
010 package org.picocontainer.monitors;
011
012 import static org.junit.Assert.assertEquals;
013 import static org.junit.Assert.assertNull;
014 import static org.picocontainer.tck.MockFactory.mockeryWithCountingNamingScheme;
015
016 import java.lang.reflect.Constructor;
017 import java.lang.reflect.Method;
018
019 import org.jmock.Mockery;
020 import org.jmock.integration.junit4.JMock;
021 import org.junit.Test;
022 import org.junit.runner.RunWith;
023 import org.picocontainer.ComponentAdapter;
024 import org.picocontainer.MutablePicoContainer;
025 import org.picocontainer.PicoLifecycleException;
026
027 @RunWith(JMock.class)
028 public 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 }