001: /*
002: * User: djoiner
003: * Date: Jul 19, 2002
004: * Time: 2:53:19 PM
005: */
006: package net.sourceforge.jwebunit.tests.util.reflect;
007:
008: import junit.framework.TestCase;
009:
010: import java.lang.reflect.InvocationTargetException;
011:
012: import net.sourceforge.jwebunit.tests.util.reflect.MethodInvoker;
013:
014: public class MethodInvokerTest extends TestCase {
015: private Receiver receiver;
016:
017: public MethodInvokerTest(String s) {
018: super (s);
019: }
020:
021: protected void setUp() throws Exception {
022: super .setUp();
023: receiver = new Receiver();
024: }
025:
026: public void testNoArg() throws Exception {
027: MethodInvoker invoker = new MethodInvoker(receiver, "noArg");
028: invoker.invoke();
029: assertTrue(receiver.noArgCalled);
030: }
031:
032: public void testOneArg() throws Exception {
033: MethodInvoker invoker = new MethodInvoker(receiver, "oneArg",
034: "anArg");
035: invoker.invoke();
036: assertTrue(receiver.oneArgCalled);
037: }
038:
039: public void testMultipleArgs() throws Exception {
040: MethodInvoker invoker = new MethodInvoker(receiver, "multiArg",
041: new Object[] { "arg1", "arg2" });
042: invoker.invoke();
043: assertTrue(receiver.multiArgCalled);
044: }
045:
046: public void testNoMethod() {
047: try {
048: MethodInvoker invoker = new MethodInvoker(receiver,
049: "noMethod");
050: invoker.invoke();
051: fail();
052: } catch (NoSuchMethodException e) {
053: } catch (Exception e) {
054: fail();
055: }
056: }
057:
058: public void testMethodThrowsException() throws Exception {
059: MethodInvoker invoker = new MethodInvoker(receiver,
060: "throwRuntime");
061: try {
062: invoker.invoke();
063: } catch (InvocationTargetException e) {
064: assertEquals(e.getTargetException().getClass(),
065: RuntimeException.class);
066: }
067: }
068:
069: public void testPrimitiveArgs() throws Exception {
070: MethodInvoker invoker = new MethodInvoker(receiver,
071: "primitiveArg", new Integer(1));
072: invoker.invoke();
073: assertTrue(receiver.primitiveArgCalled);
074: }
075:
076: public void testAllPrimitives() throws Exception {
077: Object[] args = new Object[] { new Boolean(true),
078: new Byte((byte) 1), new Character('c'), new Double(1),
079: new Float(1), new Integer(1), new Long(1),
080: new Short((short) 1) };
081: MethodInvoker invoker = new MethodInvoker(receiver,
082: "allPrimitives", args);
083: invoker.invoke();
084: assertTrue(receiver.allPrimitivesCalled);
085: }
086:
087: class Receiver {
088: private boolean noArgCalled;
089: private boolean oneArgCalled;
090: private boolean multiArgCalled;
091: private boolean primitiveArgCalled;
092: private boolean allPrimitivesCalled;
093:
094: public void noArg() {
095: noArgCalled = true;
096: }
097:
098: public void oneArg(String arg) {
099: oneArgCalled = true;
100: }
101:
102: public void multiArg(String arg1, String arg2) {
103: multiArgCalled = true;
104: }
105:
106: public void primitiveArg(int i) {
107: primitiveArgCalled = true;
108: }
109:
110: public void allPrimitives(boolean bool, byte b, char c,
111: double d, float f, int i, long l, short s) {
112: allPrimitivesCalled = true;
113: }
114:
115: public void throwRuntime() {
116: throw new RuntimeException();
117: }
118: }
119: }
|