start of new file
[IRC.git] / Robust / src / Tests / OwnershipAnalysisTest / testTokens / Main.java
1 import IR.*;
2 import IR.Flat.*;
3 import Analysis.OwnershipAnalysis.*;
4 import java.util.*;
5 import java.io.*;
6
7
8 public class Main {
9
10     protected static void test( String test,
11                                 boolean expected,
12                                 boolean result ) {
13
14         String outcome = "...\tFAILED";
15         if( expected == result ) {
16             outcome = "...\tpassed";
17         }
18         
19         System.out.println( test+" expected "+expected+outcome );
20     }
21
22     public static void main(String args[]) throws Exception {
23
24         /*
25         // example test to know the testing routine is correct!
26         test( "4 == 5?", false, 4 == 5 );
27         test( "3 == 3?", true,  3 == 3 );
28
29
30         TokenTuple tt0 = new TokenTuple( new Integer( 1 ),
31                                          true,
32                                          TokenTuple.ARITY_ONE );
33
34         TokenTuple tt1 = new TokenTuple( new Integer( 1 ),
35                                          true,
36                                          TokenTuple.ARITY_ONE );
37
38         TokenTuple tt2 = new TokenTuple( new Integer( 2 ),
39                                          true,
40                                          TokenTuple.ARITY_ONE );
41
42         TokenTuple tt3 = new TokenTuple( new Integer( 1 ),
43                                          true,
44                                          TokenTuple.ARITY_MANY );
45
46         test( "tt0 equals tt1?", true,  tt0.equals( tt1 ) );
47         test( "tt1 equals tt0?", true,  tt1.equals( tt0 ) );
48
49         test( "tt0 equals tt2?", false, tt0.equals( tt2 ) );
50         test( "tt2 equals tt0?", false, tt2.equals( tt0 ) );
51
52         test( "tt0 equals tt3?", false, tt0.equals( tt3 ) );
53         test( "tt3 equals tt0?", false, tt3.equals( tt0 ) );
54
55         test( "tt2 equals tt3?", false, tt2.equals( tt3 ) );
56         test( "tt3 equals tt2?", false, tt3.equals( tt2 ) );
57
58         tt1 = tt1.increaseArity();
59
60         test( "tt1 equals tt2?", false, tt1.equals( tt2 ) );
61         test( "tt2 equals tt1?", false, tt2.equals( tt1 ) );
62
63         test( "tt1 equals tt3?", true,  tt1.equals( tt3 ) );
64         test( "tt3 equals tt1?", true,  tt3.equals( tt1 ) );
65         
66         
67         TokenTupleSet tts0 = new TokenTupleSet( tt0 );
68         TokenTupleSet tts1 = new TokenTupleSet( tt1 );
69         TokenTupleSet tts2 = new TokenTupleSet( tt2 );
70         TokenTupleSet tts3 = new TokenTupleSet( tt3 );
71         TokenTupleSet tts4 = tts1.union( tts3 );
72         TokenTupleSet tts5 = tts0.union( tts2 );
73         TokenTupleSet tts6 = tts1.union( tts1 );
74
75         System.out.println( "tts4 is "+tts4 );
76         System.out.println( "tts5 is "+tts5 );
77         System.out.println( "tts6 is "+tts6 );
78
79         ReachabilitySet rs0 = new ReachabilitySet( tts0 );
80         rs0 = rs0.union( new ReachabilitySet( tts2 ) );
81         rs0 = rs0.union( new ReachabilitySet( tts5 ) );
82
83         System.out.println( "rs0 is "+rs0 );
84
85         TokenTuple tt4 = new TokenTuple( new Integer( 4 ),
86                                          true,
87                                          TokenTuple.ARITY_ONE );
88
89                 TokenTuple tt5 = new TokenTuple( new Integer( 4 ),
90                                          true,
91                                          TokenTuple.ARITY_ONE );
92         
93         TokenTuple tt6 = new TokenTuple( new Integer( 6 ),
94                                          false,
95                                          TokenTuple.ARITY_ONE );
96
97         TokenTupleSet tts7 = new TokenTupleSet( tt4 );
98         //TokenTupleSet tts8 = new TokenTupleSet( tt5 );
99         TokenTupleSet tts9 = new TokenTupleSet( tt1 );
100         tts9 = tts9.union( tts2 );
101
102         ReachabilitySet rs1 = new ReachabilitySet( tts7 );
103         //rs1 = rs1.union( new ReachabilitySet( tts8 ) );
104         rs1 = rs1.union( new ReachabilitySet( tts9 ) );
105
106         System.out.println( "rs1 is "+rs1 );
107
108
109         ChangeTupleSet cts0 = rs0.unionUpArityToChangeSet( rs1 );
110         System.out.println( "cts0 is "+cts0 );
111         
112
113
114         TokenTuple tt00 = new TokenTuple( new Integer( 9 ),
115                                           true,
116                                           TokenTuple.ARITY_ONE );
117
118         TokenTuple tt01 = new TokenTuple( new Integer( 9 ),
119                                           true,
120                                           TokenTuple.ARITY_ONE );
121
122         test( "tt00 equals tt01?", true,  tt00.equals( tt01 ) );        
123         test( "tt00 ==     tt01?", false, tt00 ==      tt01   );        
124
125         tt00 = (TokenTuple) Canonical.makeCanonical( tt00 );
126         tt01 = (TokenTuple) Canonical.makeCanonical( tt01 );
127
128         test( "tt00 equals tt01?", true,  tt00.equals( tt01 ) );        
129         test( "tt00 ==     tt01?", true,  tt00 ==      tt01   );        
130
131
132         TokenTuple tt02 = 
133             (TokenTuple) Canonical.makeCanonical( 
134                                                  new TokenTuple( new Integer( 10 ),
135                                                                  true,
136                                                                  TokenTuple.ARITY_ONE )
137                                                   );
138
139         TokenTuple tt03 = 
140             (TokenTuple) Canonical.makeCanonical( 
141                                                  new TokenTuple( new Integer( 11 ),
142                                                                  true,
143                                                                  TokenTuple.ARITY_ONE )
144                                                   );
145
146         TokenTuple tt04 = 
147             (TokenTuple) Canonical.makeCanonical( 
148                                                  new TokenTuple( new Integer( 12 ),
149                                                                  true,
150                                                                  TokenTuple.ARITY_ONE )
151                                                   );
152
153         TokenTupleSet ttsT00 =
154             (TokenTupleSet) Canonical.makeCanonical( new TokenTupleSet( tt00 ) );
155
156         TokenTupleSet ttsT01 =
157             (TokenTupleSet) Canonical.makeCanonical( new TokenTupleSet( tt01 ) );
158
159         TokenTupleSet ttsT02 =
160             (TokenTupleSet) Canonical.makeCanonical( new TokenTupleSet( tt02 ) );
161
162         TokenTupleSet ttsT03 =
163             (TokenTupleSet) Canonical.makeCanonical( new TokenTupleSet( tt03 ) );
164
165         TokenTupleSet ttsT04 =
166             (TokenTupleSet) Canonical.makeCanonical( new TokenTupleSet( tt04 ) );
167
168         TokenTupleSet tts00 = ttsT00.union( ttsT02.union( ttsT03.union( ttsT04 ) ) );
169         TokenTupleSet tts01 = ttsT01.union( ttsT02.union( ttsT03.union( ttsT04 ) ) );
170
171         test( "tts00 equals tts01?", true,  tts00.equals( tts01 ) );
172
173         // It's OK that this one turns out true--I changed the union operator
174         // to automatically canonicalize stuff!
175         test( "tts00 ==     tts01?", false, tts00 ==      tts01   );    
176
177         tts00 = (TokenTupleSet) Canonical.makeCanonical( tts00 );
178         tts01 = (TokenTupleSet) Canonical.makeCanonical( tts01 );
179
180         test( "tts00 equals tts01?", true,  tts00.equals( tts01 ) );    
181         test( "tts00 ==     tts01?", true,  tts00 ==      tts01   );
182
183
184         
185         ReachabilitySet rs2 = new ReachabilitySet( tts00 );
186         ReachabilitySet rs3 = new ReachabilitySet( tts01 ).union( rs2 );
187
188         System.out.println( "rs3 is "+rs3 );
189
190         rs3 = rs3.increaseArity( new Integer( 11 ) );
191         System.out.println( "rs3 is "+rs3 );
192         */
193
194
195         TokenTuple tt11 = new TokenTuple( new Integer( 1 ),
196                                          false,
197                                          TokenTuple.ARITY_ONE );
198
199         TokenTuple tt12 = new TokenTuple( new Integer( 2 ),
200                                          true,
201                                          TokenTuple.ARITY_ONE );
202
203         TokenTuple tt13 = new TokenTuple( new Integer( 3 ),
204                                          true,
205                                          TokenTuple.ARITY_MANY );
206
207         TokenTuple tt14 = new TokenTuple( new Integer( 4 ),
208                                          true,
209                                          TokenTuple.ARITY_ONE );
210
211         TokenTuple tt15 = new TokenTuple( new Integer( 5 ),
212                                          true,
213                                          TokenTuple.ARITY_ONE );
214
215         TokenTuple tt16 = new TokenTuple( new Integer( 6 ),
216                                          true,
217                                          TokenTuple.ARITY_MANY );
218
219         /*
220         TokenTupleSet tts10 = new TokenTupleSet();
221         tts10 = tts10.add( tt11 );
222         tts10 = tts10.add( tt12 );
223         tts10 = tts10.add( tt13 );
224         tts10 = tts10.add( tt14 );
225         tts10 = tts10.add( tt15 );
226         tts10 = tts10.add( tt16 );
227         */
228
229         TokenTuple tt21 = new TokenTuple( new Integer( 1 ),
230                                          false,
231                                          TokenTuple.ARITY_ONE );
232
233         TokenTuple tt22 = new TokenTuple( new Integer( 5 ),
234                                          true,
235                                          TokenTuple.ARITY_ONE );
236
237         TokenTuple tt23 = new TokenTuple( new Integer( 3 ),
238                                          true,
239                                          TokenTuple.ARITY_ONE );
240
241         TokenTuple tt24 = new TokenTuple( new Integer( 6 ),
242                                          true,
243                                          TokenTuple.ARITY_MANY );
244
245         TokenTuple tt25 = new TokenTuple( new Integer( 7 ),
246                                          true,
247                                          TokenTuple.ARITY_ONE );
248
249         TokenTuple tt26 = new TokenTuple( new Integer( 8 ),
250                                          true,
251                                          TokenTuple.ARITY_MANY );
252
253         /*
254         TokenTupleSet tts20 = new TokenTupleSet();
255         tts20 = tts20.add( tt21 );
256         tts20 = tts20.add( tt22 );
257         tts20 = tts20.add( tt23 );
258         tts20 = tts20.add( tt24 );
259         tts20 = tts20.add( tt25 );
260         tts20 = tts20.add( tt26 );              
261
262         TokenTupleSet tts30 = tts10.unionUpArity( tts20 );
263
264         System.out.println( "tts10 is "+tts10 );
265         System.out.println( "tts20 is "+tts20 );
266         System.out.println( "" );
267         System.out.println( "tts30 is "+tts30 );
268         */
269
270         TokenTupleSet tts40 = new TokenTupleSet();
271         tts40 = tts40.add( tt21 );
272         tts40 = tts40.add( tt23 );
273
274         TokenTupleSet tts50 = new TokenTupleSet();
275         tts50 = tts50.add( tt21 );
276         tts50 = tts50.add( tt23 );
277         tts50 = tts50.add( tt22 );
278
279         TokenTupleSet tts60 = new TokenTupleSet();
280         tts60 = tts60.add( tt21 );
281         tts60 = tts60.add( tt24 );
282
283         TokenTupleSet tts70 = new TokenTupleSet();
284         tts70 = tts70.add( tt11 );
285         tts70 = tts70.add( tt13 );
286         tts70 = tts70.add( tt12 );
287
288         TokenTupleSet tts71 = new TokenTupleSet();
289         tts71 = tts71.add( tt13 );
290         tts71 = tts71.add( tt11 );
291         tts71 = tts71.add( tt15 );
292
293         TokenTupleSet tts72 = new TokenTupleSet();
294         tts72 = tts72.add( tt11 );
295         tts72 = tts72.add( tt16 );
296
297         TokenTupleSet tts73 = new TokenTupleSet();
298         tts73 = tts73.add( tt12 );
299
300         ReachabilitySet rs40 = new ReachabilitySet();
301         rs40 = rs40.add( tts40 );
302         rs40 = rs40.add( tts50 );
303         rs40 = rs40.add( tts60 );
304
305         ReachabilitySet rs50 = new ReachabilitySet();
306         rs50 = rs50.add( tts70 );
307         rs50 = rs50.add( tts71 );
308         rs50 = rs50.add( tts72 );
309         rs50 = rs50.add( tts73 );
310
311         ReachabilitySet rs60 = rs50.unionUpArity( rs40 );
312
313         System.out.println( "rs40 is "+rs40 );
314         System.out.println( "rs50 is "+rs50 );
315         System.out.println( "" );
316         System.out.println( "rs60 is "+rs60 );
317     }
318 }