/**
* Copyright (c) 2005-2012 by Appcelerator, Inc. All Rights Reserved.
* Licensed under the terms of the Eclipse Public License (EPL).
* Please see the license.txt included with this distribution for details.
* Any modifications to this file must keep this entire header intact.
*/
/*
* Created on 24/09/2005
*/
package com.python.pydev.analysis.ctrl_1;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.jface.text.Document;
import org.eclipse.jface.text.contentassist.ICompletionProposal;
import org.python.pydev.core.docutils.PySelection;
import org.python.pydev.editor.actions.PyFormatStd.FormatStd;
import org.python.pydev.editor.codefolding.MarkerAnnotationAndPosition;
import com.python.pydev.analysis.AnalysisPreferencesStub;
import com.python.pydev.analysis.IAnalysisPreferences;
import com.python.pydev.analysis.additionalinfo.AdditionalInfoTestsBase;
public class IgnoreErrorFixParticipantTest extends AdditionalInfoTestsBase {
private IgnoreErrorParticipant participant;
private AnalysisPreferencesStub prefs;
private int start;
private int end;
private int type;
private MarkerAnnotationAndPosition marker;
private String s;
private PySelection ps;
private String line;
private int offset;
private ArrayList<ICompletionProposal> props;
private FormatStd format;
public static void main(String[] args) {
try {
IgnoreErrorFixParticipantTest test = new IgnoreErrorFixParticipantTest();
test.setUp();
test.testFix5();
test.tearDown();
System.out.println("finished");
junit.textui.TestRunner.run(IgnoreErrorFixParticipantTest.class);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void setUp() throws Exception {
super.setUp();
format = new FormatStd();
format.spacesBeforeComment = 2;
participant = new IgnoreErrorParticipant(format);
prefs = new AnalysisPreferencesStub();
props = new ArrayList<ICompletionProposal>();
}
public void testFix() throws Exception {
start = 6;
end = 13;
type = IAnalysisPreferences.TYPE_UNDEFINED_VARIABLE;
marker = createMarkerStub(start, end, type);
s = "print testlib";
ps = new PySelection(new Document(s));
line = s;
offset = s.length();
participant.addProps(marker, prefs, line, ps, offset, nature, null, props);
printProps(1, props);
assertEquals("UndefinedVariable", props.get(0).getDisplayString());
props.get(0).apply(ps.getDoc());
assertEquals("print testlib #@UndefinedVariable", ps.getDoc().get());
}
public void testFix2() throws Exception {
start = 6;
end = 13;
type = IAnalysisPreferences.TYPE_UNDEFINED_VARIABLE;
marker = createMarkerStub(start, end, type);
s = "print testlib #comment";
ps = new PySelection(new Document(s));
line = s;
offset = s.length();
participant.addProps(marker, prefs, line, ps, offset, nature, null, props);
printProps(1, props);
assertEquals("UndefinedVariable", props.get(0).getDisplayString());
props.get(0).apply(ps.getDoc());
assertEquals("print testlib #comment @UndefinedVariable", ps.getDoc().get());
}
public void testFix3() throws Exception {
start = 6;
end = 13;
type = IAnalysisPreferences.TYPE_UNDEFINED_VARIABLE;
marker = createMarkerStub(start, end, type);
s = "print testlib #comment "; //2 spaces at end
ps = new PySelection(new Document(s));
line = s;
offset = s.length();
participant.addProps(marker, prefs, line, ps, offset, nature, null, props);
printProps(1, props);
assertEquals("UndefinedVariable", props.get(0).getDisplayString());
props.get(0).apply(ps.getDoc());
assertEquals("print testlib #comment @UndefinedVariable", ps.getDoc().get());
}
public void testFix4() throws Exception {
start = 0;
end = 0;
type = IAnalysisPreferences.TYPE_UNDEFINED_VARIABLE;
marker = createMarkerStub(start, end, type);
s = ""; //empty doc
ps = new PySelection(new Document(s));
line = s;
offset = s.length();
participant.addProps(marker, prefs, line, ps, offset, nature, null, props);
printProps(1, props);
assertEquals("UndefinedVariable", props.get(0).getDisplayString());
props.get(0).apply(ps.getDoc());
assertEquals("#@UndefinedVariable", ps.getDoc().get());
}
public void testFix5() throws Exception {
start = 0;
end = 0;
type = IAnalysisPreferences.TYPE_UNDEFINED_VARIABLE;
marker = createMarkerStub(start, end, type);
s = " "; //only one space in doc
ps = new PySelection(new Document(s));
line = s;
offset = s.length();
participant.addProps(marker, prefs, line, ps, offset, nature, null, props);
printProps(1, props);
assertEquals("UndefinedVariable", props.get(0).getDisplayString());
props.get(0).apply(ps.getDoc());
assertEquals(" #@UndefinedVariable", ps.getDoc().get());
}
private void printProps(int i, List<ICompletionProposal> props) {
if (props.size() != i) {
for (ICompletionProposal proposal : props) {
System.out.println(proposal.getDisplayString());
}
}
assertEquals(i, props.size());
}
}