X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=test%2Fjalview%2Futil%2Fdialogrunner%2FDialogRunnerTest.java;h=b89c4bfd0f35c08211c694e171f495b39b261acd;hb=bd7b3138379c2db8507fe7e8d25f5a921e2d9df7;hp=e956124b3bc2ef9751bf1a7b9df5a2b8297149a3;hpb=592c32d037225062c9a4d6caac19b4b556668d9c;p=jalview.git diff --git a/test/jalview/util/dialogrunner/DialogRunnerTest.java b/test/jalview/util/dialogrunner/DialogRunnerTest.java index e956124..b89c4bf 100644 --- a/test/jalview/util/dialogrunner/DialogRunnerTest.java +++ b/test/jalview/util/dialogrunner/DialogRunnerTest.java @@ -1,24 +1,39 @@ package jalview.util.dialogrunner; -import org.testng.Assert; +import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertFalse; +import static org.testng.Assert.assertTrue; + +import java.util.Collection; +import java.util.List; +import java.util.Map; + import org.testng.annotations.Test; +import junit.extensions.PA; + public class DialogRunnerTest { public class MockDialog implements DialogRunnerI { - DialogRunner runner = new DialogRunner<>(this); + DialogRunnerI runner = new DialogRunner(); @Override - public MockDialog response(RunResponse action) + public DialogRunnerI addResponse(Object response, RunResponse action) { - return runner.response(action); + return runner.addResponse(response, action); } - public void doDialog(String resp) + public List doDialog(String resp) { - runner.firstRun(resp); + return runner.handleResponse(resp); } + + @Override + public List handleResponse(Object response) + { + return null; + } } MockDialog dialog = new MockDialog(); @@ -27,27 +42,37 @@ public class DialogRunnerTest public void testDialogRunner() { RunResponse ok, cancel, help, ineed; - final Response ooh = new Response("OOOOoooOOOOH!"), - r_ok = new Response("OK"), r_cancel = new Response("CANCEL"), - r_done = new Response("DONE"), r_help = new Response("HELP"), - r_ddoit = new Response("DIDNT DOIT"), - r_needsb = new Response("I NEED SOMEBODY"); + 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 = new Response("DONE"); + returnValue = "DONE"; + } + }; + final RunResponse befok = new RunResponse("OK") + { + @Override + public void run() + { + returnValue = "OK"; } }; + cancel = new RunResponse("CANCEL") { @Override public void run() { - returned = r_ddoit; + returnValue = r_ddoit; } }; help = new RunResponse("HELP") @@ -55,8 +80,7 @@ public class DialogRunnerTest @Override public void run() { - returned = r_needsb; - + returnValue = r_needsb; } }; ineed = new RunResponse(r_needsb) @@ -64,38 +88,64 @@ public class DialogRunnerTest @Override public void run() { - returned = ooh; + returnValue = ooh; } }; - dialog.response(ok).response(cancel).response(help).response(ineed); + assertFalse(isRegistered(dialog.runner, ok)); + + dialog.addResponse("OK", ok).addResponse("CANCEL", cancel). + addResponse("HELP", help).addResponse(r_needsb, ineed); - Assert.assertFalse(dialog.runner.firstRunWasCalled); - dialog.doDialog("OK"); + assertTrue(isRegistered(dialog.runner, ok)); + +// Assert.assertFalse(dialog.runner.firstRunWasCalled); + List actions = 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); + // Assert.assertTrue(dialog.runner.firstRunWasCalled); + assertTrue(actions.contains(ok));//ok.wasRun); + assertEquals(ok.returnValue, r_done); + assertFalse(actions.contains(cancel));//cancel.wasRun); + assertEquals(actions/*dialog.runner.responses*/.size(), 2); // do it again - check it doesn't trigger again - ok.wasRun = false; - dialog.doDialog("OK"); - Assert.assertFalse(ok.wasRun); + //ok.wasRun = false; + actions = dialog.doDialog("OK"); + assertFalse(actions.contains(ok)); // 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); +// 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); + actions = dialog.doDialog("HELP"); +// Assert.assertTrue(dialog.runner.firstRunWasCalled); + assertFalse(actions.contains(ok));//ok.wasRun); + assertEquals(ineed.returnValue, ooh); + assertEquals(actions/*dialog.runner.responses*/.size(), 3); + + // TODO: test prepend and chained execution of tasks for a response. +// Assert.assertFalse(dialog.runner.isRegistered(befok)); + dialog.runner.addResponse("OK", befok); //setFirstResponse(befok); + + assertTrue(isRegistered(dialog.runner, befok)); + assertTrue(isRegistered(dialog.runner, ok)); + +// dialog.runner.resetResponses(); + + actions = dialog.doDialog("OK"); + assertTrue(actions.contains(befok));//befok.wasRun); + assertTrue(actions.contains(ok)); //ok.wasRun); + assertEquals(actions/*dialog.runner.responses*/.size(), 3); + } + + private boolean isRegistered(DialogRunnerI runner, RunResponse action) + { + Map> actions = (Map>) PA.getValue(runner, "callbacks"); + Collection registered = actions.get(action.getTrigger()); + return registered != null && registered.contains(action); } }