/* * (c) Rob Gordon 2005 */ package org.oddjob.monitor.control; import java.util.Map; import junit.framework.TestCase; import org.oddjob.Stateful; import org.oddjob.arooa.ArooaSession; import org.oddjob.arooa.standard.StandardArooaSession; import org.oddjob.monitor.model.DetailModel; import org.oddjob.monitor.model.MockExplorerContext; import org.oddjob.monitor.model.PropertyModel; import org.oddjob.state.JobState; import org.oddjob.state.StateEvent; import org.oddjob.state.StateListener; public class PropertyPollingTest extends TestCase { private class OurExplorerContext extends MockExplorerContext { @Override public Object getThisComponent() { return new Comp(); } } public static class Comp { public String getFruit() { return "apples"; } } /** * Test what happens when the property tab * is selected. * */ public void testSelected() { ArooaSession session = new StandardArooaSession(); PropertyModel model = new PropertyModel(); PropertyPolling test = new PropertyPolling(this, session); test.setPropertyModel(model); DetailModel detailModel = new DetailModel(); detailModel.addPropertyChangeListener(test); detailModel.setTabSelected(DetailModel.PROPERTIES_TAB); OurExplorerContext ec = new OurExplorerContext(); detailModel.setSelectedContext(ec); test.poll(); String result = (String) model.getProperties().get("fruit"); assertEquals("apples", result); } /** * Test what happens when the property tab * is unselected. * */ public void testNotSelected() { ArooaSession session = new StandardArooaSession(); PropertyModel model = new PropertyModel(); PropertyPolling test = new PropertyPolling(this, session); test.setPropertyModel(model); DetailModel detailModel = new DetailModel(); detailModel.addPropertyChangeListener( test); OurExplorerContext ec = new OurExplorerContext(); detailModel.setSelectedContext(ec); test.poll(); Map<String, String> props = model.getProperties(); assertEquals(0, props.size()); } public class OurStateful implements Stateful { private StateListener listener; @Override public void addStateListener(StateListener listener) { assertNotNull(listener); assertNull(this.listener); this.listener = listener; } @Override public StateEvent lastStateEvent() { throw new RuntimeException("Unexpected."); } @Override public void removeStateListener(StateListener listener) { assertNotNull(listener); assertSame(this.listener, listener); this.listener = null; } } private class OurExplorerContext2 extends MockExplorerContext { OurStateful stateful = new OurStateful(); @Override public Object getThisComponent() { return stateful; } } public void testSelectedStateful() { ArooaSession session = new StandardArooaSession(); PropertyModel model = new PropertyModel(); PropertyPolling test = new PropertyPolling(this, session); test.setPropertyModel(model); DetailModel detailModel = new DetailModel(); detailModel.addPropertyChangeListener(test); detailModel.setTabSelected(DetailModel.PROPERTIES_TAB); OurExplorerContext2 ec = new OurExplorerContext2(); detailModel.setSelectedContext(ec); assertNotNull(ec.stateful.listener); ec.stateful.listener.jobStateChange( new StateEvent(ec.stateful, JobState.COMPLETE)); detailModel.setSelectedContext(null); assertNull(ec.stateful.listener); } }