1 19 package org.netbeans.modules.java.hints; 20 21 import java.util.Arrays ; 22 import java.util.Collections ; 23 import java.util.HashSet ; 24 import java.util.List ; 25 import java.util.Set ; 26 import javax.swing.text.Document ; 27 import org.netbeans.modules.java.hints.CreateElement.CreateFieldFix; 28 import org.netbeans.spi.editor.hints.Fix; 29 import org.openide.cookies.EditorCookie; 30 import org.openide.loaders.DataObject; 31 32 36 public class CreateElementTest extends JavaHintsTestBase { 37 38 39 public CreateElementTest(String name) { 40 super(name); 41 } 42 43 public void testBinaryOperator() throws Exception { 44 Set <String > golden = new HashSet <String >(Arrays.asList( 45 "CreateFieldFix:p:org.netbeans.test.java.hints.BinaryOperator:int:[private, static]", 46 "AddParameterOrLocalFix:p:int:true", 47 "AddParameterOrLocalFix:p:int:false" 48 )); 49 50 performTestAnalysisTest("org.netbeans.test.java.hints.BinaryOperator", 218, golden); 51 performTestAnalysisTest("org.netbeans.test.java.hints.BinaryOperator", 255, golden); 52 performTestAnalysisTest("org.netbeans.test.java.hints.BinaryOperator", 294, golden); 53 performTestAnalysisTest("org.netbeans.test.java.hints.BinaryOperator", 333, golden); 54 } 55 56 public void testEnhancedForLoop() throws Exception { 57 performTestAnalysisTest("org.netbeans.test.java.hints.EnhancedForLoop", 186, new HashSet <String >(Arrays.asList( 58 "CreateFieldFix:u:org.netbeans.test.java.hints.EnhancedForLoop:java.lang.Iterable<java.lang.String>:[private, static]", 59 "AddParameterOrLocalFix:u:java.lang.Iterable<java.lang.String>:true", 60 "AddParameterOrLocalFix:u:java.lang.Iterable<java.lang.String>:false" 61 ))); 62 63 } 69 70 public void testArrayAccess() throws Exception { 71 Set <String > simpleGoldenWithLocal = new HashSet <String >(Arrays.asList( 72 "CreateFieldFix:x:org.netbeans.test.java.hints.ArrayAccess:int[]:[private, static]", 73 "AddParameterOrLocalFix:x:int[]:true", 74 "AddParameterOrLocalFix:x:int[]:false" 75 )); 76 77 performTestAnalysisTest("org.netbeans.test.java.hints.ArrayAccess", 170, simpleGoldenWithLocal); 78 performTestAnalysisTest("org.netbeans.test.java.hints.ArrayAccess", 188, simpleGoldenWithLocal); 79 80 Set <String > simpleGoldenWithoutLocal = new HashSet <String >(Arrays.asList( 81 "CreateFieldFix:x:org.netbeans.test.java.hints.ArrayAccess:int[]:[private]" 82 )); 83 84 performTestAnalysisTest("org.netbeans.test.java.hints.ArrayAccess", 262, simpleGoldenWithoutLocal); 85 performTestAnalysisTest("org.netbeans.test.java.hints.ArrayAccess", 283, simpleGoldenWithoutLocal); 86 87 Set <String > indexGoldenWithLocal = new HashSet <String >(Arrays.asList( 88 "CreateFieldFix:u:org.netbeans.test.java.hints.ArrayAccess:int:[private, static]", 89 "AddParameterOrLocalFix:u:int:true", 90 "AddParameterOrLocalFix:u:int:false" 91 )); 92 93 performTestAnalysisTest("org.netbeans.test.java.hints.ArrayAccess", 335, indexGoldenWithLocal); 94 performTestAnalysisTest("org.netbeans.test.java.hints.ArrayAccess", 377, indexGoldenWithLocal); 95 96 Set <String > indexGoldenWithoutLocal = new HashSet <String >(Arrays.asList( 97 "CreateFieldFix:u:org.netbeans.test.java.hints.ArrayAccess:int:[private]" 98 )); 99 100 performTestAnalysisTest("org.netbeans.test.java.hints.ArrayAccess", 359, indexGoldenWithoutLocal); 101 performTestAnalysisTest("org.netbeans.test.java.hints.ArrayAccess", 401, indexGoldenWithoutLocal); 102 103 performTestAnalysisTest("org.netbeans.test.java.hints.ArrayAccess", 442, new HashSet <String >(Arrays.asList( 104 "CreateFieldFix:s:org.netbeans.test.java.hints.ArrayAccess:java.lang.Object[][]:[private]" 105 ))); 106 } 107 108 public void testAssignment() throws Exception { 109 Set <String > golden = new HashSet <String >(Arrays.asList( 110 "CreateFieldFix:x:org.netbeans.test.java.hints.Assignment:int:[private, static]", 111 "AddParameterOrLocalFix:x:int:true", 112 "AddParameterOrLocalFix:x:int:false" 113 )); 114 performTestAnalysisTest("org.netbeans.test.java.hints.Assignment", 174, golden); 115 performTestAnalysisTest("org.netbeans.test.java.hints.Assignment", 186, golden); 116 } 117 118 public void testVariableDeclaration() throws Exception { 119 Set <String > golden = new HashSet <String >(Arrays.asList( 120 "CreateFieldFix:x:org.netbeans.test.java.hints.VariableDeclaration:int:[private, static]", 121 "AddParameterOrLocalFix:x:int:true", 122 "AddParameterOrLocalFix:x:int:false" 123 )); 124 125 performTestAnalysisTest("org.netbeans.test.java.hints.VariableDeclaration", 186, golden); 126 } 127 128 public void testAssert() throws Exception { 129 Set <String > goldenC = new HashSet <String >(Arrays.asList( 130 "CreateFieldFix:c:org.netbeans.test.java.hints.Assert:boolean:[private, static]", 131 "AddParameterOrLocalFix:c:boolean:true", 132 "AddParameterOrLocalFix:c:boolean:false" 133 )); 134 135 performTestAnalysisTest("org.netbeans.test.java.hints.Assert", 159, goldenC); 136 137 Set <String > goldenS = new HashSet <String >(Arrays.asList( 138 "CreateFieldFix:s:org.netbeans.test.java.hints.Assert:java.lang.Object:[private, static]", 139 "AddParameterOrLocalFix:s:java.lang.Object:true", 140 "AddParameterOrLocalFix:s:java.lang.Object:false" 141 )); 142 143 performTestAnalysisTest("org.netbeans.test.java.hints.Assert", 163, goldenS); 144 } 145 146 public void testParenthesis() throws Exception { 147 Set <String > goldenC = new HashSet <String >(Arrays.asList( 148 "CreateFieldFix:x:org.netbeans.test.java.hints.Parenthesis:int[][]:[private]" 149 )); 150 151 performTestAnalysisTest("org.netbeans.test.java.hints.Parenthesis", 203, goldenC); 152 } 153 154 public void testIfAndLoops() throws Exception { 155 Set <String > simple = new HashSet <String >(Arrays.asList( 156 "CreateFieldFix:a:org.netbeans.test.java.hints.IfAndLoops:boolean:[private, static]", 157 "AddParameterOrLocalFix:a:boolean:true", 158 "AddParameterOrLocalFix:a:boolean:false" 159 )); 160 161 performTestAnalysisTest("org.netbeans.test.java.hints.IfAndLoops", 194, simple); 162 performTestAnalysisTest("org.netbeans.test.java.hints.IfAndLoops", 247, simple); 163 performTestAnalysisTest("org.netbeans.test.java.hints.IfAndLoops", 309, simple); 164 performTestAnalysisTest("org.netbeans.test.java.hints.IfAndLoops", 368, simple); 165 166 Set <String > complex = new HashSet <String >(Arrays.asList( 167 "CreateFieldFix:a:org.netbeans.test.java.hints.IfAndLoops:boolean[]:[private]" 168 )); 169 170 performTestAnalysisTest("org.netbeans.test.java.hints.IfAndLoops", 214, complex); 171 performTestAnalysisTest("org.netbeans.test.java.hints.IfAndLoops", 270, complex); 172 performTestAnalysisTest("org.netbeans.test.java.hints.IfAndLoops", 336, complex); 173 performTestAnalysisTest("org.netbeans.test.java.hints.IfAndLoops", 395, complex); 174 } 175 176 public void testTarget() throws Exception { 177 Set <String > simple = new HashSet <String >(Arrays.asList( 178 "CreateFieldFix:a:org.netbeans.test.java.hints.Target:int:[private, static]", 179 "AddParameterOrLocalFix:a:int:true", 180 "AddParameterOrLocalFix:a:int:false" 181 )); 182 183 performTestAnalysisTest("org.netbeans.test.java.hints.Target", 186, simple); 184 185 Set <String > complex = new HashSet <String >(Arrays.asList( 186 "CreateFieldFix:a:org.netbeans.test.java.hints.Target:int:[private]" 187 )); 188 189 performTestAnalysisTest("org.netbeans.test.java.hints.Target", 203, complex); 190 performTestAnalysisTest("org.netbeans.test.java.hints.Target", 224, complex); 191 performTestAnalysisTest("org.netbeans.test.java.hints.Target", 252, complex); 192 } 193 194 public void testMemberSelect() throws Exception { 195 Set <String > simpleWithStatic = new HashSet <String >(Arrays.asList( 196 "CreateFieldFix:a:org.netbeans.test.java.hints.MemberSelect:int:[private, static]" 197 )); 198 Set <String > simple = new HashSet <String >(Arrays.asList( 199 "CreateFieldFix:a:org.netbeans.test.java.hints.MemberSelect:int:[private]" 200 )); 201 202 performTestAnalysisTest("org.netbeans.test.java.hints.MemberSelect", 236, simpleWithStatic); 203 performTestAnalysisTest("org.netbeans.test.java.hints.MemberSelect", 268, simpleWithStatic); 204 205 performTestAnalysisTest("org.netbeans.test.java.hints.MemberSelect", 290, simple); 206 performTestAnalysisTest("org.netbeans.test.java.hints.MemberSelect", 311, simple); 207 } 208 209 public void testSimple() throws Exception { 210 Set <String > simpleJLOWithLocal = new HashSet <String >(Arrays.asList( 211 "CreateFieldFix:e:org.netbeans.test.java.hints.Simple:java.lang.Object:[private, static]", 212 "AddParameterOrLocalFix:e:java.lang.Object:true", 213 "AddParameterOrLocalFix:e:java.lang.Object:false" 214 )); 215 Set <String > simpleJLO = new HashSet <String >(Arrays.asList( 216 "CreateFieldFix:e:org.netbeans.test.java.hints.Simple:java.lang.Object:[private]" 217 )); 218 Set <String > simpleJLEWithLocal = new HashSet <String >(Arrays.asList( 219 "CreateFieldFix:e:org.netbeans.test.java.hints.Simple:java.lang.Exception:[private, static]", 220 "AddParameterOrLocalFix:e:java.lang.Exception:true", 221 "AddParameterOrLocalFix:e:java.lang.Exception:false" 222 )); 223 Set <String > simpleJLE = new HashSet <String >(Arrays.asList( 224 "CreateFieldFix:e:org.netbeans.test.java.hints.Simple:java.lang.Exception:[private]" 225 )); 226 227 performTestAnalysisTest("org.netbeans.test.java.hints.Simple", 192, simpleJLEWithLocal); 228 performTestAnalysisTest("org.netbeans.test.java.hints.Simple", 211, simpleJLE); 229 230 performTestAnalysisTest("org.netbeans.test.java.hints.Simple", 245, simpleJLOWithLocal); 231 performTestAnalysisTest("org.netbeans.test.java.hints.Simple", 275, simpleJLO); 232 233 performTestAnalysisTest("org.netbeans.test.java.hints.Simple", 302, simpleJLOWithLocal); 234 performTestAnalysisTest("org.netbeans.test.java.hints.Simple", 342, simpleJLO); 235 } 236 237 public void testUnary() throws Exception { 238 performTestAnalysisTest("org.netbeans.test.java.hints.Simple", 382, Collections.singleton("CreateFieldFix:i:org.netbeans.test.java.hints.Simple:int:[private]")); 239 240 performTestAnalysisTest("org.netbeans.test.java.hints.Simple", 398, Collections.singleton("CreateFieldFix:b:org.netbeans.test.java.hints.Simple:byte:[private]")); 241 performTestAnalysisTest("org.netbeans.test.java.hints.Simple", 409, Collections.singleton("CreateFieldFix:b:org.netbeans.test.java.hints.Simple:byte:[private]")); 242 243 performTestAnalysisTest("org.netbeans.test.java.hints.Simple", 415, Collections.singleton("CreateFieldFix:l:org.netbeans.test.java.hints.Simple:int:[private]")); 244 } 245 246 public void testTypevarsAndEnums() throws Exception { 247 performTestAnalysisTest("org.netbeans.test.java.hints.TypevarsAndErrors", 221, Collections.<String >emptySet()); 248 performTestAnalysisTest("org.netbeans.test.java.hints.TypevarsAndErrors", 243, Collections.<String >emptySet()); 249 performTestAnalysisTest("org.netbeans.test.java.hints.TypevarsAndErrors", 265, Collections.<String >emptySet()); 250 performTestAnalysisTest("org.netbeans.test.java.hints.TypevarsAndErrors", 287, Collections.<String >emptySet()); 251 } 252 253 public void testReturn() throws Exception { 254 performTestAnalysisTest("org.netbeans.test.java.hints.Return", 164, new HashSet <String >(Arrays.asList( 255 "AddParameterOrLocalFix:l:int:false", 256 "AddParameterOrLocalFix:l:int:true", 257 "CreateFieldFix:l:org.netbeans.test.java.hints.Return:int:[private]" 258 ))); 259 performTestAnalysisTest("org.netbeans.test.java.hints.Return", 220, new HashSet <String >(Arrays.asList( 260 "AddParameterOrLocalFix:l:java.util.List:false", 261 "AddParameterOrLocalFix:l:java.util.List:true", 262 "CreateFieldFix:l:org.netbeans.test.java.hints.Return:java.util.List:[private]" 263 ))); 264 performTestAnalysisTest("org.netbeans.test.java.hints.Return", 284, new HashSet <String >(Arrays.asList( 265 "AddParameterOrLocalFix:l:java.util.List<java.lang.String>:false", 266 "AddParameterOrLocalFix:l:java.util.List<java.lang.String>:true", 267 "CreateFieldFix:l:org.netbeans.test.java.hints.Return:java.util.List<java.lang.String>:[private]" 268 ))); 269 performTestAnalysisTest("org.netbeans.test.java.hints.Return", 340, Collections.<String >emptySet()); 270 } 271 272 public void test92419() throws Exception { 273 performTestAnalysisTest("org.netbeans.test.java.hints.Bug92419", 123, Collections.<String >emptySet()); 274 } 275 276 protected void performTestAnalysisTest(String className, int offset, Set <String > golden) throws Exception { 277 prepareTest(className); 278 279 DataObject od = DataObject.find(info.getFileObject()); 280 EditorCookie ec = (EditorCookie) od.getLookup().lookup(EditorCookie.class); 281 282 Document doc = ec.openDocument(); 283 284 CreateElement ce = new CreateElement(); 285 List <Fix> fixes = ce.analyze(info, offset); 286 Set <String > real = new HashSet <String >(); 287 288 for (Fix f : fixes) { 289 if (f instanceof CreateFieldFix) { 290 real.add(((CreateFieldFix) f).toDebugString(info)); 291 continue; 292 } 293 if (f instanceof AddParameterOrLocalFix) { 294 real.add(((AddParameterOrLocalFix) f).toDebugString(info)); 295 continue; 296 } 297 298 fail("Fix of incorrect type: " + f.getClass()); 299 } 300 301 assertEquals(golden, real); 302 } 303 304 @Override 305 protected String testDataExtension() { 306 return "org/netbeans/test/java/hints/CreateElementTest/"; 307 } 308 309 @Override 310 protected boolean createCaches() { 311 return false; 312 } 313 314 } 315 | Popular Tags |