package org.apache.commons.chain.generic; import junit.framework.TestCase; import org.apache.commons.chain.Context; import org.apache.commons.chain.impl.ContextBase; /* JUnitTest case for class: org.apache.commons.chain.generic.DispatchCommand */ public class DispatchCommandTestCase extends TestCase { public DispatchCommandTestCase(String _name) { super(_name); } /* setUp method for test case */ protected void setUp() { } /* tearDown method for test case */ protected void tearDown() { } /* Executes the test case */ public static void main(String[] argv) { String[] testCaseList = {DispatchCommandTestCase.class.getName()}; junit.textui.TestRunner.main(testCaseList); } public void testMethodDispatch() throws Exception { TestCommand test = new TestCommand(); test.setMethod("testMethod"); Context context = new ContextBase(); assertNull(context.get("foo")); boolean result = test.execute(context); assertTrue(result); assertNotNull(context.get("foo")); assertEquals("foo", context.get("foo")); } public void testMethodKeyDispatch() throws Exception { TestCommand test = new TestCommand(); test.setMethodKey("foo"); Context context = new ContextBase(); context.put("foo", "testMethodKey"); assertNull(context.get("bar")); boolean result = test.execute(context); assertFalse(result); assertNotNull(context.get("bar")); assertEquals("bar", context.get("bar")); } public void testAlternateContext() throws Exception { TestAlternateContextCommand test = new TestAlternateContextCommand(); test.setMethod("foo"); Context context = new ContextBase(); assertNull(context.get("elephant")); boolean result = test.execute(context); assertTrue(result); assertNotNull(context.get("elephant")); assertEquals("elephant", context.get("elephant")); } class TestCommand extends DispatchCommand { public boolean testMethod(Context context) { context.put("foo", "foo"); return true; } public boolean testMethodKey(Context context) { context.put("bar", "bar"); return false; } } /** * Command which uses alternate method signature. *

Title: Commons Chain

*

Description: An implmentation of the GoF Chain of Responsibility pattern

*

Copyright: Copyright (c) 2003-2004 The Apache Software Foundation - All Rights Reserved.

*

Company: The Apache Software Foundation

* @author germuska * @version 0.2-dev */ class TestAlternateContextCommand extends DispatchCommand { protected Class[] getSignature() { return new Class[] { TestAlternateContext.class }; } protected Object[] getArguments(Context context) { return new Object[] { new TestAlternateContext(context) }; } public boolean foo(TestAlternateContext context) { context.put("elephant", "elephant"); return true; } } class TestAlternateContext extends java.util.HashMap implements Context { Context wrappedContext = null; TestAlternateContext(Context context) { this.wrappedContext = context; } public Object get(Object o) { return this.wrappedContext.get(o); } public Object put(Object key, Object value) { return this.wrappedContext.put(key, value); } } }