package jalview.util.dialogrunner; import org.testng.Assert; import org.testng.annotations.Test; public class DialogRunnerTest { public class MockDialog implements DialogRunnerI { DialogRunnerI runner = new DialogRunner(); @Override public DialogRunnerI addResponse(RunResponse action) { return runner.addResponse(action); } public void doDialog(String resp) { runner.handleResponse(resp); } @Override public void handleResponse(Object response) { // TODO Auto-generated method stub } } MockDialog dialog = new MockDialog(); @Test public void testDialogRunner() { RunResponse ok, cancel, help, ineed; final String ooh = "OOOOoooOOOOH!"; final String r_ok = "OK"; final String r_cancel = "CANCEL"; final String r_done = "DONE"; final String r_help = "HELP"; final String r_ddoit = "DIDNT DOIT"; final String r_needsb = "I NEED SOMEBODY"; ok = new RunResponse("OK") { @Override public void run() { returned = "DONE"; } }; final RunResponse befok = new RunResponse("OK") { @Override public void run() { returned = "OK"; } }; cancel = new RunResponse("CANCEL") { @Override public void run() { returned = r_ddoit; } }; help = new RunResponse("HELP") { @Override public void run() { returned = r_needsb; } }; ineed = new RunResponse(r_needsb) { @Override public void run() { returned = ooh; } }; Assert.assertFalse(dialog.runner.isRegistered(ok)); dialog.addResponse(ok).addResponse(cancel).addResponse(help).addResponse(ineed); Assert.assertTrue(dialog.runner.isRegistered(ok)); Assert.assertFalse(dialog.runner.firstRunWasCalled); dialog.doDialog("OK"); // OK called, nothing else. Assert.assertTrue(dialog.runner.firstRunWasCalled); Assert.assertTrue(ok.wasRun); Assert.assertEquals(ok.returned, r_done); Assert.assertFalse(cancel.wasRun); Assert.assertEquals(dialog.runner.responses.size(), 2); // do it again - check it doesn't trigger again ok.wasRun = false; dialog.doDialog("OK"); Assert.assertFalse(ok.wasRun); // reset - everything false/null dialog.runner.resetResponses(); Assert.assertFalse(dialog.runner.firstRunWasCalled); Assert.assertFalse(ok.wasRun); Assert.assertNull(ok.returned); Assert.assertEquals(dialog.runner.responses.size(), 0); // cancel called .. dialog.doDialog("HELP"); Assert.assertTrue(dialog.runner.firstRunWasCalled); Assert.assertFalse(ok.wasRun); Assert.assertEquals(ineed.returned, ooh); Assert.assertEquals(dialog.runner.responses.size(), 3); // TODO: test prepend and chained execution of tasks for a response. Assert.assertFalse(dialog.runner.isRegistered(befok)); dialog.runner.setFirstResponse(befok); Assert.assertTrue(dialog.runner.isRegistered(befok)); Assert.assertTrue(dialog.runner.isRegistered(ok)); dialog.runner.resetResponses(); dialog.doDialog("OK"); Assert.assertTrue(befok.wasRun); Assert.assertTrue(ok.wasRun); Assert.assertEquals(dialog.runner.responses.size(), 3); } }