/**
* 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 Mar 11, 2005
*
* @author Fabio Zadrozny
*/
package org.python.pydev.editor.codecompletion;
import junit.framework.TestCase;
import org.eclipse.jface.text.Document;
import org.python.pydev.core.ICodeCompletionASTManager.ImportInfo;
import org.python.pydev.core.docutils.ImportsSelection;
/**
* @author Fabio Zadrozny
*/
public class PyCodeCompletionTest extends TestCase {
public static void main(String[] args) {
junit.textui.TestRunner.run(PyCodeCompletionTest.class);
}
IPyCodeCompletion completion;
public void doTest(String s, String expected) {
Document doc = new Document(s);
int length = s.length();
ImportInfo importsTipperStr = ImportsSelection.getImportsTipperStr(doc, length);
String tipperStr = importsTipperStr.importsTipperStr;
assertEquals(expected, tipperStr);
if (tipperStr.length() > 0) {
assertEquals(s.indexOf("from") != -1, importsTipperStr.hasFromSubstring);
assertEquals(s.indexOf("import") != -1, importsTipperStr.hasImportSubstring);
}
}
public void testIt() {
completion = new PyCodeCompletion();
doTest("from datetime import foo,\\\nbar\n", ""); //no \ in the prev line
doTest("from datetime import (foo\nbar)\n", ""); //not actually an import (we're already after it)
doTest("from datetime import foo\n", ""); //not actually an import (we're already in another line)
doTest("from datetime import (\n ", "datetime");
doTest("from datetime import (\nbar, \n", "datetime");
doTest("from datetime import foo,\\\nbar,\\\n", "datetime");
doTest("from datetime import (\n, ", "datetime");
doTest("from . import unittest , ", ".");
doTest("from datetime import datetime, date, MINYEAR,", "datetime");
doTest("from testl", " ");
doTest("from .", ".");
doTest("from ..", "..");
doTest("import unittest.bar.f, os.path, sy", " ");
doTest("import unittest.bar.f, a.", "a");
doTest("import unittest.bar.f, ", " ");
doTest("import unittest.", "unittest");
doTest("import unittest", " ");
doTest("import unittest.bar.f", "unittest.bar");
doTest("from .. import ", "..");
doTest("from ..bar import ", "..bar");
doTest("from .. import unittest , ", "..");
doTest(" from datetime import datetime, date, MINYEAR,", "datetime");
doTest("no from datetime import datetime, date, MINYEAR,", "");
doTest("from datetime.datetime import ", "datetime.datetime");
doTest(" from datetime.datetime import ", "datetime.datetime");
doTest("from testlib import unittest , ", "testlib");
doTest(" from testlib import unittest , ", "testlib");
doTest("from datetime.datetime import to", "datetime.datetime");
doTest(" from datetime.datetime import to", "datetime.datetime");
doTest("from this space", "");
doTest("from ", " ");
doTest("nothere", "");
doTest("from i import y\n\na=10", "");
doTest("from i import (y)\n\na=10", "");
}
}