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<MockDialog> 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<RunResponse> doDialog(String resp)
{
- runner.firstRun(resp);
+ return runner.handleResponse(resp);
}
+
+ @Override
+ public List<RunResponse> handleResponse(Object response)
+ {
+ return null;
+ }
}
MockDialog dialog = new MockDialog();
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()
{
- returned = new Response("OK");
+ returnValue = "OK";
}
};
@Override
public void run()
{
- returned = r_ddoit;
+ returnValue = r_ddoit;
}
};
help = new RunResponse("HELP")
@Override
public void run()
{
- returned = r_needsb;
-
+ returnValue = r_needsb;
}
};
ineed = new RunResponse(r_needsb)
@Override
public void run()
{
- returned = ooh;
+ returnValue = ooh;
}
};
- Assert.assertFalse(dialog.runner.isRegistered(ok));
+ assertFalse(isRegistered(dialog.runner, ok));
- dialog.response(ok).response(cancel).response(help).response(ineed);
+ dialog.addResponse("OK", ok).addResponse("CANCEL", cancel).
+ addResponse("HELP", help).addResponse(r_needsb, ineed);
- Assert.assertTrue(dialog.runner.isRegistered(ok));
+ assertTrue(isRegistered(dialog.runner, ok));
- Assert.assertFalse(dialog.runner.firstRunWasCalled);
- dialog.doDialog("OK");
+// Assert.assertFalse(dialog.runner.firstRunWasCalled);
+ List<RunResponse> 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.firstResponse(befok);
+// Assert.assertFalse(dialog.runner.isRegistered(befok));
+ dialog.runner.addResponse("OK", befok); //setFirstResponse(befok);
- Assert.assertTrue(dialog.runner.isRegistered(befok));
- Assert.assertTrue(dialog.runner.isRegistered(ok));
+ assertTrue(isRegistered(dialog.runner, befok));
+ assertTrue(isRegistered(dialog.runner, ok));
- dialog.runner.resetResponses();
+// dialog.runner.resetResponses();
- dialog.doDialog("OK");
- Assert.assertTrue(befok.wasRun);
- Assert.assertTrue(ok.wasRun);
- Assert.assertEquals(dialog.runner.responses.size(), 3);
+ 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<Object, Collection<Object>> actions = (Map<Object, Collection<Object>>) PA.getValue(runner, "callbacks");
+ Collection<Object> registered = actions.get(action.getTrigger());
+ return registered != null && registered.contains(action);
}
}