001 package nl.cwi.sen1.visbase.rstorecontainer;
002
003 import nl.cwi.sen1.tunit.TUnitTestCase;
004 import nl.cwi.sen1.tunit.ToolComValidator;
005 import aterm.ATerm;
006 import aterm.ATermList;
007 import aterm.pure.PureFactory;
008
009
010 /**
011 * Unit test for testing the RStore Container Interface TB script.
012 *
013 * @author Arend van Beelen
014 * @date 06-03-2007
015 */
016 public class RCITBTest extends TUnitTestCase {
017
018 /**
019 * The function that contains the actual test case.
020 */
021 public void testMessages() {
022 RStoreContainerTool rStoreContainerTool = new RStoreContainerTool(this, "rStoreContainer", true);
023 RCITool rciTool = new RCITool(this, "rciTest", true);
024
025 Thread rStoreToolExecutor = new Thread(rStoreContainerTool);
026 rStoreToolExecutor.setDaemon(true);
027 rStoreToolExecutor.start();
028 Thread rciToolExecutor = new Thread(rciTool);
029 rciToolExecutor.setDaemon(true);
030 rciToolExecutor.start();
031
032 toolbus.waitTillShutdown();
033
034 if(hasFailed()) fail();
035
036 System.out.println("Test Passed");
037 }
038
039 private static class RStoreContainerTool extends ToolComValidator{
040 private final TUnitTestCase testCase;
041
042 public RStoreContainerTool(TUnitTestCase testCase, String name, boolean verbose){
043 super(testCase, name, verbose);
044
045 this.testCase = testCase;
046 }
047
048 public void run(){
049 try{
050 testCase.connectToolComValidator(this);
051
052 PureFactory factory = getFactory();
053
054 int rStoreId = 10;
055 String rStoreFile = "awesome.rstore";
056 ATerm rcLoadRStore = factory.make("rc-load-rstore(<str>)", rStoreFile);
057 ATerm rcRStoreLoaded = factory.make("rc-rstore-loaded(<str>, <int>)", rStoreFile, new Integer(rStoreId));
058
059 registerForEval(rcLoadRStore, rcRStoreLoaded);
060 expectAction();
061
062 ATermList emptyList = factory.makeList();
063 ATerm rcGetRStoreFacts = factory.make("rc-get-rstore-facts(<int>)", new Integer(rStoreId));
064 ATerm rcRStoreFacts = factory.make("rc-rstore-facts(<list>)", emptyList);
065
066 registerForEval(rcGetRStoreFacts, rcRStoreFacts);
067 expectAction();
068
069 int factId = 16;
070 ATerm rcGetFactData = factory.make("rc-get-fact-data(<int>, <int>)", new Integer(rStoreId), new Integer(factId));
071 ATerm rcFactData = factory.make("rc-fact-data(<term>)", emptyList);
072
073 registerForEval(rcGetFactData, rcFactData);
074 expectAction();
075 }catch(Exception ex){
076 ex.printStackTrace();
077 }finally{
078 disconnect();
079 }
080 }
081 }
082
083 private static class RCITool extends ToolComValidator{
084 private final TUnitTestCase testCase;
085
086 public RCITool(TUnitTestCase testCase, String name, boolean verbose){
087 super(testCase, name, verbose);
088
089 this.testCase = testCase;
090 }
091
092 public void run(){
093 try{
094 testCase.connectToolComValidator(this);
095
096 PureFactory factory = getFactory();
097
098 String rStoreFile = "awesome.rstore";
099 ATerm rcLoadRStore = factory.make("rc-load-rstore(<str>)", rStoreFile);
100
101 sendEvent(rcLoadRStore);
102
103 int rStoreId = 10;
104 ATerm rcRStoreLoaded = factory.make("rc-rstore-loaded(<str>, <int>)", rStoreFile, new Integer(rStoreId));
105
106 registerForDo(rcRStoreLoaded);
107 expectAction();
108
109 ATerm rcGetRStoreFacts = factory.make("rc-get-rstore-facts(<int>)", new Integer(rStoreId));
110
111 sendEvent(rcGetRStoreFacts);
112
113 ATermList emptyList = factory.makeList();
114 ATerm rcGetRStoreFactsReply = factory.make("rc-get-rstore-facts(<int>, <list>)", new Integer(rStoreId), emptyList);
115
116 registerForDo(rcGetRStoreFactsReply);
117 expectAction();
118
119 int factId = 16;
120 ATerm rcGetFactData = factory.make("rc-get-fact-data(<int>, <int>)", new Integer(rStoreId), new Integer(factId));
121
122 sendEvent(rcGetFactData);
123
124 ATerm rcGetFactDataReply = factory.make("rc-get-fact-data(<int>, <int>, <term>)", new Integer(rStoreId), new Integer(factId), emptyList);
125
126 registerForDo(rcGetFactDataReply);
127 expectAction();
128
129 waitForCompletion();
130 }catch(Exception ex){
131 ex.printStackTrace();
132 }finally{
133 disconnect();
134 }
135 }
136 }
137
138 /**
139 * Initialize the RCI process.
140 */
141 protected void setUp(){
142 try{
143 startToolbus("./tbscript/", "./tbscript/init.tb");
144 }catch(Exception ex){
145 ex.printStackTrace();
146 stopToolbus();
147 fail(ex.toString());
148 }
149 }
150
151 /**
152 * Clean up the allocated resources at the end of the test.
153 */
154 protected void tearDown(){
155 stopToolbus();
156 }
157 }