001    package nl.cwi.sen1.visbase.factbrowser;
002    
003    import nl.cwi.sen1.tunit.TUnitTestCase;
004    import nl.cwi.sen1.tunit.ToolComValidator;
005    import aterm.ATerm;
006    import aterm.pure.PureFactory;
007    
008    /**
009     * This test case tests the Fact Browser Interface Toolbus script.
010     * 
011     * @author Raymond Bergen
012     * @author Srinivasan Tharmarajah
013     */
014    public class FBITBTest extends TUnitTestCase{
015    
016        /**
017         * The function that contains executes all the test cases.
018         */
019        public void testFBI(){
020            MSDialogTool msDialogTool = new MSDialogTool(this, "msdialogstub", true);
021            FactBrowserTool factBrowserTool = new FactBrowserTool(this, "factbrowser", true);
022            FBMPTool fbmpTool = new FBMPTool(this, "fbmpstub", true);
023            
024            Thread msDialogToolExecutor = new Thread(msDialogTool);
025            msDialogToolExecutor.setDaemon(true);
026            msDialogToolExecutor.start();
027            Thread factBrowserToolExecutor = new Thread(factBrowserTool);
028            factBrowserToolExecutor.setDaemon(true);
029            factBrowserToolExecutor.start();
030            Thread fbmpToolExecutor = new Thread(fbmpTool);
031            fbmpToolExecutor.setDaemon(true);
032            fbmpToolExecutor.start();
033            
034            toolbus.waitTillShutdown();
035            
036            if(hasFailed()) fail();
037            
038            System.out.println("Test Passed");
039        }
040        
041        protected void setUp() {
042            try{
043                startToolbus("./tbscript/", "./tbscript/init.tb");
044            }catch (Exception ex){
045                    ex.printStackTrace();
046                stopToolbus();
047                fail(ex.toString());
048            }
049        }
050        
051        protected void tearDown() {
052            stopToolbus();
053        }
054        
055        public static class MSDialogTool extends ToolComValidator{
056            private static PureFactory factory = getFactory();
057            private final TUnitTestCase testCase;
058            
059            public MSDialogTool(TUnitTestCase testCase, String name, boolean verbose){
060                    super(testCase, name, verbose);
061                    
062                    this.testCase = testCase;
063            }
064            
065            public void run(){
066                    try{
067                            testCase.connectToolComValidator(this);
068                            
069                            loadRstore();
070                    }catch(Exception ex){
071                            ex.printStackTrace();
072                    }finally{
073                            disconnect();
074                    }
075            }
076            
077            private void loadRstore(){
078                    ATerm askForFileRecieved = factory.make("ask-for-file-recieved");
079                    registerForDo(askForFileRecieved);
080                    expectAction();
081            }
082        }
083        
084        public static class FactBrowserTool extends ToolComValidator{
085            private static PureFactory factory = getFactory();
086            private final TUnitTestCase testCase;
087            
088            public FactBrowserTool(TUnitTestCase testCase, String name, boolean verbose){
089                    super(testCase, name, verbose);
090                    
091                    this.testCase = testCase;
092            }
093            
094            public void run(){
095                    try{
096                            testCase.connectToolComValidator(this);
097                            
098                            loadRStore();
099                            selectFacts();
100                            selectVisualization();
101                            unloadRStore();
102                    }catch(Exception ex){
103                            ex.printStackTrace();
104                    }finally{
105                            disconnect();
106                    }
107            }
108            
109            private void loadRStore(){
110                    ATerm fbLoadRstore = factory.make("fb-load-rstore()");
111                    sendEvent(fbLoadRstore);
112                            
113                    ATerm fbShowRstoreFacts = factory.make("fb-show-rstore-facts(<str>, <int>, <list>)", "rstoreTestName", 1, factory.makeList());
114                    registerForDo(fbShowRstoreFacts);
115                    expectAction();
116            }
117            
118            private void selectFacts(){
119                    ATerm fbTypeSelected = factory.make("fb-type-selected(<term>)", factory.make("rType"));
120                    sendEvent(fbTypeSelected);
121                    
122                    ATerm fbAddVisualizationPlugin = factory.make("fb-add-visualization-plugin(<term>, <int>, <str>)", factory.make("rType"), 1, "pluginTestName");
123                    registerForDo(fbAddVisualizationPlugin);
124                    expectAction();
125            }
126            
127            private void selectVisualization(){
128                    ATerm fbVisualizationSelected = factory.make("fb-visualization-selected(<int>,<int>,<int>)", 1, 1, 1);
129                    sendEvent(fbVisualizationSelected);
130            }
131            
132            private void unloadRStore(){
133                    int rstoreId = 5;
134                    ATerm fbRStoreUnloaded = factory.make("fb-rstore-unloaded(<int>)", rstoreId);
135                    registerForDo(fbRStoreUnloaded);
136                    expectAction();
137            }
138        }
139        
140        public static class FBMPTool extends ToolComValidator{
141            private static PureFactory factory = getFactory();
142            private final TUnitTestCase testCase;
143            
144            public FBMPTool(TUnitTestCase testCase, String name, boolean verbose){
145                    super(testCase, name, verbose);
146                    
147                    this.testCase = testCase;
148            }
149            
150            public void run(){
151                    try{
152                            testCase.connectToolComValidator(this);
153                            
154                            loadRStore();
155                            selectFacts();
156                            selectVisualization();
157                            unloadRStore();
158                    }catch(Exception ex){
159                            ex.printStackTrace();
160                    }finally{
161                            disconnect();
162                    }
163            }
164            
165            private void loadRStore(){
166                    ATerm fbRstoreLoaded = factory.make("fb-rstore-loaded");
167                    registerForDo(fbRstoreLoaded);
168                    expectAction();
169            }
170            
171            private void selectFacts(){
172                    ATerm fbTypeSelectedRecieved = factory.make("fb-type-selected-recieved");
173                    registerForDo(fbTypeSelectedRecieved);
174                    expectAction();
175            }
176            
177            private void selectVisualization(){
178                    ATerm fbVisualizationSelectedRecieved = factory.make("fb-visualization-selected-recieved");
179                    registerForDo(fbVisualizationSelectedRecieved);
180                    expectAction();
181            }
182            
183            private void unloadRStore(){
184                    int rstoreId = 5;
185                    ATerm fbUnloadRstore = factory.make("fb-unload-rstore(<int>)", rstoreId);
186                    sendEvent(fbUnloadRstore);        
187                    registerForDo(fbUnloadRstore);
188                    expectAction();
189            }
190        }
191    }