| /******************************************************************************* |
| * Copyright (c) 2000, 2014 IBM Corporation and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * IBM Corporation - initial API and implementation |
| * Stephan Herrmann - Contribution for bug 374605 - Unreasonable warning for enum-based switch statements |
| *******************************************************************************/ |
| package org.eclipse.jdt.core.tests.model; |
| |
| import junit.framework.Test; |
| |
| import org.eclipse.core.resources.IMarker; |
| import org.eclipse.core.resources.IResource; |
| import org.eclipse.core.resources.IncrementalProjectBuilder; |
| import org.eclipse.core.runtime.CoreException; |
| import org.eclipse.jdt.core.CorrectionEngine; |
| import org.eclipse.jdt.core.ICompilationUnit; |
| import org.eclipse.jdt.core.IJavaElement; |
| import org.eclipse.jdt.core.IJavaModelMarker; |
| import org.eclipse.jdt.core.IJavaProject; |
| import org.eclipse.jdt.core.JavaCore; |
| import org.eclipse.jdt.core.JavaModelException; |
| import org.eclipse.jdt.core.compiler.IProblem; |
| import org.eclipse.jdt.core.search.IJavaSearchConstants; |
| import org.eclipse.jdt.core.search.IJavaSearchScope; |
| import org.eclipse.jdt.core.search.SearchEngine; |
| import org.eclipse.jdt.core.search.SearchPattern; |
| import org.eclipse.jdt.core.search.TypeNameRequestor; |
| |
| public class CodeCorrectionTests extends AbstractJavaModelTests { |
| public static boolean DEBUG = false; |
| public static boolean SPECIFIC = false; |
| |
| public CodeCorrectionTests(String name) { |
| super(name); |
| } |
| private IMarker[] getMarkers(ICompilationUnit unit){ |
| try { |
| IResource resource = unit.getCorrespondingResource(); |
| return resource.findMarkers(IJavaModelMarker.JAVA_MODEL_PROBLEM_MARKER, true, IResource.DEPTH_INFINITE); |
| } catch (CoreException e) { |
| } |
| return new IMarker[0]; |
| } |
| private IMarker getMarker(ICompilationUnit unit, String message) throws CoreException { |
| IMarker[] markers = getMarkers(unit); |
| for (int i = 0; i < markers.length; i++) { |
| IMarker marker = markers[i]; |
| if (message.equals(marker.getAttribute(IMarker.MESSAGE))) { |
| return marker; |
| } |
| } |
| return null; |
| } |
| /** |
| * Return the project names to load in the solution |
| * when an independent test suite is being run. |
| */ |
| public static String[] getProjectNames() { |
| return new String[] {"Compiler", "CodeCorrection"}; |
| } |
| public void setUpSuite() throws Exception { |
| super.setUpSuite(); |
| |
| IJavaProject project = setUpJavaProject("CodeCorrection", "1.5"); |
| |
| // dummy query for waiting until the indexes are ready |
| SearchEngine engine = new SearchEngine(); |
| IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] {project}); |
| try { |
| engine.searchAllTypeNames( |
| null, |
| SearchPattern.R_EXACT_MATCH, |
| "!@$#!@".toCharArray(), |
| SearchPattern.R_PATTERN_MATCH | SearchPattern.R_CASE_SENSITIVE, |
| IJavaSearchConstants.CLASS, |
| scope, |
| new TypeNameRequestor() { |
| public void acceptType( |
| int modifiers, |
| char[] packageName, |
| char[] simpleTypeName, |
| char[][] enclosingTypeNames, |
| String path) {} |
| }, |
| IJavaSearchConstants.WAIT_UNTIL_READY_TO_SEARCH, |
| null); |
| } catch (CoreException e) { |
| } |
| // do a full build to create markers |
| JavaCore.setOptions(JavaCore.getDefaultOptions()); |
| try { |
| getWorkspace().getRoot().getProject("CodeCorrection").build(IncrementalProjectBuilder.FULL_BUILD,null); |
| waitForAutoBuild(); |
| } catch (CoreException e) { |
| assertTrue("building failed", false); |
| } |
| } |
| public void tearDownSuite() throws Exception { |
| deleteProject("CodeCorrection"); |
| |
| super.tearDownSuite(); |
| } |
| public static Test suite() { |
| return buildModelTestSuite(CodeCorrectionTests.class); |
| /* |
| Suite suite = new Suite(CodeCorrectionTests.class.getName()); |
| if (fgSpecific) { |
| suite.addTest(new CodeCorrectionTests("testCorrectMethod1")); |
| |
| return suite; |
| } |
| suite.addTest(new CodeCorrectionTests("testCorrectFieldType1")); |
| suite.addTest(new CodeCorrectionTests("testCorrectFieldType2")); |
| suite.addTest(new CodeCorrectionTests("testCorrectFieldType3")); |
| suite.addTest(new CodeCorrectionTests("testCorrectLocalVariableType1")); |
| suite.addTest(new CodeCorrectionTests("testCorrectLocalVariableType2")); |
| suite.addTest(new CodeCorrectionTests("testCorrectImport1")); |
| suite.addTest(new CodeCorrectionTests("testCorrectImport2")); |
| suite.addTest(new CodeCorrectionTests("testCorrectImport3")); |
| suite.addTest(new CodeCorrectionTests("testCorrectSuperClass1")); |
| suite.addTest(new CodeCorrectionTests("testCorrectSuperClass2")); |
| suite.addTest(new CodeCorrectionTests("testCorrectSuperInterface1")); |
| suite.addTest(new CodeCorrectionTests("testCorrectSuperInterface2")); |
| suite.addTest(new CodeCorrectionTests("testCorrectException1")); |
| suite.addTest(new CodeCorrectionTests("testCorrectException2")); |
| suite.addTest(new CodeCorrectionTests("testCorrectMethod1")); |
| suite.addTest(new CodeCorrectionTests("testCorrectMethod2")); |
| suite.addTest(new CodeCorrectionTests("testCorrectField1")); |
| suite.addTest(new CodeCorrectionTests("testCorrectField2")); |
| suite.addTest(new CodeCorrectionTests("testCorrectLocalVariable1")); |
| suite.addTest(new CodeCorrectionTests("testCorrectArgument1")); |
| suite.addTest(new CodeCorrectionTests("testCorrectReturnType1")); |
| suite.addTest(new CodeCorrectionTests("testCorrectReturnType2")); |
| suite.addTest(new CodeCorrectionTests("testWarningTokens")); |
| |
| return suite; |
| */ |
| } |
| public void testCorrectFieldType1() throws JavaModelException { |
| CorrectionEngine engine = new CorrectionEngine(JavaCore.getOptions()); |
| CodeCorrectionTestsRequestor requestor = new CodeCorrectionTestsRequestor(); |
| ICompilationUnit cu= getCompilationUnit("CodeCorrection", "src", "", "CorrectFieldType1.java"); |
| IMarker[] markers = getMarkers(cu); |
| assertTrue("should have one problem",markers.length == 1); |
| engine.computeCorrections(markers[0], null, 0, requestor); |
| |
| String src = cu.getSource(); |
| String error = "dddz"; |
| int start = src.indexOf(error); |
| int end = start + error.length(); |
| |
| assertEquals( |
| "should have two suggestions", |
| "ddd\n"+ |
| "ddd.eee", |
| requestor.getSuggestions()); |
| assertEquals( |
| "a start of a suggestion is not correct", |
| start+"\n"+ |
| start, |
| requestor.getStarts()); |
| assertEquals( |
| "a end of a suggestion is not correct", |
| end+"\n"+ |
| end, |
| requestor.getEnds()); |
| } |
| public void testCorrectFieldType2() throws JavaModelException { |
| CorrectionEngine engine = new CorrectionEngine(JavaCore.getOptions()); |
| CodeCorrectionTestsRequestor requestor = new CodeCorrectionTestsRequestor(); |
| ICompilationUnit cu= getCompilationUnit("CodeCorrection", "src", "", "CorrectFieldType2.java"); |
| IMarker[] markers = getMarkers(cu); |
| assertTrue("should have one problem",markers.length == 1); |
| engine.computeCorrections(markers[0], null, 0, requestor); |
| |
| String src = cu.getSource(); |
| String error = "AClassz"; |
| int start = src.indexOf(error); |
| int end = start + error.length(); |
| |
| assertEquals( |
| "should have two suggestions", |
| "AClass\n"+ |
| "AClass2", |
| requestor.getSuggestions()); |
| assertEquals( |
| "a start of a suggestion is not correct", |
| start+"\n"+ |
| start, |
| requestor.getStarts()); |
| assertEquals( |
| "a end of a suggestion is not correct", |
| end+"\n"+ |
| end, |
| requestor.getEnds()); |
| } |
| public void testCorrectFieldType3() throws CoreException { |
| CorrectionEngine engine = new CorrectionEngine(JavaCore.getOptions()); |
| CodeCorrectionTestsRequestor requestor = new CodeCorrectionTestsRequestor(); |
| ICompilationUnit cu= getCompilationUnit("CodeCorrection", "src", "", "CorrectFieldType3.java"); |
| IMarker marker = getMarker(cu, "AClassz cannot be resolved to a type"); |
| assertTrue("Marker not found", marker != null); |
| engine.computeCorrections(marker, null, 0, requestor); |
| |
| String src = cu.getSource(); |
| String error = "AClassz"; |
| int start = src.indexOf(error); |
| int end = start + error.length(); |
| |
| assertEquals( |
| "should have two suggestions", |
| "AClass\n"+ |
| "AClass2", |
| requestor.getSuggestions()); |
| assertEquals( |
| "a start of a suggestion is not correct", |
| start+"\n"+ |
| start, |
| requestor.getStarts()); |
| assertEquals( |
| "a end of a suggestion is not correct", |
| end+"\n"+ |
| end, |
| requestor.getEnds()); |
| } |
| public void testCorrectLocalVariableType1() throws JavaModelException { |
| CorrectionEngine engine = new CorrectionEngine(JavaCore.getOptions()); |
| CodeCorrectionTestsRequestor requestor = new CodeCorrectionTestsRequestor(); |
| ICompilationUnit cu= getCompilationUnit("CodeCorrection", "src", "", "CorrectLocalVariableType1.java"); |
| IMarker[] markers = getMarkers(cu); |
| assertTrue("should have one problem",markers.length == 1); |
| engine.computeCorrections(markers[0], null, 0, requestor); |
| |
| String src = cu.getSource(); |
| String error = "dddz"; |
| int start = src.indexOf(error); |
| int end = start + error.length(); |
| |
| assertEquals( |
| "should have two suggestions", |
| "ddd\n"+ |
| "ddd.eee", |
| requestor.getSuggestions()); |
| assertEquals( |
| "a start of a suggestion is not correct", |
| start+"\n"+ |
| start, |
| requestor.getStarts()); |
| assertEquals( |
| "a end of a suggestion is not correct", |
| end+"\n"+ |
| end, |
| requestor.getEnds()); |
| } |
| public void testCorrectLocalVariableType2() throws JavaModelException { |
| CorrectionEngine engine = new CorrectionEngine(JavaCore.getOptions()); |
| CodeCorrectionTestsRequestor requestor = new CodeCorrectionTestsRequestor(); |
| ICompilationUnit cu= getCompilationUnit("CodeCorrection", "src", "", "CorrectLocalVariableType2.java"); |
| IMarker[] markers = getMarkers(cu); |
| assertTrue("should have one problem",markers.length == 1); |
| engine.computeCorrections(markers[0], null, 0, requestor); |
| |
| String src = cu.getSource(); |
| String error = "AClassz"; |
| int start = src.indexOf(error); |
| int end = start + error.length(); |
| |
| assertEquals( |
| "should have two suggestions", |
| "AClass\n"+ |
| "AClass2", |
| requestor.getSuggestions()); |
| assertEquals( |
| "a start of a suggestion is not correct", |
| start+"\n"+ |
| start, |
| requestor.getStarts()); |
| assertEquals( |
| "a end of a suggestion is not correct", |
| end+"\n"+ |
| end, |
| requestor.getEnds()); |
| } |
| public void testCorrectImport1() throws JavaModelException { |
| CorrectionEngine engine = new CorrectionEngine(JavaCore.getOptions()); |
| CodeCorrectionTestsRequestor requestor = new CodeCorrectionTestsRequestor(); |
| ICompilationUnit cu= getCompilationUnit("CodeCorrection", "src", "", "CorrectImport1.java"); |
| IMarker[] markers = getMarkers(cu); |
| assertTrue("should have one problem",markers.length == 1); |
| engine.computeCorrections(markers[0], null, 0, requestor); |
| |
| String src = cu.getSource(); |
| String error = "dddz"; |
| int start = src.indexOf(error); |
| int end = start + error.length(); |
| |
| assertEquals( |
| "should have two suggestions", |
| "ddd\n"+ |
| "ddd.eee", |
| requestor.getSuggestions()); |
| assertEquals( |
| "a start of a suggestion is not correct", |
| start+"\n"+ |
| start, |
| requestor.getStarts()); |
| assertEquals( |
| "a end of a suggestion is not correct", |
| end+"\n"+ |
| end, |
| requestor.getEnds()); |
| } |
| public void testCorrectImport2() throws JavaModelException { |
| CorrectionEngine engine = new CorrectionEngine(JavaCore.getOptions()); |
| CodeCorrectionTestsRequestor requestor = new CodeCorrectionTestsRequestor(); |
| ICompilationUnit cu= getCompilationUnit("CodeCorrection", "src", "", "CorrectImport2.java"); |
| IMarker[] markers = getMarkers(cu); |
| assertTrue("should have one problem",markers.length == 1); |
| engine.computeCorrections(markers[0], null, 0, requestor); |
| |
| String src = cu.getSource(); |
| String error = "dddz"; |
| int start = src.indexOf(error); |
| int end = start + error.length(); |
| |
| assertEquals( |
| "should have two suggestions", |
| "ddd\n"+ |
| "ddd.eee", |
| requestor.getSuggestions()); |
| assertEquals( |
| "a start of a suggestion is not correct", |
| start+"\n"+ |
| start, |
| requestor.getStarts()); |
| assertEquals( |
| "a end of a suggestion is not correct", |
| end+"\n"+ |
| end, |
| requestor.getEnds()); |
| } |
| public void testCorrectImport3() throws JavaModelException { |
| CorrectionEngine engine = new CorrectionEngine(JavaCore.getOptions()); |
| CodeCorrectionTestsRequestor requestor = new CodeCorrectionTestsRequestor(); |
| ICompilationUnit cu= getCompilationUnit("CodeCorrection", "src", "", "CorrectImport3.java"); |
| IMarker[] markers = getMarkers(cu); |
| assertTrue("should have one problem",markers.length == 1); |
| engine.computeCorrections(markers[0], null, 0, requestor); |
| |
| String src = cu.getSource(); |
| String error = "AClassz"; |
| int start = src.indexOf(error); |
| int end = start + error.length(); |
| |
| assertEquals( |
| "should have two suggestions", |
| "AClass\n"+ |
| "AClass2", |
| requestor.getSuggestions()); |
| assertEquals( |
| "a start of a suggestion is not correct", |
| start+"\n"+ |
| start, |
| requestor.getStarts()); |
| assertEquals( |
| "a end of a suggestion is not correct", |
| end+"\n"+ |
| end, |
| requestor.getEnds()); |
| } |
| public void testCorrectSuperClass1() throws JavaModelException { |
| CorrectionEngine engine = new CorrectionEngine(JavaCore.getOptions()); |
| CodeCorrectionTestsRequestor requestor = new CodeCorrectionTestsRequestor(); |
| ICompilationUnit cu= getCompilationUnit("CodeCorrection", "src", "", "CorrectSuperClass1.java"); |
| IMarker[] markers = getMarkers(cu); |
| assertTrue("should have one problem",markers.length == 1); |
| engine.computeCorrections(markers[0], null, 0, requestor); |
| |
| String src = cu.getSource(); |
| String error = "dddz"; |
| int start = src.indexOf(error); |
| int end = start + error.length(); |
| |
| assertEquals( |
| "should have two suggestions", |
| "ddd\n"+ |
| "ddd.eee", |
| requestor.getSuggestions()); |
| assertEquals( |
| "a start of a suggestion is not correct", |
| start+"\n"+ |
| start, |
| requestor.getStarts()); |
| assertEquals( |
| "a end of a suggestion is not correct", |
| end+"\n"+ |
| end, |
| requestor.getEnds()); |
| } |
| public void testCorrectSuperClass2() throws JavaModelException { |
| CorrectionEngine engine = new CorrectionEngine(JavaCore.getOptions()); |
| CodeCorrectionTestsRequestor requestor = new CodeCorrectionTestsRequestor(); |
| ICompilationUnit cu= getCompilationUnit("CodeCorrection", "src", "", "CorrectSuperClass2.java"); |
| IMarker[] markers = getMarkers(cu); |
| assertTrue("should have one problem",markers.length == 1); |
| engine.computeCorrections(markers[0], null, 0, requestor); |
| |
| String src = cu.getSource(); |
| String error = "AClassz"; |
| int start = src.indexOf(error); |
| int end = start + error.length(); |
| |
| assertEquals( |
| "should have two suggestions", |
| "AClass\n"+ |
| "AClass2", |
| requestor.getSuggestions()); |
| assertEquals( |
| "a start of a suggestion is not correct", |
| start+"\n"+ |
| start, |
| requestor.getStarts()); |
| assertEquals( |
| "a end of a suggestion is not correct", |
| end+"\n"+ |
| end, |
| requestor.getEnds()); |
| } |
| public void testCorrectSuperInterface1() throws JavaModelException { |
| CorrectionEngine engine = new CorrectionEngine(JavaCore.getOptions()); |
| CodeCorrectionTestsRequestor requestor = new CodeCorrectionTestsRequestor(); |
| ICompilationUnit cu= getCompilationUnit("CodeCorrection", "src", "", "CorrectSuperInterface1.java"); |
| IMarker[] markers = getMarkers(cu); |
| assertTrue("should have one problem",markers.length == 1); |
| engine.computeCorrections(markers[0], null, 0, requestor); |
| |
| String src = cu.getSource(); |
| String error = "cccz"; |
| int start = src.indexOf(error); |
| int end = start + error.length(); |
| |
| assertEquals( |
| "should have two suggestions", |
| "ccc\n"+ |
| "cccInterface", |
| requestor.getSuggestions()); |
| assertEquals( |
| "a start of a suggestion is not correct", |
| start+"\n"+ |
| start, |
| requestor.getStarts()); |
| assertEquals( |
| "a end of a suggestion is not correct", |
| end+"\n"+ |
| end, |
| requestor.getEnds()); |
| } |
| public void testCorrectSuperInterface2() throws JavaModelException { |
| CorrectionEngine engine = new CorrectionEngine(JavaCore.getOptions()); |
| CodeCorrectionTestsRequestor requestor = new CodeCorrectionTestsRequestor(); |
| ICompilationUnit cu= getCompilationUnit("CodeCorrection", "src", "", "CorrectSuperInterface2.java"); |
| IMarker[] markers = getMarkers(cu); |
| assertTrue("should have one problem",markers.length == 1); |
| engine.computeCorrections(markers[0], null, 0, requestor); |
| |
| String src = cu.getSource(); |
| String error = "AListenerz"; |
| int start = src.indexOf(error); |
| int end = start + error.length(); |
| |
| assertEquals( |
| "should have two suggestions", |
| "AListener", |
| requestor.getSuggestions()); |
| assertEquals( |
| "a start of a suggestion is not correct", |
| ""+start, |
| requestor.getStarts()); |
| assertEquals( |
| "a end of a suggestion is not correct", |
| ""+end, |
| requestor.getEnds()); |
| } |
| public void testCorrectException1() throws JavaModelException { |
| CorrectionEngine engine = new CorrectionEngine(JavaCore.getOptions()); |
| CodeCorrectionTestsRequestor requestor = new CodeCorrectionTestsRequestor(); |
| ICompilationUnit cu= getCompilationUnit("CodeCorrection", "src", "", "CorrectException1.java"); |
| IMarker[] markers = getMarkers(cu); |
| assertTrue("should have one problem",markers.length == 1); |
| engine.computeCorrections(markers[0], null, 0, requestor); |
| |
| String src = cu.getSource(); |
| String error = "bbbz"; |
| int start = src.indexOf(error); |
| int end = start + error.length(); |
| |
| assertEquals( |
| "should have two suggestions", |
| "bbb\n"+ |
| "bbb.ccc", |
| requestor.getSuggestions()); |
| assertEquals( |
| "a start of a suggestion is not correct", |
| start+"\n"+ |
| start, |
| requestor.getStarts()); |
| assertEquals( |
| "a end of a suggestion is not correct", |
| end+"\n"+ |
| end, |
| requestor.getEnds()); |
| } |
| public void testCorrectException2() throws JavaModelException { |
| CorrectionEngine engine = new CorrectionEngine(JavaCore.getOptions()); |
| CodeCorrectionTestsRequestor requestor = new CodeCorrectionTestsRequestor(); |
| ICompilationUnit cu= getCompilationUnit("CodeCorrection", "src", "", "CorrectException2.java"); |
| IMarker[] markers = getMarkers(cu); |
| assertTrue("should have one problem",markers.length == 1); |
| engine.computeCorrections(markers[0], null, 0, requestor); |
| |
| String src = cu.getSource(); |
| String error = "AnExceptionz"; |
| int start = src.indexOf(error); |
| int end = start + error.length(); |
| |
| assertEquals( |
| "should have two suggestions", |
| "AnException", |
| requestor.getSuggestions()); |
| assertEquals( |
| "a start of a suggestion is not correct", |
| ""+start, |
| requestor.getStarts()); |
| assertEquals( |
| "a end of a suggestion is not correct", |
| ""+end, |
| requestor.getEnds()); |
| } |
| public void testCorrectMethod1() throws JavaModelException { |
| CorrectionEngine engine = new CorrectionEngine(JavaCore.getOptions()); |
| CodeCorrectionTestsRequestor requestor = new CodeCorrectionTestsRequestor(); |
| ICompilationUnit cu= getCompilationUnit("CodeCorrection", "src", "", "CorrectMethod1.java"); |
| IMarker[] markers = getMarkers(cu); |
| assertTrue("should have one problem",markers.length == 1); |
| engine.computeCorrections(markers[0], null, 0, requestor); |
| |
| String src = cu.getSource(); |
| String error = "bar"; |
| int start = src.lastIndexOf(error); |
| int end = start + error.length(); |
| |
| assertEquals( |
| "should have one suggestion", |
| "bar0", |
| requestor.getSuggestions()); |
| assertEquals( |
| "a start of a suggestion is not correct", |
| ""+start, |
| requestor.getStarts()); |
| assertEquals( |
| "a end of a suggestion is not correct", |
| ""+end, |
| requestor.getEnds()); |
| } |
| public void testCorrectMethod2() throws JavaModelException { |
| CorrectionEngine engine = new CorrectionEngine(JavaCore.getOptions()); |
| CodeCorrectionTestsRequestor requestor = new CodeCorrectionTestsRequestor(); |
| ICompilationUnit cu= getCompilationUnit("CodeCorrection", "src", "", "CorrectMethod2.java"); |
| IMarker[] markers = getMarkers(cu); |
| assertTrue("should have one problem",markers.length == 1); |
| engine.computeCorrections(markers[0], null, 0, requestor); |
| |
| String src = cu.getSource(); |
| String error = "bar"; |
| int start = src.lastIndexOf(error); |
| int end = start + error.length(); |
| |
| assertEquals( |
| "should have one suggestion", |
| "bar0", |
| requestor.getSuggestions()); |
| assertEquals( |
| "a start of a suggestion is not correct", |
| ""+start, |
| requestor.getStarts()); |
| assertEquals( |
| "a end of a suggestion is not correct", |
| ""+end, |
| requestor.getEnds()); |
| } |
| public void testCorrectField1() throws JavaModelException { |
| CorrectionEngine engine = new CorrectionEngine(JavaCore.getOptions()); |
| CodeCorrectionTestsRequestor requestor = new CodeCorrectionTestsRequestor(); |
| ICompilationUnit cu= getCompilationUnit("CodeCorrection", "src", "", "CorrectField1.java"); |
| IMarker[] markers = getMarkers(cu); |
| assertTrue("should have one problem",markers.length == 1); |
| engine.computeCorrections(markers[0], null, 0, requestor); |
| |
| String src = cu.getSource(); |
| String error = "bar"; |
| int start = src.lastIndexOf(error); |
| int end = start + error.length(); |
| |
| assertEquals( |
| "should have one suggestion", |
| "bar0", |
| requestor.getSuggestions()); |
| assertEquals( |
| "a start of a suggestion is not correct", |
| ""+start, |
| requestor.getStarts()); |
| assertEquals( |
| "a end of a suggestion is not correct", |
| ""+end, |
| requestor.getEnds()); |
| } |
| public void testCorrectField2() throws JavaModelException { |
| CorrectionEngine engine = new CorrectionEngine(JavaCore.getOptions()); |
| CodeCorrectionTestsRequestor requestor = new CodeCorrectionTestsRequestor(); |
| ICompilationUnit cu= getCompilationUnit("CodeCorrection", "src", "", "CorrectField2.java"); |
| IMarker[] markers = getMarkers(cu); |
| assertTrue("should have one problem",markers.length == 1); |
| engine.computeCorrections(markers[0], null, 0, requestor); |
| |
| String src = cu.getSource(); |
| String error = "bar"; |
| int start = src.lastIndexOf(error); |
| int end = start + error.length(); |
| |
| assertEquals( |
| "should have one suggestion", |
| "bar0", |
| requestor.getSuggestions()); |
| assertEquals( |
| "a start of a suggestion is not correct", |
| ""+start, |
| requestor.getStarts()); |
| assertEquals( |
| "a end of a suggestion is not correct", |
| ""+end, |
| requestor.getEnds()); |
| } |
| public void testCorrectLocalVariable1() throws JavaModelException { |
| CorrectionEngine engine = new CorrectionEngine(JavaCore.getOptions()); |
| CodeCorrectionTestsRequestor requestor = new CodeCorrectionTestsRequestor(); |
| ICompilationUnit cu= getCompilationUnit("CodeCorrection", "src", "", "CorrectLocalVariable1.java"); |
| IMarker[] markers = getMarkers(cu); |
| assertTrue("should have one problem",markers.length == 1); |
| engine.computeCorrections(markers[0], null, 0, requestor); |
| |
| String src = cu.getSource(); |
| String error = "bar"; |
| int start = src.lastIndexOf(error); |
| int end = start + error.length(); |
| |
| assertEquals( |
| "should have one suggestion", |
| "bar0", |
| requestor.getSuggestions()); |
| assertEquals( |
| "a start of a suggestion is not correct", |
| ""+start, |
| requestor.getStarts()); |
| assertEquals( |
| "a end of a suggestion is not correct", |
| ""+end, |
| requestor.getEnds()); |
| } |
| public void testCorrectLocalVariable2() throws JavaModelException { |
| CorrectionEngine engine = new CorrectionEngine(JavaCore.getOptions()); |
| CodeCorrectionTestsRequestor requestor = new CodeCorrectionTestsRequestor(); |
| ICompilationUnit cu= getCompilationUnit("CodeCorrection", "src", "", "CorrectLocalVariable2.java"); |
| IMarker[] markers = getMarkers(cu); |
| assertTrue("should have one problem",markers.length == 1); |
| engine.computeCorrections(markers[0], null, 0, requestor); |
| |
| String src = cu.getSource(); |
| String error = "ba\\ud842\\udf9fr"; |
| int start = src.lastIndexOf(error); |
| int end = start + error.length(); |
| |
| assertEquals( |
| "should have one suggestion", |
| "ba\ud842\udf9fr0", |
| requestor.getSuggestions()); |
| assertEquals( |
| "a start of a suggestion is not correct", |
| ""+start, |
| requestor.getStarts()); |
| assertEquals( |
| "a end of a suggestion is not correct", |
| ""+end, |
| requestor.getEnds()); |
| } |
| public void testCorrectArgument1() throws JavaModelException { |
| CorrectionEngine engine = new CorrectionEngine(JavaCore.getOptions()); |
| CodeCorrectionTestsRequestor requestor = new CodeCorrectionTestsRequestor(); |
| ICompilationUnit cu= getCompilationUnit("CodeCorrection", "src", "", "CorrectArgument1.java"); |
| IMarker[] markers = getMarkers(cu); |
| assertTrue("should have one problem",markers.length == 1); |
| engine.computeCorrections(markers[0], null, 0, requestor); |
| |
| String src = cu.getSource(); |
| String error = "bar"; |
| int start = src.lastIndexOf(error); |
| int end = start + error.length(); |
| |
| assertEquals( |
| "should have one suggestion", |
| "bar0", |
| requestor.getSuggestions()); |
| assertEquals( |
| "a start of a suggestion is not correct", |
| ""+start, |
| requestor.getStarts()); |
| assertEquals( |
| "a end of a suggestion is not correct", |
| ""+end, |
| requestor.getEnds()); |
| } |
| public void testCorrectReturnType1() throws CoreException { |
| CorrectionEngine engine = new CorrectionEngine(JavaCore.getOptions()); |
| CodeCorrectionTestsRequestor requestor = new CodeCorrectionTestsRequestor(); |
| ICompilationUnit cu= getCompilationUnit("CodeCorrection", "src", "", "CorrectReturnType1.java"); |
| IMarker marker = getMarker(cu, "aaa.dddz cannot be resolved to a type"); |
| assertTrue("Marker not found", marker != null); |
| engine.computeCorrections(marker, null, 0, requestor); |
| |
| String src = cu.getSource(); |
| String error = "dddz"; |
| int start = src.indexOf(error); |
| int end = start + error.length(); |
| |
| assertEquals( |
| "should have two suggestions", |
| "ddd\n"+ |
| "ddd.eee", |
| requestor.getSuggestions()); |
| assertEquals( |
| "a start of a suggestion is not correct", |
| start+"\n"+ |
| start, |
| requestor.getStarts()); |
| assertEquals( |
| "a end of a suggestion is not correct", |
| end+"\n"+ |
| end, |
| requestor.getEnds()); |
| } |
| public void testCorrectReturnType2() throws CoreException { |
| CorrectionEngine engine = new CorrectionEngine(JavaCore.getOptions()); |
| CodeCorrectionTestsRequestor requestor = new CodeCorrectionTestsRequestor(); |
| ICompilationUnit cu= getCompilationUnit("CodeCorrection", "src", "", "CorrectReturnType2.java"); |
| IMarker marker = getMarker(cu, "aaa.ddd.AClassz cannot be resolved to a type"); |
| assertTrue("Marker not found", marker != null); |
| |
| engine.computeCorrections(marker, null, 0, requestor); |
| |
| String src = cu.getSource(); |
| String error = "AClassz"; |
| int start = src.indexOf(error); |
| int end = start + error.length(); |
| |
| assertEquals( |
| "should have two suggestions", |
| "AClass\n"+ |
| "AClass2", |
| requestor.getSuggestions()); |
| assertEquals( |
| "a start of a suggestion is not correct", |
| start+"\n"+ |
| start, |
| requestor.getStarts()); |
| assertEquals( |
| "a end of a suggestion is not correct", |
| end+"\n"+ |
| end, |
| requestor.getEnds()); |
| } |
| public void testWarningTokens() { |
| assertNull("assertIdentifier is a valid token for @SuppressWarnings", CorrectionEngine.getWarningToken(IProblem.UseAssertAsAnIdentifier)); |
| assertEquals("wrong token", "deprecation", CorrectionEngine.getWarningToken(IProblem.UsingDeprecatedConstructor)); |
| assertEquals("wrong token", "deprecation", CorrectionEngine.getWarningToken(IProblem.OverridingDeprecatedMethod)); |
| assertEquals("wrong token", "deprecation", CorrectionEngine.getWarningToken(IProblem.UsingDeprecatedType)); |
| assertEquals("wrong token", "deprecation", CorrectionEngine.getWarningToken(IProblem.UsingDeprecatedMethod)); |
| assertEquals("wrong token", "deprecation", CorrectionEngine.getWarningToken(IProblem.UsingDeprecatedField)); |
| assertEquals("wrong token", "boxing", CorrectionEngine.getWarningToken(IProblem.BoxingConversion)); |
| assertEquals("wrong token", "boxing", CorrectionEngine.getWarningToken(IProblem.UnboxingConversion)); |
| assertEquals("wrong token", "dep-ann", CorrectionEngine.getWarningToken(IProblem.FieldMissingDeprecatedAnnotation)); |
| assertEquals("wrong token", "dep-ann", CorrectionEngine.getWarningToken(IProblem.MethodMissingDeprecatedAnnotation)); |
| assertEquals("wrong token", "dep-ann", CorrectionEngine.getWarningToken(IProblem.TypeMissingDeprecatedAnnotation)); |
| assertEquals("wrong token", "finally", CorrectionEngine.getWarningToken(IProblem.FinallyMustCompleteNormally)); |
| assertEquals("wrong token", "hiding", CorrectionEngine.getWarningToken(IProblem.FieldHidingLocalVariable)); |
| assertEquals("wrong token", "hiding", CorrectionEngine.getWarningToken(IProblem.FieldHidingField)); |
| assertEquals("wrong token", "hiding", CorrectionEngine.getWarningToken(IProblem.LocalVariableHidingLocalVariable)); |
| assertEquals("wrong token", "hiding", CorrectionEngine.getWarningToken(IProblem.LocalVariableHidingField)); |
| assertEquals("wrong token", "hiding", CorrectionEngine.getWarningToken(IProblem.ArgumentHidingLocalVariable)); |
| assertEquals("wrong token", "hiding", CorrectionEngine.getWarningToken(IProblem.ArgumentHidingField)); |
| assertEquals("wrong token", "hiding", CorrectionEngine.getWarningToken(IProblem.MaskedCatch)); |
| assertEquals("wrong token", "hiding", CorrectionEngine.getWarningToken(IProblem.TypeParameterHidingType)); |
| assertEquals("wrong token", "nls", CorrectionEngine.getWarningToken(IProblem.NonExternalizedStringLiteral)); |
| assertEquals("wrong token", "incomplete-switch", CorrectionEngine.getWarningToken(IProblem.MissingEnumConstantCase)); |
| assertEquals("wrong token", "incomplete-switch", CorrectionEngine.getWarningToken(IProblem.MissingEnumConstantCaseDespiteDefault)); |
| assertEquals("wrong token", "incomplete-switch", CorrectionEngine.getWarningToken(IProblem.MissingEnumDefaultCase)); |
| assertEquals("wrong token", "incomplete-switch", CorrectionEngine.getWarningToken(IProblem.MissingDefaultCase)); |
| assertEquals("wrong token", "unused", CorrectionEngine.getWarningToken(IProblem.UnusedImport)); |
| assertEquals("wrong token", "unused", CorrectionEngine.getWarningToken(IProblem.LocalVariableIsNeverUsed)); |
| assertEquals("wrong token", "unused", CorrectionEngine.getWarningToken(IProblem.ArgumentIsNeverUsed)); |
| assertEquals("wrong token", "unused", CorrectionEngine.getWarningToken(IProblem.ExceptionParameterIsNeverUsed)); |
| assertEquals("wrong token", "unused", CorrectionEngine.getWarningToken(IProblem.UnusedPrivateConstructor)); |
| assertEquals("wrong token", "unused", CorrectionEngine.getWarningToken(IProblem.UnusedPrivateMethod)); |
| assertEquals("wrong token", "unused", CorrectionEngine.getWarningToken(IProblem.UnusedPrivateField)); |
| assertEquals("wrong token", "unused", CorrectionEngine.getWarningToken(IProblem.UnusedPrivateType)); |
| assertEquals("wrong token", "unused", CorrectionEngine.getWarningToken(IProblem.UnusedMethodDeclaredThrownException)); |
| assertEquals("wrong token", "unused", CorrectionEngine.getWarningToken(IProblem.UnusedConstructorDeclaredThrownException)); |
| assertEquals("wrong token", "static-access", CorrectionEngine.getWarningToken(IProblem.IndirectAccessToStaticMethod)); |
| assertEquals("wrong token", "static-access", CorrectionEngine.getWarningToken(IProblem.IndirectAccessToStaticField)); |
| assertEquals("wrong token", "static-access", CorrectionEngine.getWarningToken(IProblem.IndirectAccessToStaticType)); |
| assertEquals("wrong token", "static-access", CorrectionEngine.getWarningToken(IProblem.NonStaticAccessToStaticMethod)); |
| assertEquals("wrong token", "static-access", CorrectionEngine.getWarningToken(IProblem.NonStaticAccessToStaticField)); |
| assertEquals("wrong token", "synthetic-access", CorrectionEngine.getWarningToken(IProblem.NeedToEmulateFieldReadAccess)); |
| assertEquals("wrong token", "synthetic-access", CorrectionEngine.getWarningToken(IProblem.NeedToEmulateFieldWriteAccess)); |
| assertEquals("wrong token", "synthetic-access", CorrectionEngine.getWarningToken(IProblem.NeedToEmulateMethodAccess)); |
| assertEquals("wrong token", "synthetic-access", CorrectionEngine.getWarningToken(IProblem.NeedToEmulateConstructorAccess)); |
| assertEquals("wrong token", "unqualified-field-access", CorrectionEngine.getWarningToken(IProblem.UnqualifiedFieldAccess)); |
| assertEquals("wrong token", "unchecked", CorrectionEngine.getWarningToken(IProblem.UnsafeRawConstructorInvocation)); |
| assertEquals("wrong token", "unchecked", CorrectionEngine.getWarningToken(IProblem.UnsafeRawMethodInvocation)); |
| assertEquals("wrong token", "unchecked", CorrectionEngine.getWarningToken(IProblem.UnsafeTypeConversion)); |
| assertEquals("wrong token", "unchecked", CorrectionEngine.getWarningToken(IProblem.UnsafeRawFieldAssignment)); |
| assertEquals("wrong token", "unchecked", CorrectionEngine.getWarningToken(IProblem.UnsafeGenericCast)); |
| assertEquals("wrong token", "unchecked", CorrectionEngine.getWarningToken(IProblem.UnsafeReturnTypeOverride)); |
| assertEquals("wrong token", "unchecked", CorrectionEngine.getWarningToken(IProblem.UnsafeRawGenericMethodInvocation)); |
| assertEquals("wrong token", "unchecked", CorrectionEngine.getWarningToken(IProblem.UnsafeRawGenericConstructorInvocation)); |
| assertEquals("wrong token", "serial", CorrectionEngine.getWarningToken(IProblem.MissingSerialVersion)); |
| } |
| } |