7d7e5e86ffffd27a1a4233207706bf667ef45c59
[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     DialogRunnerI runner = new DialogRunner();
11
12     @Override
13     public DialogRunnerI addResponse(RunResponse action)
14     {
15       return runner.addResponse(action);
16     }
17
18     public void doDialog(String resp)
19     {
20       runner.handleResponse(resp);
21     }
22
23         @Override
24         public void handleResponse(Object response) {
25                 // TODO Auto-generated method stub
26                 
27         }
28   }
29
30   MockDialog dialog = new MockDialog();
31
32   @Test
33   public void testDialogRunner()
34   {
35     RunResponse ok, cancel, help, ineed;
36         final String ooh = "OOOOoooOOOOH!";
37         final String r_ok = "OK";
38         final String r_cancel = "CANCEL";
39         final String r_done = "DONE";
40         final String r_help = "HELP";
41         final String r_ddoit = "DIDNT DOIT";
42         final String r_needsb = "I NEED SOMEBODY";
43
44     ok = new RunResponse("OK")
45     {
46
47       @Override
48       public void run()
49       {
50         returned = "DONE";
51       }
52     };
53     final RunResponse befok = new RunResponse("OK")
54     {
55
56       @Override
57       public void run()
58       {
59         returned = "OK";
60       }
61     };
62
63     cancel = new RunResponse("CANCEL")
64     {
65       @Override
66       public void run()
67       {
68         returned = r_ddoit;
69       }
70     };
71     help = new RunResponse("HELP")
72     {
73       @Override
74       public void run()
75       {
76         returned = r_needsb;
77
78       }
79     };
80     ineed = new RunResponse(r_needsb)
81     {
82       @Override
83       public void run()
84       {
85         returned = ooh;
86       }
87     };
88
89     Assert.assertFalse(dialog.runner.isRegistered(ok));
90
91     dialog.addResponse(ok).addResponse(cancel).addResponse(help).addResponse(ineed);
92
93     Assert.assertTrue(dialog.runner.isRegistered(ok));
94
95     Assert.assertFalse(dialog.runner.firstRunWasCalled);
96     dialog.doDialog("OK");
97     // OK called, nothing else.
98     Assert.assertTrue(dialog.runner.firstRunWasCalled);
99     Assert.assertTrue(ok.wasRun);
100     Assert.assertEquals(ok.returned, r_done);
101     Assert.assertFalse(cancel.wasRun);
102     Assert.assertEquals(dialog.runner.responses.size(), 2);
103
104     // do it again - check it doesn't trigger again
105     ok.wasRun = false;
106     dialog.doDialog("OK");
107     Assert.assertFalse(ok.wasRun);
108
109     // reset - everything false/null
110     dialog.runner.resetResponses();
111     Assert.assertFalse(dialog.runner.firstRunWasCalled);
112     Assert.assertFalse(ok.wasRun);
113     Assert.assertNull(ok.returned);
114     Assert.assertEquals(dialog.runner.responses.size(), 0);
115
116     // cancel called ..
117     dialog.doDialog("HELP");
118     Assert.assertTrue(dialog.runner.firstRunWasCalled);
119     Assert.assertFalse(ok.wasRun);
120     Assert.assertEquals(ineed.returned, ooh);
121     Assert.assertEquals(dialog.runner.responses.size(), 3);
122
123     // TODO: test prepend and chained execution of tasks for a response.
124     Assert.assertFalse(dialog.runner.isRegistered(befok));
125     dialog.runner.setFirstResponse(befok);
126
127     Assert.assertTrue(dialog.runner.isRegistered(befok));
128     Assert.assertTrue(dialog.runner.isRegistered(ok));
129
130     dialog.runner.resetResponses();
131
132     dialog.doDialog("OK");
133     Assert.assertTrue(befok.wasRun);
134     Assert.assertTrue(ok.wasRun);
135     Assert.assertEquals(dialog.runner.responses.size(), 3);
136   }
137 }