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 UnloadActionTest extends TestCase {
private class OurLoadable implements Loadable {
boolean loadable = false;
public boolean isLoadable() {
return loadable;
}
public void load() {
throw new RuntimeException("Unexpected.");
}
@Override
public void unload() {
setLoadable(true);
}
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 {
UnloadAction test = new UnloadAction();
assertFalse(test.isEnabled());
assertFalse(test.isVisible());
OurEContext eContext = new OurEContext();
test.setSelectedContext(eContext);
assertTrue(test.isEnabled());
assertTrue(test.isVisible());
assertFalse(eContext.loadable.loadable);
test.action();
test.setSelectedContext(eContext);
test.prepare();
assertTrue(eContext.loadable.loadable);
assertFalse(test.isEnabled());
assertTrue(test.isVisible());
test.setSelectedContext(null);
}
}