special union of reachability sets works correctly now
[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         // example test to know the testing routine is correct!
25         test( "4 == 5?", false, 4 == 5 );
26         test( "3 == 3?", true,  3 == 3 );
27
28
29         TokenTuple tt0 = new TokenTuple( new Integer( 1 ),
30                                          true,
31                                          TokenTuple.ARITY_ONE );
32
33         TokenTuple tt1 = new TokenTuple( new Integer( 1 ),
34                                          true,
35                                          TokenTuple.ARITY_ONE );
36
37         TokenTuple tt2 = new TokenTuple( new Integer( 2 ),
38                                          true,
39                                          TokenTuple.ARITY_ONE );
40
41         TokenTuple tt3 = new TokenTuple( new Integer( 1 ),
42                                          true,
43                                          TokenTuple.ARITY_MANY );
44
45         test( "tt0 equals tt1?", true,  tt0.equals( tt1 ) );
46         test( "tt1 equals tt0?", true,  tt1.equals( tt0 ) );
47
48         test( "tt0 equals tt2?", false, tt0.equals( tt2 ) );
49         test( "tt2 equals tt0?", false, tt2.equals( tt0 ) );
50
51         test( "tt0 equals tt3?", false, tt0.equals( tt3 ) );
52         test( "tt3 equals tt0?", false, tt3.equals( tt0 ) );
53
54         test( "tt2 equals tt3?", false, tt2.equals( tt3 ) );
55         test( "tt3 equals tt2?", false, tt3.equals( tt2 ) );
56
57         tt1 = tt1.increaseArity();
58
59         test( "tt1 equals tt2?", false, tt1.equals( tt2 ) );
60         test( "tt2 equals tt1?", false, tt2.equals( tt1 ) );
61
62         test( "tt1 equals tt3?", true,  tt1.equals( tt3 ) );
63         test( "tt3 equals tt1?", true,  tt3.equals( tt1 ) );
64         
65         
66         TokenTupleSet tts0 = new TokenTupleSet( tt0 );
67         TokenTupleSet tts1 = new TokenTupleSet( tt1 );
68         TokenTupleSet tts2 = new TokenTupleSet( tt2 );
69         TokenTupleSet tts3 = new TokenTupleSet( tt3 );
70         TokenTupleSet tts4 = tts1.union( tts3 );
71         TokenTupleSet tts5 = tts0.union( tts2 );
72         TokenTupleSet tts6 = tts1.union( tts1 );
73
74         System.out.println( "tts4 is "+tts4 );
75         System.out.println( "tts5 is "+tts5 );
76         System.out.println( "tts6 is "+tts6 );
77
78         ReachabilitySet rs0 = new ReachabilitySet( tts0 );
79         rs0 = rs0.union( new ReachabilitySet( tts2 ) );
80         rs0 = rs0.union( new ReachabilitySet( tts5 ) );
81
82         System.out.println( "rs0 is "+rs0 );
83
84         TokenTuple tt4 = new TokenTuple( new Integer( 4 ),
85                                          true,
86                                          TokenTuple.ARITY_ONE );
87
88         /*      TokenTuple tt5 = new TokenTuple( new Integer( 4 ),
89                                          true,
90                                          TokenTuple.ARITY_ONE );
91         */
92         TokenTuple tt6 = new TokenTuple( new Integer( 6 ),
93                                          false,
94                                          TokenTuple.ARITY_ONE );
95
96         TokenTupleSet tts7 = new TokenTupleSet( tt4 );
97         //TokenTupleSet tts8 = new TokenTupleSet( tt5 );
98         TokenTupleSet tts9 = new TokenTupleSet( tt1 );
99         tts9 = tts9.union( tts2 );
100
101         ReachabilitySet rs1 = new ReachabilitySet( tts7 );
102         //rs1 = rs1.union( new ReachabilitySet( tts8 ) );
103         rs1 = rs1.union( new ReachabilitySet( tts9 ) );
104
105         System.out.println( "rs1 is "+rs1 );
106
107
108         ChangeTupleSet cts0 = rs0.unionUpArity( rs1 );
109         System.out.println( "cts0 is "+cts0 );
110     }
111 }