package org.oddjob.monitor.action; import junit.framework.TestCase; import org.oddjob.Loadable; import org.oddjob.monitor.model.MockExplorerContext; import org.oddjob.util.MockThreadManager; import org.oddjob.util.ThreadManager; public class LoadActionTest extends TestCase { private class OurLoadable implements Loadable { boolean loadable = true; public boolean isLoadable() { return loadable; } public void load() { setLoadable(false); } @Override public void unload() { throw new RuntimeException("Unexpected."); } void setLoadable(boolean loadable) { this.loadable = loadable; } } class OurEContext extends MockExplorerContext { OurLoadable loadable = new OurLoadable(); @Override public Object getThisComponent() { return loadable; } @Override public ThreadManager getThreadManager() { return new MockThreadManager() { @Override public void run(Runnable runnable, String description) { runnable.run(); } }; } } public void testCycle() throws Exception { LoadAction test = new LoadAction(); assertFalse(test.isEnabled()); assertFalse(test.isVisible()); OurEContext eContext = new OurEContext(); test.setSelectedContext(eContext); test.prepare(); assertTrue(test.isEnabled()); assertTrue(test.isVisible()); assertTrue(eContext.loadable.loadable); test.action(); test.prepare(); assertFalse(eContext.loadable.loadable); assertFalse(test.isEnabled()); assertTrue(test.isVisible()); test.setSelectedContext(null); assertFalse(test.isEnabled()); assertFalse(test.isVisible()); } }