📄 pyautoindentstrategytest.java
字号:
String expected = "\n" +
" ";
assertEquals(expected, docCmd.text);
//test regular
doc = " a = 2";
docCmd = new DocCmd(doc.length(), 0, "\n");
strategy.customizeDocumentCommand(new Document(doc), docCmd);
expected = "\n" +
" ";
assertEquals(expected, docCmd.text);
//test after [ a,\n
doc = "m = [a,";
docCmd = new DocCmd(doc.length(), 0, "\n");
strategy.customizeDocumentCommand(new Document(doc), docCmd);
expected = "\n" +
" ";
assertEquals(expected, docCmd.text);
}
public void testAfterClosePar1() {
strategy.setIndentPrefs(new TestIndentPrefs(true, 4));
String doc = "m = [a,";
DocCmd docCmd = new DocCmd(doc.length(), 0, "\n");
strategy.customizeDocumentCommand(new Document(doc), docCmd);
String expected = "\n" +
" ";
assertEquals(expected, docCmd.text);
}
public void testAfterCloseParOnlyIndent() {
final TestIndentPrefs prefs = new TestIndentPrefs(true, 4);
strategy.setIndentPrefs(prefs);
prefs.indentToParLevel = false;
String doc = "m = [a,";
DocCmd docCmd = new DocCmd(doc.length(), 0, "\n");
strategy.customizeDocumentCommand(new Document(doc), docCmd);
String expected = "\n" +
" ";
assertEquals(expected, docCmd.text);
}
public void testAfterCloseParOnlyIndent2() {
final TestIndentPrefs prefs = new TestIndentPrefs(true, 4);
strategy.setIndentPrefs(prefs);
prefs.indentToParLevel = false;
String doc = "" +
"class A:\n" +
" def m1(a,";
DocCmd docCmd = new DocCmd(doc.length(), 0, "\n");
strategy.customizeDocumentCommand(new Document(doc), docCmd);
String expected = "\n" +
" ";
assertEquals(expected, docCmd.text);
}
public void testAfterClosePar2() {
strategy.setIndentPrefs(new TestIndentPrefs(true, 4));
String doc = "m = [a,\n" +
" b,";
DocCmd docCmd = new DocCmd(doc.length(), 0, "\n");
strategy.customizeDocumentCommand(new Document(doc), docCmd);
String expected = "\n" +
" ";
assertEquals(expected, docCmd.text);
}
public void testAfterClosePar() {
strategy.setIndentPrefs(new TestIndentPrefs(true, 4));
String doc = "m = [a, (#comment";
DocCmd docCmd = new DocCmd(doc.length(), 0, "\n");
strategy.customizeDocumentCommand(new Document(doc), docCmd);
String expected = "\n" +
" ";
assertEquals(expected, docCmd.text);
// doc = "m = [a, otherCall(), ]";
// docCmd = new DocCmd(doc.length()-1, 0, "\n"); //right before the last ']'
// strategy.customizeDocumentCommand(new Document(doc), docCmd);
// expected = "\n" +
// " ";
// assertEquals(expected, docCmd.text);
}
public void testIndent2() {
strategy.setIndentPrefs(new TestIndentPrefs(true, 4));
String doc = "m = [a, otherCall(), ";
DocCmd docCmd = new DocCmd(doc.length(), 0, "\n");
// strategy.customizeDocumentCommand(new Document(doc), docCmd);
String expected = "\n" +
" ";
// assertEquals(expected, docCmd.text);
//
// doc = "m = [a, otherCall(), ]";
// docCmd = new DocCmd(doc.length()-1, 0, "\n"); //right before the last ']'
// strategy.customizeDocumentCommand(new Document(doc), docCmd);
// expected = "\n" +
// " ";
// assertEquals(expected, docCmd.text);
doc = "def m2(self):\n"+
" m1(a, b(), )";
docCmd = new DocCmd(doc.length()-1, 0, "\n"); //right before the last ')'
strategy.customizeDocumentCommand(new Document(doc), docCmd);
expected = "\n" +
" ";
assertEquals(expected, docCmd.text);
}
public void testIndent3() {
strategy.setIndentPrefs(new TestIndentPrefs(true, 4));
String doc = ""+
"properties.create(a = newClass(),";
DocCmd docCmd = new DocCmd(doc.length(), 0, "\n");
strategy.customizeDocumentCommand(new Document(doc), docCmd);
String expected = "\n"+
" ";
assertEquals(expected, docCmd.text);
}
public void testIndent3a() {
strategy.setIndentPrefs(new TestIndentPrefs(true, 4));
String doc = ""+
"properties.create(a = newClass(),\n" +
" b = newClass(),"; //don't indent after the '(' in this line, but to the default one
DocCmd docCmd = new DocCmd(doc.length(), 0, "\n");
strategy.customizeDocumentCommand(new Document(doc), docCmd);
String expected = "\n"+
" ";
assertEquals(expected, docCmd.text);
}
public void testIndent4() { //even if it does not end with ',' we should indent in parenthesis
strategy.setIndentPrefs(new TestIndentPrefs(true, 4));
String doc = ""+
"properties.create(a = newClass(),\n" +
" b = newClass("; //don't indent after the '(' in this line, but to the default one
DocCmd docCmd = new DocCmd(doc.length(), 0, "\n");
strategy.customizeDocumentCommand(new Document(doc), docCmd);
String expected = "\n"+
" ";
assertEquals(expected, docCmd.text);
}
public void testDedent5() {
strategy.setIndentPrefs(new TestIndentPrefs(true, 4));
String doc = ""+
"properties.create(a = newClass(),\n" +
" b = newClass(\n" +
" )"; //go to the last indentation
DocCmd docCmd = new DocCmd(doc.length(), 0, "\n");
strategy.customizeDocumentCommand(new Document(doc), docCmd);
String expected = "\n"+
" ";
assertEquals(expected, docCmd.text);
}
public void testNoSmartIndent() {
TestIndentPrefs prefs = new TestIndentPrefs(false, 4, true);
prefs.smartIndentAfterPar = false;
strategy.setIndentPrefs(prefs);
String doc = null;
DocCmd docCmd = null;
String expected = null;
//test after [ a,\n
doc = "m = [a,";
docCmd = new DocCmd(doc.length(), 0, "\n");
strategy.customizeDocumentCommand(new Document(doc), docCmd);
expected = "\n";
assertEquals(expected, docCmd.text);
//test after \t[ a,\n
doc = "\tm = [a,";
docCmd = new DocCmd(doc.length(), 0, "\n");
strategy.customizeDocumentCommand(new Document(doc), docCmd);
expected = "\n" +
"\t";
assertEquals(expected, docCmd.text);
//test after \t[ a,\n
doc = "\tm = [a, ";
docCmd = new DocCmd(doc.length(), 0, "\n");
strategy.customizeDocumentCommand(new Document(doc), docCmd);
expected = "\n" +
"\t";
assertEquals(expected, docCmd.text);
}
public void testIndentTabs() {
//test after class xxx:\n
strategy.setIndentPrefs(new TestIndentPrefs(false, 4));
String doc = "class c:";
DocCmd docCmd = new DocCmd(doc.length(), 0, "\n");
strategy.customizeDocumentCommand(new Document(doc), docCmd);
String expected = "\n" +
"\t";
assertEquals(expected, docCmd.text);
//test after class xxx: \n
strategy.setIndentPrefs(new TestIndentPrefs(false, 4));
doc = "class c: ";
docCmd = new DocCmd(doc.length(), 0, "\n");
strategy.customizeDocumentCommand(new Document(doc), docCmd);
expected = "\n" +
"\t";
assertEquals(expected, docCmd.text);
//test regular
doc = "\ta = 2";
docCmd = new DocCmd(doc.length(), 0, "\n");
strategy.customizeDocumentCommand(new Document(doc), docCmd);
expected = "\n" +
"\t";
assertEquals(expected, docCmd.text);
//test after [ a,\n
doc = "m = [a,";
docCmd = new DocCmd(doc.length(), 0, "\n");
strategy.customizeDocumentCommand(new Document(doc), docCmd);
expected = "\n" +
"\t";
assertEquals(expected, docCmd.text);
//test after \t[ a,\n
doc = "\tm = [a,";
docCmd = new DocCmd(doc.length(), 0, "\n");
strategy.customizeDocumentCommand(new Document(doc), docCmd);
expected = "\n" +
"\t\t";
assertEquals(expected, docCmd.text);
//test after \t[ a,\n
doc = "\tm = [a, ";
docCmd = new DocCmd(doc.length(), 0, "\n");
strategy.customizeDocumentCommand(new Document(doc), docCmd);
expected = "\n" +
"\t\t";
assertEquals(expected, docCmd.text);
}
public void testAutoClose() {
strategy.setIndentPrefs(new TestIndentPrefs(false, 4, true));
String doc = "class c(object): ";
DocCmd docCmd = new DocCmd(doc.length(), 0, "[");
strategy.customizeDocumentCommand(new Document(doc), docCmd);
String expected = "[]";
assertEquals(expected, docCmd.text);
}
public void testAutoSelf() {
TestIndentPrefs testIndentPrefs = new TestIndentPrefs(false, 4, true);
testIndentPrefs.autoAddSelf = false;
strategy.setIndentPrefs(testIndentPrefs);
String doc = null;
DocCmd docCmd = null;
String expected = null;
doc = "class c:\n" +
" def met";
docCmd = new DocCmd(doc.length(), 0, "(");
strategy.customizeDocumentCommand(new Document(doc), docCmd);
expected = "():";
assertEquals(expected, docCmd.text);
}
public void testAutoCls() {
TestIndentPrefs testIndentPrefs = new TestIndentPrefs(false, 4, true);
strategy.setIndentPrefs(testIndentPrefs);
String doc = null;
DocCmd docCmd = null;
String expected = null;
doc =
"class c:\n" +
" @classmethod\n" +
" def met";
docCmd = new DocCmd(doc.length(), 0, "(");
strategy.customizeDocumentCommand(new Document(doc), docCmd);
expected = "(cls):";
assertEquals(expected, docCmd.text);
}
public void testNoAutoSelf() {
TestIndentPrefs testIndentPrefs = new TestIndentPrefs(false, 4, true);
strategy.setIndentPrefs(testIndentPrefs);
String doc = null;
DocCmd docCmd = null;
String expected = null;
doc =
"class c:\n" +
" def met(self):\n" +
" def inner";
docCmd = new DocCmd(doc.length(), 0, "(");
strategy.customizeDocumentCommand(new Document(doc), docCmd);
expected = "():";
assertEquals(expected, docCmd.text);
}
public void testNoAutoSelf2() {
TestIndentPrefs testIndentPrefs = new TestIndentPrefs(false, 4, true);
strategy.setIndentPrefs(testIndentPrefs);
String doc = null;
DocCmd docCmd = null;
String expected = null;
doc =
"class c:\n" +
" @staticmethod\n" +
" def met";
docCmd = new DocCmd(doc.length(), 0, "(");
strategy.customizeDocumentCommand(new Document(doc), docCmd);
expected = "():";
assertEquals(expected, docCmd.text);
}
/**
* Tests automatically adding/replacing brackets, colons, and parentheses.
* @see PyAutoIndentStrategy
*/
public void testAutoPar() {
strategy.setIndentPrefs(new TestIndentPrefs(false, 4, true));
String doc = "class c";
DocCmd docCmd = new DocCmd(doc.length(), 0, "(");
strategy.customizeDocumentCommand(new Document(doc), docCmd);
String expected = "():";
assertEquals(expected, docCmd.text);
doc = "class c:\n" +
" def met";
docCmd = new DocCmd(doc.length(), 0, "(");
strategy.customizeDocumentCommand(new Document(doc), docCmd);
expected = "(self):";
assertEquals(expected, docCmd.text);
//same as above, but with tabs
doc = "class c:\n" +
"\tdef met";
docCmd = new DocCmd(doc.length(), 0, "(");
strategy.customizeDocumentCommand(new Document(doc), docCmd);
expected = "(self):";
assertEquals(expected, docCmd.text);
doc = "class c(object): #";
docCmd = new DocCmd(doc.length(), 0, "(");
strategy.customizeDocumentCommand(new Document(doc), docCmd);
expected = "("; //in comment
assertEquals(expected, docCmd.text);
doc = "def a";
docCmd = new DocCmd(doc.length(), 0, "(");
strategy.customizeDocumentCommand(new Document(doc), docCmd);
expected = "():";
assertEquals(expected, docCmd.text);
doc = "a";
docCmd = new DocCmd(doc.length(), 0, "(");
strategy.customizeDocumentCommand(new Document(doc), docCmd);
expected = "()";
assertEquals(expected, docCmd.text);
doc = "a()";
docCmd = new DocCmd(doc.length()-1, 0, "(");
strategy.customizeDocumentCommand(new Document(doc), docCmd);
expected = "(";
assertEquals(expected, docCmd.text);
// test very simple ':' detection
doc = "def something():";
docCmd = new DocCmd(doc.length() - 1, 0, ":");
strategy.customizeDocumentCommand(new Document(doc), docCmd);
expected = "";
assertEquals(expected, docCmd.text);
assertEquals(15, docCmd.offset);
// test inputting ':' when you already have a ':', like at the end of a function declaraction
doc = "class c:\n" +
" def __init__(self):";
docCmd = new DocCmd(doc.length() - 1, 0, ":");
strategy.customizeDocumentCommand(new Document(doc), docCmd);
expected = "";
assertEquals(expected, docCmd.text);
assertEquals(32, docCmd.caretOffset);
// test inputting ':' at the end of a document
doc = "class c:\n" +
" def __init__(self)";
docCmd = new DocCmd(doc.length(), 0, ":");
strategy.customizeDocumentCommand(new Document(doc), docCmd);
expected = ":";
assertEquals(expected, docCmd.text);
assertEquals(31, docCmd.offset);
// test same as above, but with a comment
doc = "class c:\n" +
" def __init__(self): # comment";
docCmd = new DocCmd(doc.length() - 11, 0, ":");
strategy.customizeDocumentCommand(new Document(doc), docCmd);
expected = "";
assertEquals(expected, docCmd.text);
assertEquals(32, docCmd.caretOffset);
// test inputting ')' at the end of a document
doc = "class c:\n" +
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -