/**
* 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.
*/
/*
* Created on Feb 21, 2005
*
* @author Fabio Zadrozny
*/
package org.python.pydev.editor.actions;
import org.eclipse.jface.text.Document;
import org.python.pydev.ui.importsconf.ImportsPreferencesPage;
import junit.framework.TestCase;
/**
* @author Fabio Zadrozny
*/
public class PyOrganizeImportsTest extends TestCase {
public static void main(String[] args) {
try {
PyOrganizeImportsTest test = new PyOrganizeImportsTest();
test.setUp();
test.testPerform11();
test.tearDown();
junit.textui.TestRunner.run(PyOrganizeImportsTest.class);
} catch (Throwable e) {
e.printStackTrace();
}
}
/*
* @see TestCase#setUp()
*/
protected void setUp() throws Exception {
super.setUp();
ImportsPreferencesPage.groupImportsForTests = false;
}
/*
* @see TestCase#tearDown()
*/
protected void tearDown() throws Exception {
super.tearDown();
ImportsPreferencesPage.groupImportsForTests = true; //default
}
public void testPerform() {
String d = "" +
"import b\n" +
"import a\n" +
"\n" +
"from a import c\n" +
"from b import d\n"
+
"from a import b";
Document doc = new Document(d);
PyOrganizeImports.performArrangeImports(doc, "\n", " ");
String result = "" +
"from a import b\n" +
"from a import c\n" +
"from b import d\n" +
"import a\n"
+
"import b\n" +
"\n";
assertEquals(result, doc.get());
}
public void testPerformWithGrouping() {
ImportsPreferencesPage.groupImportsForTests = true;
String d = "" +
"import b\n" +
"import a\n" +
"\n" +
"from a import c\n" +
"from b import d\n"
+
"from a import b";
Document doc = new Document(d);
PyOrganizeImports.performArrangeImports(doc, "\n", " ");
String result = "" +
"from a import b, c\n" +
"from b import d\n" +
"import a\n" +
"import b\n" +
"\n";
assertEquals(result, doc.get());
}
public void testPerformWithGroupingAndWild() {
ImportsPreferencesPage.groupImportsForTests = true;
String d = "" +
"import b\n" +
"import a\n" +
"\n" +
"from a import *\n" +
"from b import d\n"
+
"from a import b";
Document doc = new Document(d);
PyOrganizeImports.performArrangeImports(doc, "\n", " ");
String result = "" +
"from a import *\n" +
"from b import d\n" +
"import a\n" +
"import b\n" +
"\n";
// System.out.println(doc.get());
assertEquals(result, doc.get());
}
public void testPerformWithGroupingAndComments() {
ImportsPreferencesPage.groupImportsForTests = true;
String d = "" +
"import b #comment\n" +
"import a\n" +
"\n" +
"from a import c #comment\n"
+
"from a import f #comment2\n" +
"from a import e\n" +
"from b import d\n" +
"from a import b";
Document doc = new Document(d);
PyOrganizeImports.performArrangeImports(doc, "\n", " ");
String result = "" +
"from a import b, e, c #comment\n" +
"from a import f #comment2\n" +
"from b import d\n"
+
"import a\n" +
"import b #comment\n" +
"\n";
assertEquals(result, doc.get());
}
public void testPerformWithGroupingWithAs() {
ImportsPreferencesPage.groupImportsForTests = true;
String d = "" +
"from a import c as d\n" +
"from a import f as g\n" +
"import e as g\n";
Document doc = new Document(d);
PyOrganizeImports.performArrangeImports(doc, "\n", " ");
String result = "" +
"from a import c as d, f as g\n" +
"import e as g\n" +
"";
// System.out.println(">>"+doc.get()+"<<");
assertEquals(result, doc.get());
}
public void testPerformGroupingWithWraps() {
ImportsPreferencesPage.groupImportsForTests = true;
String d = "" +
"from a import cccccccccccccccccccccccccccccccccccccccccccccccccc\n"
+ //50 * 'c'
"from a import eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee\n"
+
"from a import ffffffffffffffffffffffffffffffffffffffffffffffffff";
Document doc = new Document(d);
PyOrganizeImports.performArrangeImports(doc, "\n", " ");
String result = "" +
"from a import (cccccccccccccccccccccccccccccccccccccccccccccccccc, \n"
+
" eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee, \n"
+
" ffffffffffffffffffffffffffffffffffffffffffffffffff)\n";
// System.out.println(">>"+doc.get()+"<<");
assertEquals(result, doc.get());
}
public void testPerformGroupingWithWrapsLong() {
ImportsPreferencesPage.groupImportsForTests = true;
String d = ""
+
"from cccccccccccccccccccccccccccccccccccccccccccccccccc import eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee\n"
+
"from cccccccccccccccccccccccccccccccccccccccccccccccccc import ffffffffffffffffffffffffffffffffffffffffffffffffff";
Document doc = new Document(d);
PyOrganizeImports.performArrangeImports(doc, "\n", " ");
String result = "" +
"from cccccccccccccccccccccccccccccccccccccccccccccccccc import (\n"
+
" eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee, \n"
+
" ffffffffffffffffffffffffffffffffffffffffffffffffff)\n";
// System.out.println(">>"+doc.get()+"<<");
assertEquals(result, doc.get());
}
public void testPerformGroupingWithWraps3() {
ImportsPreferencesPage.groupImportsForTests = true;
String d = ""
+
"from a import cccccccccc\n"
+ //10 * 'c'
"from a import bbbbbbbbbb\n" +
"from a import aaaaaaaaaa\n" +
"from a import dddddddddd\n"
+
"from a import eeeeeeeeee\n" +
"from a import ffffffffff\n" +
"from a import gggggggggg\n"
+
"from a import hhhhhhhhhh\n" +
"";
Document doc = new Document(d);
PyOrganizeImports.performArrangeImports(doc, "\n", " ");
String result = "" +
"from a import (aaaaaaaaaa, bbbbbbbbbb, cccccccccc, dddddddddd, eeeeeeeeee, \n"
+
" ffffffffff, gggggggggg, hhhhhhhhhh)\n";
// System.out.println(">>"+doc.get()+"<<");
assertEquals(result, doc.get());
}
public void testPerformGroupingWithWraps2() {
ImportsPreferencesPage.groupImportsForTests = true;
String d = "" +
"from a import cccccccccccccccccccccccccccccccccccccccccccccccccc\n"
+ //50 * 'c'
"from a import eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee #comment 1\n"
+
"from a import ffffffffffffffffffffffffffffffffffffffffffffffffff #comment 2";
Document doc = new Document(d);
PyOrganizeImports.performArrangeImports(doc, "\n", " ");
String result = "" +
"from a import (cccccccccccccccccccccccccccccccccccccccccccccccccc, \n"
+
" eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee) #comment 1\n"
+
"from a import ffffffffffffffffffffffffffffffffffffffffffffffffff #comment 2\n";
// System.out.println(">>"+doc.get()+"<<");
assertEquals(result, doc.get());
}
public void testPerformGroupingWithWraps4() {
ImportsPreferencesPage.groupImportsForTests = true;
String d = ""
+
"from cccccccccccccccccccccccccccccccccccccccccccccccccc import eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee\n"; //50 * 'c'
Document doc = new Document(d);
PyOrganizeImports.performArrangeImports(doc, "\n", " ");
String result = "" +
"from cccccccccccccccccccccccccccccccccccccccccccccccccc import (\n"
+
" eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee)\n";
// System.out.println(">>"+doc.get()+"<<");
assertEquals(result, doc.get());
}
public void testPerformGroupingWithWraps5() {
ImportsPreferencesPage.groupImportsForTests = true;
String d = ""
+
"from cccccccccccccccccccccccccccccccccccccccccccccccccc \\\nimport eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee\n"; //50 * 'c'
Document doc = new Document(d);
PyOrganizeImports.performArrangeImports(doc, "\n", " ");
String result = "" +
"from cccccccccccccccccccccccccccccccccccccccccccccccccc import (\n"
+
" eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee)\n";
// System.out.println(">>"+doc.get()+"<<");
assertEquals(result, doc.get());
}
public void testPerform2() {
String header = "" +
"'''\n" +
"from fff import xxx #ignore\n" +
"import ggg #ignore\n"
+
"import aaa #ignore\n" +
"'''\n";
String d = "" + header +
"import b\n" +
"import a\n" +
"\n" +
"from a import c\n" +
"from b import d\n"
+
"from a import b";
Document doc = new Document(d);
PyOrganizeImports.performArrangeImports(doc, "\n", " ");
String result = "" + header +
"from a import b\n" +
"from a import c\n" +
"from b import d\n" +
"import a\n"
+
"import b\n" +
"\n";
assertEquals(result, doc.get());
}
public void testPerform3() {
String header = "" +
"'''\n" +
"from fff import xxx #ignore\n" +
"import ggg #ignore\n"
+
"import aaa #ignore'''\n";
String d = "" + header +
"import b\n" +
"import a\n" +
"\n" +
"from a import c\n" +
"from b import d\n"
+
"from a import b";
Document doc = new Document(d);
PyOrganizeImports.performArrangeImports(doc, "\n", " ");
String result = "" + header +
"from a import b\n" +
"from a import c\n" +
"from b import d\n" +
"import a\n"
+
"import b\n" +
"\n";
assertEquals(result, doc.get());
}
public void testPerform4() {
String header = "" +
"'''ignore'''\n" +
"from a import aaa\n";
String d = "" + header +
"import b\n" +
"import a\n" +
"\n" +
"from a import c\n" +
"from b import d\n"
+
"from a import b";
Document doc = new Document(d);
PyOrganizeImports.performArrangeImports(doc, "\n", " ");
String result = "" + header +
"from a import b\n" +
"from a import c\n" +
"from b import d\n" +
"import a\n"
+
"import b\n" +
"\n";
assertEquals(result, doc.get());
}
public void testPerform5() {
String d = "" +
"import sys\n" +
"from os import (pipe,\n" +
"path)\n" +
"import time\n";
Document doc = new Document(d);
PyOrganizeImports.performArrangeImports(doc, "\n", " ");
String result = "" +
"from os import (pipe,\n" +
"path)\n" +
"import sys\n" +
"import time\n";
assertEquals(result, doc.get());
}
public void testPerform7() {
String d = "" +
"import sys\n" +
"from ...os.path import pipe,\\\n" +
"path\n" +
"import time\n";
Document doc = new Document(d);
PyOrganizeImports.performArrangeImports(doc, "\n", " ");
String result = "" +
"from ...os.path import pipe,\\\n" +
"path\n" +
"import sys\n" +
"import time\n";
assertEquals(result, doc.get());
}
public void testPerform6() {
String d = "" +
"import sys #comment1\n" +
"import sys2 #comment2\n";
Document doc = new Document(d);
PyOrganizeImports.performArrangeImports(doc, "\n", " ");
assertEquals(d, doc.get());
}
public void testPerform8() {
String d = "" +
"from __future__ import with_statement\n" + //the __future__ imports must always come first
"from __a import b\n";
Document doc = new Document(d);
PyOrganizeImports.performArrangeImports(doc, "\n", " ");
assertEquals(d, doc.get());
}
public void testPerform9() {
ImportsPreferencesPage.groupImportsForTests = true;
String d = "" +
"from __future__ import division\n" + //the __future__ imports must always come first
"from .backends.common import NoSuchObject\n";
Document doc = new Document(d);
PyOrganizeImports.performArrangeImports(doc, "\n", " ");
assertEquals(d, doc.get());
}
public void testPerform10() {
ImportsPreferencesPage.groupImportsForTests = true;
String d = "" +
"from a import b\n" +
"from a import c ;something\n" +
"from a import c\n" +
"";
Document doc = new Document(d);
PyOrganizeImports.performArrangeImports(doc, "\n", " ");
String expected = "" +
"from a import b, c\n" +
"from a import c ;something\n" +
"";
assertEquals(expected, doc.get());
}
public void testPerform11() {
ImportsPreferencesPage.groupImportsForTests = true;
String d = "" +
"a = 10; from a import b\n" +
"from a import c ;something\n" +
"";
Document doc = new Document(d);
PyOrganizeImports.performArrangeImports(doc, "\n", " ");
assertEquals(d, doc.get());
}
public void testPerformSort() {
String s = "" +
"line4\n" +
"line1\n" +
"line3\n" + //end the selection
"line2\n";
String result = "" +
"line1\n" +
"line3\n" +
"line4\n" +
"line2\n"; //not changed
Document doc = new Document(s);
PyOrganizeImports.performSimpleSort(doc, "\n", 0, 2);
assertEquals(result, doc.get());
}
public void testPerformSort2() {
//should take into account that lines ending with \ may not be sorted
String s = "" +
"line4\\\n" +
"line1\n" +
"line3\n" + //end the selection
"line2\n";
String result = "" +
"line2\n" +
"line3\n" +
"line4\\\n" +
"line1\n";
Document doc = new Document(s);
PyOrganizeImports.performSimpleSort(doc, "\n", 0, 3);
assertEquals(result, doc.get());
}
}