/* * (c) Rob Gordon 2005 */ package org.oddjob.framework; import java.util.Map; import junit.framework.TestCase; import org.apache.commons.beanutils.DynaBean; import org.oddjob.arooa.ArooaSession; import org.oddjob.arooa.convert.ArooaConversionException; import org.oddjob.arooa.reflect.ArooaPropertyException; import org.oddjob.arooa.standard.StandardArooaSession; import org.oddjob.describe.UniversalDescriber; import org.oddjob.images.IconHelper; import org.oddjob.images.StateIcons; import org.oddjob.state.JobStateHandler; import org.oddjob.state.StateHandler; /** * Tests on BaseWrapper. * */ public class BaseWrapperTest extends TestCase { /** Bean fixture */ public static class Result { public int getResult() { return 42; } } /** Test base wrapper by extending it. */ private class MockWrapper extends BaseWrapper { JobStateHandler stateHandler = new JobStateHandler(this); IconHelper iconHelper = new IconHelper(this, StateIcons.iconFor(stateHandler.getState())); Object wrapped; MockWrapper(Object wrapped) { this.wrapped = wrapped; } @Override protected StateHandler<?> stateHandler() { return stateHandler; } @Override protected IconHelper iconHelper() { return iconHelper; } public Object getWrapped() { return wrapped; } protected Object getProxy() { return null; } protected DynaBean getDynaBean() { return new WrapDynaBean(wrapped); } public void run() {} @Override public boolean softReset() { throw new RuntimeException("Unexpected."); } @Override public boolean hardReset() { throw new RuntimeException("Unexpected."); } @Override protected void fireDestroyedState() { throw new RuntimeException("Unexpected"); } } /** * Test getting a result. * @throws ArooaConversionException * @throws ArooaPropertyException * */ public void testWithResult() throws ArooaPropertyException, ArooaConversionException { MockWrapper test = new MockWrapper(new Result()); test.setArooaSession(new StandardArooaSession()); assertEquals(42, test.getResult(null)); } /** * Test getting a result with no result. * @throws ArooaConversionException * @throws ArooaPropertyException * */ public void testNoResult() throws ArooaPropertyException, ArooaConversionException { MockWrapper test = new MockWrapper(new Object()); assertEquals(0, test.getResult(null)); } public static class MockBean { public String getReadable() { return "a"; } public void setWritable(String writable) { } public String getBoth() { return "b"; } public void setBoth(String both) { } } public void testDescribe() { ArooaSession session = new StandardArooaSession(); MockWrapper test = new MockWrapper(new MockBean()); test.setArooaSession(session); Map<String, String> properties = new UniversalDescriber( session).describe(test); assertEquals("readable", "a", properties.get("readable")); assertEquals("both", "b", properties.get("both")); assertEquals("writable", null, properties.get("writable")); } }