X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Futil%2Fdialogrunner%2FDialogRunnerTest.java;fp=test%2Fjalview%2Futil%2Fdialogrunner%2FDialogRunnerTest.java;h=e956124b3bc2ef9751bf1a7b9df5a2b8297149a3;hb=592c32d037225062c9a4d6caac19b4b556668d9c;hp=0000000000000000000000000000000000000000;hpb=fd900a8ecc8e80c497a7dab024536a7cbc2a1362;p=jalview.git diff --git a/test/jalview/util/dialogrunner/DialogRunnerTest.java b/test/jalview/util/dialogrunner/DialogRunnerTest.java new file mode 100644 index 0000000..e956124 --- /dev/null +++ b/test/jalview/util/dialogrunner/DialogRunnerTest.java @@ -0,0 +1,101 @@ +package jalview.util.dialogrunner; + +import org.testng.Assert; +import org.testng.annotations.Test; + +public class DialogRunnerTest +{ + public class MockDialog implements DialogRunnerI + { + DialogRunner runner = new DialogRunner<>(this); + + @Override + public MockDialog response(RunResponse action) + { + return runner.response(action); + } + + public void doDialog(String resp) + { + runner.firstRun(resp); + } + } + + MockDialog dialog = new MockDialog(); + + @Test + 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"); + + ok = new RunResponse("OK") + { + + @Override + public void run() + { + returned = new Response("DONE"); + } + }; + 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; + } + }; + + dialog.response(ok).response(cancel).response(help).response(ineed); + + 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); + } +}