3 import Analysis.OwnershipAnalysis.*;
10 protected static void test( String test,
14 String outcome = "...\tFAILED";
15 if( expected == result ) {
16 outcome = "...\tpassed";
19 System.out.println( test+" expected "+expected+outcome );
22 public static void main(String args[]) throws Exception {
25 // example test to know the testing routine is correct!
26 test( "4 == 5?", false, 4 == 5 );
27 test( "3 == 3?", true, 3 == 3 );
30 TokenTuple tt0 = new TokenTuple( new Integer( 1 ),
32 TokenTuple.ARITY_ONE );
34 TokenTuple tt1 = new TokenTuple( new Integer( 1 ),
36 TokenTuple.ARITY_ONE );
38 TokenTuple tt2 = new TokenTuple( new Integer( 2 ),
40 TokenTuple.ARITY_ONE );
42 TokenTuple tt3 = new TokenTuple( new Integer( 1 ),
44 TokenTuple.ARITY_MANY );
46 test( "tt0 equals tt1?", true, tt0.equals( tt1 ) );
47 test( "tt1 equals tt0?", true, tt1.equals( tt0 ) );
49 test( "tt0 equals tt2?", false, tt0.equals( tt2 ) );
50 test( "tt2 equals tt0?", false, tt2.equals( tt0 ) );
52 test( "tt0 equals tt3?", false, tt0.equals( tt3 ) );
53 test( "tt3 equals tt0?", false, tt3.equals( tt0 ) );
55 test( "tt2 equals tt3?", false, tt2.equals( tt3 ) );
56 test( "tt3 equals tt2?", false, tt3.equals( tt2 ) );
58 tt1 = tt1.increaseArity();
60 test( "tt1 equals tt2?", false, tt1.equals( tt2 ) );
61 test( "tt2 equals tt1?", false, tt2.equals( tt1 ) );
63 test( "tt1 equals tt3?", true, tt1.equals( tt3 ) );
64 test( "tt3 equals tt1?", true, tt3.equals( tt1 ) );
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 );
75 System.out.println( "tts4 is "+tts4 );
76 System.out.println( "tts5 is "+tts5 );
77 System.out.println( "tts6 is "+tts6 );
79 ReachabilitySet rs0 = new ReachabilitySet( tts0 );
80 rs0 = rs0.union( new ReachabilitySet( tts2 ) );
81 rs0 = rs0.union( new ReachabilitySet( tts5 ) );
83 System.out.println( "rs0 is "+rs0 );
85 TokenTuple tt4 = new TokenTuple( new Integer( 4 ),
87 TokenTuple.ARITY_ONE );
89 TokenTuple tt5 = new TokenTuple( new Integer( 4 ),
91 TokenTuple.ARITY_ONE );
93 TokenTuple tt6 = new TokenTuple( new Integer( 6 ),
95 TokenTuple.ARITY_ONE );
97 TokenTupleSet tts7 = new TokenTupleSet( tt4 );
98 //TokenTupleSet tts8 = new TokenTupleSet( tt5 );
99 TokenTupleSet tts9 = new TokenTupleSet( tt1 );
100 tts9 = tts9.union( tts2 );
102 ReachabilitySet rs1 = new ReachabilitySet( tts7 );
103 //rs1 = rs1.union( new ReachabilitySet( tts8 ) );
104 rs1 = rs1.union( new ReachabilitySet( tts9 ) );
106 System.out.println( "rs1 is "+rs1 );
109 ChangeTupleSet cts0 = rs0.unionUpArity( rs1 );
110 System.out.println( "cts0 is "+cts0 );
114 TokenTuple tt00 = new TokenTuple( new Integer( 9 ),
116 TokenTuple.ARITY_ONE );
118 TokenTuple tt01 = new TokenTuple( new Integer( 9 ),
120 TokenTuple.ARITY_ONE );
122 test( "tt00 equals tt01?", true, tt00.equals( tt01 ) );
123 test( "tt00 == tt01?", false, tt00 == tt01 );
125 tt00 = (TokenTuple) Canonical.makeCanonical( tt00 );
126 tt01 = (TokenTuple) Canonical.makeCanonical( tt01 );
128 test( "tt00 equals tt01?", true, tt00.equals( tt01 ) );
129 test( "tt00 == tt01?", true, tt00 == tt01 );
133 (TokenTuple) Canonical.makeCanonical(
134 new TokenTuple( new Integer( 10 ),
136 TokenTuple.ARITY_ONE )
140 (TokenTuple) Canonical.makeCanonical(
141 new TokenTuple( new Integer( 11 ),
143 TokenTuple.ARITY_ONE )
147 (TokenTuple) Canonical.makeCanonical(
148 new TokenTuple( new Integer( 12 ),
150 TokenTuple.ARITY_ONE )
153 TokenTupleSet ttsT00 =
154 (TokenTupleSet) Canonical.makeCanonical( new TokenTupleSet( tt00 ) );
156 TokenTupleSet ttsT01 =
157 (TokenTupleSet) Canonical.makeCanonical( new TokenTupleSet( tt01 ) );
159 TokenTupleSet ttsT02 =
160 (TokenTupleSet) Canonical.makeCanonical( new TokenTupleSet( tt02 ) );
162 TokenTupleSet ttsT03 =
163 (TokenTupleSet) Canonical.makeCanonical( new TokenTupleSet( tt03 ) );
165 TokenTupleSet ttsT04 =
166 (TokenTupleSet) Canonical.makeCanonical( new TokenTupleSet( tt04 ) );
168 TokenTupleSet tts00 = ttsT00.union( ttsT02.union( ttsT03.union( ttsT04 ) ) );
169 TokenTupleSet tts01 = ttsT01.union( ttsT02.union( ttsT03.union( ttsT04 ) ) );
171 test( "tts00 equals tts01?", true, tts00.equals( tts01 ) );
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 );
177 tts00 = (TokenTupleSet) Canonical.makeCanonical( tts00 );
178 tts01 = (TokenTupleSet) Canonical.makeCanonical( tts01 );
180 test( "tts00 equals tts01?", true, tts00.equals( tts01 ) );
181 test( "tts00 == tts01?", true, tts00 == tts01 );