e956124b3bc2ef9751bf1a7b9df5a2b8297149a3
[jalview.git] / test / jalview / util / dialogrunner / DialogRunnerTest.java
1 package jalview.util.dialogrunner;
2
3 import org.testng.Assert;
4 import org.testng.annotations.Test;
5
6 public class DialogRunnerTest
7 {
8   public class MockDialog implements DialogRunnerI
9   {
10     DialogRunner<MockDialog> runner = new DialogRunner<>(this);
11
12     @Override
13     public MockDialog response(RunResponse action)
14     {
15       return runner.response(action);
16     }
17
18     public void doDialog(String resp)
19     {
20       runner.firstRun(resp);
21     }
22   }
23
24   MockDialog dialog = new MockDialog();
25
26   @Test
27   public void testDialogRunner()
28   {
29     RunResponse ok, cancel, help, ineed;
30     final Response ooh = new Response("OOOOoooOOOOH!"),
31             r_ok = new Response("OK"), r_cancel = new Response("CANCEL"),
32             r_done = new Response("DONE"), r_help = new Response("HELP"),
33             r_ddoit = new Response("DIDNT DOIT"),
34             r_needsb = new Response("I NEED SOMEBODY");
35
36     ok = new RunResponse("OK")
37     {
38
39       @Override
40       public void run()
41       {
42         returned = new Response("DONE");
43       }
44     };
45     cancel = new RunResponse("CANCEL")
46     {
47       @Override
48       public void run()
49       {
50         returned = r_ddoit;
51       }
52     };
53     help = new RunResponse("HELP")
54     {
55       @Override
56       public void run()
57       {
58         returned = r_needsb;
59
60       }
61     };
62     ineed = new RunResponse(r_needsb)
63     {
64       @Override
65       public void run()
66       {
67         returned = ooh;
68       }
69     };
70
71     dialog.response(ok).response(cancel).response(help).response(ineed);
72
73     Assert.assertFalse(dialog.runner.firstRunWasCalled);
74     dialog.doDialog("OK");
75     // OK called, nothing else.
76     Assert.assertTrue(dialog.runner.firstRunWasCalled);
77     Assert.assertTrue(ok.wasRun);
78     Assert.assertEquals(ok.returned, r_done);
79     Assert.assertFalse(cancel.wasRun);
80     Assert.assertEquals(dialog.runner.responses.size(), 2);
81
82     // do it again - check it doesn't trigger again
83     ok.wasRun = false;
84     dialog.doDialog("OK");
85     Assert.assertFalse(ok.wasRun);
86
87     // reset - everything false/null
88     dialog.runner.resetResponses();
89     Assert.assertFalse(dialog.runner.firstRunWasCalled);
90     Assert.assertFalse(ok.wasRun);
91     Assert.assertNull(ok.returned);
92     Assert.assertEquals(dialog.runner.responses.size(), 0);
93
94     // cancel called ..
95     dialog.doDialog("HELP");
96     Assert.assertTrue(dialog.runner.firstRunWasCalled);
97     Assert.assertFalse(ok.wasRun);
98     Assert.assertEquals(ineed.returned, ooh);
99     Assert.assertEquals(dialog.runner.responses.size(), 3);
100   }
101 }