95 Snippet musn = methodKey(assertEval("double mu() { return x * 4; }")); |
95 Snippet musn = methodKey(assertEval("double mu() { return x * 4; }")); |
96 assertEval("x == 0;", "true"); |
96 assertEval("x == 0;", "true"); |
97 assertEval("mu() == 0.0;", "true"); |
97 assertEval("mu() == 0.0;", "true"); |
98 assertEval("double x = 2.5;", |
98 assertEval("double x = 2.5;", |
99 ste(MAIN_SNIPPET, VALID, VALID, true, null), |
99 ste(MAIN_SNIPPET, VALID, VALID, true, null), |
100 ste(x, VALID, OVERWRITTEN, false, MAIN_SNIPPET), |
100 ste(x, VALID, OVERWRITTEN, false, MAIN_SNIPPET)); |
101 ste(musn, VALID, VALID, false, MAIN_SNIPPET)); |
|
102 Collection<MethodSnippet> meths = getState().methods(); |
101 Collection<MethodSnippet> meths = getState().methods(); |
103 assertEquals(meths.size(), 1); |
102 assertEquals(meths.size(), 1); |
104 assertTrue(musn == meths.iterator().next(), "Identity must not change"); |
103 assertTrue(musn == meths.iterator().next(), "Identity must not change"); |
105 assertEval("x == 2.5;", "true"); |
104 assertEval("x == 2.5;", "true"); |
106 assertEval("mu() == 10.0;", "true"); // Auto redefine |
105 assertEval("mu() == 10.0;", "true"); // Auto redefine |
113 assertEval("double c() { return b() * 3; }"); |
112 assertEval("double c() { return b() * 3; }"); |
114 assertEval("double d() { return c() + 1000; }"); |
113 assertEval("double d() { return c() + 1000; }"); |
115 assertEval("d();", "1060.0"); |
114 assertEval("d();", "1060.0"); |
116 assertEval("int a() { return 5; }", |
115 assertEval("int a() { return 5; }", |
117 ste(MAIN_SNIPPET, VALID, VALID, true, null), |
116 ste(MAIN_SNIPPET, VALID, VALID, true, null), |
118 ste(a, VALID, OVERWRITTEN, false, MAIN_SNIPPET), |
117 ste(a, VALID, OVERWRITTEN, false, MAIN_SNIPPET)); |
119 ste(b, VALID, VALID, false, MAIN_SNIPPET)); |
|
120 assertEval("d();", "1150.0"); |
118 assertEval("d();", "1150.0"); |
121 assertActiveKeys(); |
119 assertActiveKeys(); |
122 } |
120 } |
123 |
121 |
124 public void testReplaceClassToMethod() { |
122 public void testReplaceClassToMethod() { |
125 Snippet c = classKey(assertEval("class C { int f() { return 7; } }")); |
123 Snippet c = classKey(assertEval("class C { int f() { return 7; } }")); |
126 Snippet m = methodKey(assertEval("int m() { return new C().f(); }")); |
124 Snippet m = methodKey(assertEval("int m() { return new C().f(); }")); |
127 assertEval("m();", "7"); |
125 assertEval("m();", "7"); |
128 assertEval("class C { int x = 99; int f() { return x; } }", |
126 assertEval("class C { int x = 99; int f() { return x; } }", |
129 ste(MAIN_SNIPPET, VALID, VALID, true, null), |
127 ste(MAIN_SNIPPET, VALID, VALID, true, null), |
130 ste(c, VALID, OVERWRITTEN, false, MAIN_SNIPPET), |
128 ste(c, VALID, OVERWRITTEN, false, MAIN_SNIPPET)); |
131 ste(m, VALID, VALID, false, MAIN_SNIPPET)); |
|
132 assertEval("m();", "99"); |
129 assertEval("m();", "99"); |
133 assertActiveKeys(); |
130 assertActiveKeys(); |
134 } |
131 } |
135 |
132 |
136 public void testReplaceVarToClass() { |
133 public void testReplaceVarToClass() { |
138 Snippet c = classKey(assertEval("class A { double a = 4 * x; }")); |
135 Snippet c = classKey(assertEval("class A { double a = 4 * x; }")); |
139 assertEval("x == 0;", "true"); |
136 assertEval("x == 0;", "true"); |
140 assertEval("new A().a == 0.0;", "true"); |
137 assertEval("new A().a == 0.0;", "true"); |
141 assertEval("double x = 2.5;", |
138 assertEval("double x = 2.5;", |
142 ste(MAIN_SNIPPET, VALID, VALID, true, null), |
139 ste(MAIN_SNIPPET, VALID, VALID, true, null), |
143 ste(x, VALID, OVERWRITTEN, false, MAIN_SNIPPET), |
140 ste(x, VALID, OVERWRITTEN, false, MAIN_SNIPPET)); |
144 ste(c, VALID, VALID, false, MAIN_SNIPPET)); |
|
145 Collection<TypeDeclSnippet> classes = getState().types(); |
141 Collection<TypeDeclSnippet> classes = getState().types(); |
146 assertEquals(classes.size(), 1); |
142 assertEquals(classes.size(), 1); |
147 assertTrue(c == classes.iterator().next(), "Identity must not change"); |
143 assertTrue(c == classes.iterator().next(), "Identity must not change"); |
148 assertEval("x == 2.5;", "true"); |
144 assertEval("x == 2.5;", "true"); |
149 assertEval("new A().a == 10.0;", "true"); |
145 assertEval("new A().a == 10.0;", "true"); |
155 Snippet c = classKey(assertEval("class A { double a = 4 * x(); }")); |
151 Snippet c = classKey(assertEval("class A { double a = 4 * x(); }")); |
156 assertEval("x() == 0;", "true"); |
152 assertEval("x() == 0;", "true"); |
157 assertEval("new A().a == 0.0;", "true"); |
153 assertEval("new A().a == 0.0;", "true"); |
158 assertEval("double x() { return 2.5; }", |
154 assertEval("double x() { return 2.5; }", |
159 ste(MAIN_SNIPPET, VALID, VALID, true, null), |
155 ste(MAIN_SNIPPET, VALID, VALID, true, null), |
160 ste(x, VALID, OVERWRITTEN, false, MAIN_SNIPPET), |
156 ste(x, VALID, OVERWRITTEN, false, MAIN_SNIPPET)); |
161 ste(c, VALID, VALID, false, MAIN_SNIPPET)); |
|
162 assertEval("x();", "2.5"); |
157 assertEval("x();", "2.5"); |
163 Collection<TypeDeclSnippet> classes = getState().types(); |
158 Collection<TypeDeclSnippet> classes = getState().types(); |
164 assertEquals(classes.size(), 1); |
159 assertEquals(classes.size(), 1); |
165 assertTrue(c == classes.iterator().next(), "Identity must not change"); |
160 assertTrue(c == classes.iterator().next(), "Identity must not change"); |
166 assertEval("x() == 2.5;", "true"); |
161 assertEval("x() == 2.5;", "true"); |
873 String ms1 = "double m(Integer i) { return i + x; }"; |
868 String ms1 = "double m(Integer i) { return i + x; }"; |
874 String ms2 = "double m(java.lang.Integer i) { return i + x; }"; |
869 String ms2 = "double m(java.lang.Integer i) { return i + x; }"; |
875 MethodSnippet k1 = methodKey(assertEval(ms1, added(VALID))); |
870 MethodSnippet k1 = methodKey(assertEval(ms1, added(VALID))); |
876 VarSnippet xd = varKey(assertEval(xsd, |
871 VarSnippet xd = varKey(assertEval(xsd, |
877 ste(MAIN_SNIPPET, VALID, VALID, true, null), |
872 ste(MAIN_SNIPPET, VALID, VALID, true, null), |
878 ste(xi, VALID, OVERWRITTEN, false, MAIN_SNIPPET), |
873 ste(xi, VALID, OVERWRITTEN, false, MAIN_SNIPPET))); |
879 ste(k1, VALID, VALID, false, MAIN_SNIPPET))); |
|
880 MethodSnippet k2 = methodKey(assertEval(ms2, |
874 MethodSnippet k2 = methodKey(assertEval(ms2, |
881 ste(MAIN_SNIPPET, VALID, VALID, true, null), //TODO: technically, should be false |
875 ste(MAIN_SNIPPET, VALID, VALID, true, null), //TODO: technically, should be false |
882 ste(k1, VALID, OVERWRITTEN, false, MAIN_SNIPPET))); |
876 ste(k1, VALID, OVERWRITTEN, false, MAIN_SNIPPET))); |
883 VarSnippet xi2 = varKey(assertEval(xsi, |
877 VarSnippet xi2 = varKey(assertEval(xsi, |
884 ste(MAIN_SNIPPET, VALID, VALID, true, null), |
878 ste(MAIN_SNIPPET, VALID, VALID, true, null), |
885 ste(xd, VALID, OVERWRITTEN, false, MAIN_SNIPPET), |
879 ste(xd, VALID, OVERWRITTEN, false, MAIN_SNIPPET))); |
886 ste(k2, VALID, VALID, false, MAIN_SNIPPET))); |
|
887 varKey(assertEval(xsd, |
880 varKey(assertEval(xsd, |
888 ste(MAIN_SNIPPET, VALID, VALID, true, null), |
881 ste(MAIN_SNIPPET, VALID, VALID, true, null), |
889 ste(xi2, VALID, OVERWRITTEN, false, MAIN_SNIPPET), |
882 ste(xi2, VALID, OVERWRITTEN, false, MAIN_SNIPPET))); |
890 ste(k2, VALID, VALID, false, MAIN_SNIPPET))); |
|
891 } |
883 } |
892 } |
884 } |