1 package jalview.util.dialogrunner;
3 import static org.testng.Assert.assertEquals;
4 import static org.testng.Assert.assertFalse;
5 import static org.testng.Assert.assertTrue;
7 import java.util.Collection;
11 import org.testng.annotations.Test;
13 import junit.extensions.PA;
15 public class DialogRunnerTest
17 public class MockDialog implements DialogRunnerI
19 DialogRunnerI runner = new DialogRunner();
22 public DialogRunnerI addResponse(Object response, RunResponse action)
24 return runner.addResponse(response, action);
27 public List<RunResponse> doDialog(String resp)
29 return runner.handleResponse(resp);
33 public List<RunResponse> handleResponse(Object response)
39 MockDialog dialog = new MockDialog();
42 public void testDialogRunner()
44 RunResponse ok, cancel, help, ineed;
45 final String ooh = "OOOOoooOOOOH!";
46 final String r_ok = "OK";
47 final String r_cancel = "CANCEL";
48 final String r_done = "DONE";
49 final String r_help = "HELP";
50 final String r_ddoit = "DIDNT DOIT";
51 final String r_needsb = "I NEED SOMEBODY";
53 ok = new RunResponse("OK")
61 final RunResponse befok = new RunResponse("OK")
70 cancel = new RunResponse("CANCEL")
75 returnValue = r_ddoit;
78 help = new RunResponse("HELP")
83 returnValue = r_needsb;
86 ineed = new RunResponse(r_needsb)
95 assertFalse(isRegistered(dialog.runner, ok));
97 dialog.addResponse("OK", ok).addResponse("CANCEL", cancel).
98 addResponse("HELP", help).addResponse(r_needsb, ineed);
100 assertTrue(isRegistered(dialog.runner, ok));
102 // Assert.assertFalse(dialog.runner.firstRunWasCalled);
103 List<RunResponse> actions = dialog.doDialog("OK");
104 // OK called, nothing else.
105 // Assert.assertTrue(dialog.runner.firstRunWasCalled);
106 assertTrue(actions.contains(ok));//ok.wasRun);
107 assertEquals(ok.returnValue, r_done);
108 assertFalse(actions.contains(cancel));//cancel.wasRun);
109 assertEquals(actions/*dialog.runner.responses*/.size(), 2);
111 // do it again - check it doesn't trigger again
113 actions = dialog.doDialog("OK");
114 assertFalse(actions.contains(ok));
116 // reset - everything false/null
117 // dialog.runner.resetResponses();
118 // Assert.assertFalse(dialog.runner.firstRunWasCalled);
119 // Assert.assertFalse(ok.wasRun);
120 // Assert.assertNull(ok.returned);
121 // Assert.assertEquals(dialog.runner.responses.size(), 0);
124 actions = dialog.doDialog("HELP");
125 // Assert.assertTrue(dialog.runner.firstRunWasCalled);
126 assertFalse(actions.contains(ok));//ok.wasRun);
127 assertEquals(ineed.returnValue, ooh);
128 assertEquals(actions/*dialog.runner.responses*/.size(), 3);
130 // TODO: test prepend and chained execution of tasks for a response.
131 // Assert.assertFalse(dialog.runner.isRegistered(befok));
132 dialog.runner.addResponse("OK", befok); //setFirstResponse(befok);
134 assertTrue(isRegistered(dialog.runner, befok));
135 assertTrue(isRegistered(dialog.runner, ok));
137 // dialog.runner.resetResponses();
139 actions = dialog.doDialog("OK");
140 assertTrue(actions.contains(befok));//befok.wasRun);
141 assertTrue(actions.contains(ok)); //ok.wasRun);
142 assertEquals(actions/*dialog.runner.responses*/.size(), 3);
145 private boolean isRegistered(DialogRunnerI runner, RunResponse action)
147 Map<Object, Collection<Object>> actions = (Map<Object, Collection<Object>>) PA.getValue(runner, "callbacks");
148 Collection<Object> registered = actions.get(action.getTrigger());
149 return registered != null && registered.contains(action);