/**
* Copyright (c) 2005-2011 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.
*/
package com.python.pydev.analysis;
import org.eclipse.jface.text.Document;
import org.eclipse.jface.text.contentassist.IContextInformation;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import junit.framework.TestCase;
public class CtxInsensitiveImportComplProposalTest extends TestCase {
public static void main(String[] args) {
try {
CtxInsensitiveImportComplProposalTest analyzer2 = new CtxInsensitiveImportComplProposalTest();
analyzer2.setUp();
analyzer2.testApplyLocal9();
analyzer2.tearDown();
System.out.println("finished");
junit.textui.TestRunner.run(CtxInsensitiveImportComplProposalTest.class);
System.out.println("finished all");
} catch (Throwable e) {
e.printStackTrace();
}
System.exit(0);
}
protected void setUp() throws Exception {
super.setUp();
}
protected void tearDown() throws Exception {
super.tearDown();
}
public void testCompletionDontAddFromImport() throws Exception {
Document doc = new Document("from XXX import YYY\n");
String replacementString = "YYY";
int replacementOffset = doc.getLength();
int cursorPosition = doc.getLength();
int replacementLength = 0;
String realImportRep = "from XXX import YYY";
int priority = 0;
String additionalProposalInfo = null;
IContextInformation contextInformation = null;
String displayString = "Import YYY (from XXX)";
Image image = null;
CtxInsensitiveImportComplProposal prop = new CtxInsensitiveImportComplProposal(replacementString,
replacementOffset, replacementLength, cursorPosition, image, displayString, contextInformation,
additionalProposalInfo, priority, realImportRep);
prop.indentString = "\t";
prop.apply(doc, '\n', 0, doc.getLength());
assertEquals("from XXX import YYY\nYYY", doc.get());
}
public void testCompletionGroupFromImport() throws Exception {
Document doc = new Document("from XXX import YYY\n");
CtxInsensitiveImportComplProposal prop = new CtxInsensitiveImportComplProposal("BBB", doc.getLength(), 0,
doc.getLength(), null, "Import BBB (from XXX)", null, null, 0, "from XXX import BBB");
prop.indentString = "\t";
prop.apply(doc, '\n', 0, doc.getLength());
assertEquals("from XXX import YYY, BBB\nBBB", doc.get());
}
public void testCompletionGroupFromImport2() throws Exception {
Document doc = new Document("from XXX import (YYY, ZZZ)\n");
CtxInsensitiveImportComplProposal prop = new CtxInsensitiveImportComplProposal("BBB", doc.getLength(), 0,
doc.getLength(), null, "Import BBB (from XXX)", null, null, 0, "from XXX import BBB");
prop.indentString = "\t";
prop.apply(doc, '\n', 0, doc.getLength());
assertEquals("from XXX import (YYY, ZZZ, BBB)\nBBB", doc.get());
}
public void testCompletionGroupFromImport3() throws Exception {
//yeap, lot's of spaces there (more than 80 to test it)
Document doc = new Document(
"from XXX import (YYY, ZZZ)\n");
CtxInsensitiveImportComplProposal prop = new CtxInsensitiveImportComplProposal("BBB", doc.getLength(), 0,
doc.getLength(), null, "Import BBB (from XXX)", null, null, 0, "from XXX import BBB");
prop.indentString = "\t";
prop.apply(doc, '\n', 0, doc.getLength());
assertEquals(
"from XXX import (YYY, ZZZ,\n\tBBB)\nBBB",
doc.get());
}
public void testCompletionGroupFromImport4() throws Exception {
//yeap, lot's of spaces there (more than 80 to test it)
Document doc = new Document(
"from XXX import YYY, ZZZ\n");
CtxInsensitiveImportComplProposal prop = new CtxInsensitiveImportComplProposal("BBB", doc.getLength(), 0,
doc.getLength(), null, "Import BBB (from XXX)", null, null, 0, "from XXX import BBB");
prop.indentString = "\t";
prop.apply(doc, '\n', 0, doc.getLength());
assertEquals(
"from XXX import YYY, ZZZ,\\\n\tBBB\nBBB",
doc.get());
}
public void testCompletionGroupFromImport5() throws Exception {
//yeap, lot's of spaces there (more than 80 to test it)
Document doc = new Document(
"from XXX import WWW, RRR # comment\n"
+
"from XXX import YYY, ZZZ\n");
CtxInsensitiveImportComplProposal prop = new CtxInsensitiveImportComplProposal("BBB", doc.getLength(), 0,
doc.getLength(), null, "Import BBB (from XXX)", null, null, 0, "from XXX import BBB");
prop.indentString = "\t";
prop.apply(doc, '\n', 0, doc.getLength());
// System.out.println(">>"+doc.get()+"<<");
assertEquals(
"from XXX import WWW, RRR # comment\n"
+
"from XXX import YYY, ZZZ,\\\n\tBBB\nBBB",
doc.get());
}
public void testCompletionFutureComesFirst() throws Exception {
Document doc = new Document("from a import b\n");
String replacementString = "with_statement";
int replacementOffset = doc.getLength();
int cursorPosition = doc.getLength();
int replacementLength = 0;
String realImportRep = "from __future__ import with_statement";
int priority = 0;
String additionalProposalInfo = null;
IContextInformation contextInformation = null;
String displayString = "Import with_statement (from __future__)";
Image image = null;
CtxInsensitiveImportComplProposal prop = new CtxInsensitiveImportComplProposal(replacementString,
replacementOffset, replacementLength, cursorPosition, image, displayString, contextInformation,
additionalProposalInfo, priority, realImportRep);
prop.indentString = "\t";
prop.apply(doc, '\n', 0, doc.getLength());
assertEquals("from __future__ import with_statement\nfrom a import b\nwith", doc.get());
}
public void testApplyNonLocal() throws Exception {
Document doc = new Document("from XXX import YYY\n" +
"def m1():\n" +
" ");
CtxInsensitiveImportComplProposal prop = new CtxInsensitiveImportComplProposal("BBB", doc.getLength(), 0,
doc.getLength(), null, "Import BBB (from XXX)", null, null, 0, "from XXX import BBB");
prop.indentString = "\t";
prop.apply(doc, '\n', 0, doc.getLength());
assertEquals("" +
"from XXX import YYY, BBB\n" +
"def m1():\n" +
" BBB" +
"", doc.get());
}
public void testApplyLocal() throws Exception {
Document doc = new Document("from XXX import YYY\n" +
"def m1():\n" +
" ");
CtxInsensitiveImportComplProposal prop = new CtxInsensitiveImportComplProposal("BBB", doc.getLength(), 0,
doc.getLength(), null, "Import BBB (from XXX)", null, null, 0, "from XXX import BBB");
prop.setAddLocalImport(true);
prop.indentString = "\t";
prop.apply(doc, '\n', 0, doc.getLength());
assertEquals("" +
"from XXX import YYY\n" +
"def m1():\n" +
" from XXX import BBB\n" +
" BBB" +
"",
doc.get());
}
public void testApplyLocal2() throws Exception {
Document doc = new Document("def m1():\n" +
"\tdef another():\n" +
"\t\t" +
"");
CtxInsensitiveImportComplProposal prop = new CtxInsensitiveImportComplProposal("BBB", doc.getLength(), 0,
doc.getLength(), null, "Import BBB (from XXX)", null, null, 0, "from XXX import BBB");
prop.setAddLocalImport(true);
prop.indentString = "\t";
prop.apply(doc, '\n', 0, doc.getLength());
assertEquals("" +
"def m1():\n" +
"\tdef another():\n" +
"\t\tfrom XXX import BBB\n" +
"\t\tBBB" +
"",
doc.get());
}
public void testApplyLocal3() throws Exception {
Document doc = new Document("def m1():\n" +
"\tdef another():\n" +
"\t\tcall(\n" +
"\t\t\tra, " +
"");
CtxInsensitiveImportComplProposal prop = new CtxInsensitiveImportComplProposal("BBB", doc.getLength(), 0,
doc.getLength(), null, "Import BBB (from XXX)", null, null, 0, "from XXX import BBB");
prop.setAddLocalImport(true);
prop.indentString = "\t";
prop.apply(doc, '\n', 0, doc.getLength());
assertEquals("" +
"def m1():\n" +
"\tdef another():\n" +
"\t\tfrom XXX import BBB\n" +
"\t\tcall(\n"
+
"\t\t\tra, BBB" +
"", doc.get());
}
public void testApplyLocal4() throws Exception {
Document doc = new Document("\n");
CtxInsensitiveImportComplProposal prop = new CtxInsensitiveImportComplProposal("BBB", doc.getLength(), 0,
doc.getLength(), null, "Import BBB (from XXX)", null, null, 0, "from XXX import BBB");
prop.setAddLocalImport(true);
prop.indentString = "\t";
prop.apply(doc, '\n', 0, doc.getLength());
assertEquals("" +
"from XXX import BBB\n" +
"\nBBB" +
"", doc.get().replace("\r\n", "\n").replace('\r', '\n'));
}
public void testApplyLocal5() throws Exception {
Document doc = new Document("class Bar(");
CtxInsensitiveImportComplProposal prop = new CtxInsensitiveImportComplProposal("sys", doc.getLength(), 0,
doc.getLength(), null, "Import sys", null, null, 0, "import sys");
prop.setAddLocalImport(true);
prop.indentString = "\t";
prop.apply(doc, '\n', 0, doc.getLength());
assertEquals("" +
"import sys\n" +
"class Bar(sys" +
"", doc.get().replace("\r\n", "\n").replace('\r', '\n'));
}
public void testApplyLocal6() throws Exception {
Document doc = new Document("\n\nclass Bar(");
CtxInsensitiveImportComplProposal prop = new CtxInsensitiveImportComplProposal("sys", doc.getLength(), 0,
doc.getLength(), null, "Import sys", null, null, 0, "import sys");
prop.setAddLocalImport(true);
prop.indentString = "\t";
prop.apply(doc, '\n', 0, doc.getLength());
assertEquals("" +
"import sys\n" +
"\n" +
"\nclass Bar(sys" +
"",
doc.get().replace("\r\n", "\n").replace('\r', '\n'));
}
public void testApplyLocal7() throws Exception {
Document doc = new Document("\n\nclass Bar():\n\n s");
CtxInsensitiveImportComplProposal prop = new CtxInsensitiveImportComplProposal("sys", doc.getLength(), 0,
doc.getLength(), null, "Import sys", null, null, 0, "import sys");
prop.setAddLocalImport(true);
prop.indentString = "\t";
prop.apply(doc, '\n', 0, doc.getLength());
assertEquals("\n\nclass Bar():\n\n import sys\n ssys", doc.get().replace("\r\n", "\n")
.replace('\r', '\n'));
}
public void testApplyLocal8() throws Exception {
Document doc = new Document("\n\nclass Bar():\n\n s\n s");
CtxInsensitiveImportComplProposal prop = new CtxInsensitiveImportComplProposal("sys", doc.getLength(), 0,
doc.getLength(), null, "Import sys", null, null, 0, "import sys");
prop.setAddLocalImport(true);
prop.indentString = "\t";
prop.apply(doc, '\n', 0, doc.getLength());
assertEquals("\n\nclass Bar():\n\n s\n import sys\n ssys",
doc.get().replace("\r\n", "\n").replace('\r', '\n'));
}
public void testApplyLocal9() throws Exception {
String initial = "" +
"if True:\n" +
" pass\n" +
"\n" +
"eggs = D" +
"";
Document doc = new Document(initial);
CtxInsensitiveImportComplProposal prop = new CtxInsensitiveImportComplProposal("Decimal", doc.getLength(), 0,
doc.getLength(), null, "Import Decimal", null, null, 0, "import Decimal");
prop.setAddLocalImport(true);
prop.indentString = " ";
prop.apply(doc, '\n', SWT.SHIFT, doc.getLength());
assertEquals("" +
"import Decimal\n" +
"if True:\n" +
" pass\n" +
"\n" +
"eggs = DDecimal" +
"", doc.get()
.replace("\r\n", "\n").replace('\r', '\n'));
}
public void testApplyLocal10() throws Exception {
String initial = "" +
"def m1():\n" +
" if True:\n" +
" pass\n" +
" \n" +
" eggs = D" +
"";
Document doc = new Document(initial);
CtxInsensitiveImportComplProposal prop = new CtxInsensitiveImportComplProposal("Decimal", doc.getLength(), 0,
doc.getLength(), null, "Import Decimal", null, null, 0, "import Decimal");
prop.setAddLocalImport(true);
prop.indentString = " ";
prop.apply(doc, '\n', SWT.SHIFT, doc.getLength());
assertEquals("" +
"def m1():\n" +
" if True:\n" +
" pass\n" +
" \n" +
" import Decimal\n"
+
" eggs = DDecimal" +
"", doc.get().replace("\r\n", "\n").replace('\r', '\n'));
}
}