From 351fd7c91d8bbb57c40fa179e8e868529b1ec610 Mon Sep 17 00:00:00 2001 From: Dmitry Cheryasov Date: Sat, 6 Mar 2010 07:14:18 +0200 Subject: [PATCH] Test for auto-unindent of 'else' and freinds. Only typing (no completion). --- python/testData/editing/innerElif.after.py | 7 ++ python/testData/editing/innerElif.py | 7 ++ .../testData/editing/misplacedElse.after.py | 3 + python/testData/editing/misplacedElse.py | 3 + python/testData/editing/nestedElse.after.py | 5 ++ python/testData/editing/nestedElse.py | 5 ++ .../testData/editing/nestedFinally.after.py | 7 ++ python/testData/editing/nestedFinally.py | 7 ++ python/testData/editing/simpleElif.after.py | 3 + python/testData/editing/simpleElif.py | 3 + python/testData/editing/simpleExcept.after.py | 3 + python/testData/editing/simpleExcept.py | 3 + .../testData/editing/simpleFinally.after.py | 3 + python/testData/editing/simpleFinally.py | 3 + python/testData/editing/singleElse.after.py | 5 ++ python/testData/editing/singleElse.py | 5 ++ .../jetbrains/python/PyAutoUnindentTest.java | 82 +++++++++++++++++++ 17 files changed, 154 insertions(+) create mode 100644 python/testData/editing/innerElif.after.py create mode 100644 python/testData/editing/innerElif.py create mode 100644 python/testData/editing/misplacedElse.after.py create mode 100644 python/testData/editing/misplacedElse.py create mode 100644 python/testData/editing/nestedElse.after.py create mode 100644 python/testData/editing/nestedElse.py create mode 100644 python/testData/editing/nestedFinally.after.py create mode 100644 python/testData/editing/nestedFinally.py create mode 100644 python/testData/editing/simpleElif.after.py create mode 100644 python/testData/editing/simpleElif.py create mode 100644 python/testData/editing/simpleExcept.after.py create mode 100644 python/testData/editing/simpleExcept.py create mode 100644 python/testData/editing/simpleFinally.after.py create mode 100644 python/testData/editing/simpleFinally.py create mode 100644 python/testData/editing/singleElse.after.py create mode 100644 python/testData/editing/singleElse.py create mode 100644 python/testSrc/com/jetbrains/python/PyAutoUnindentTest.java diff --git a/python/testData/editing/innerElif.after.py b/python/testData/editing/innerElif.after.py new file mode 100644 index 000000000000..62075b6cbd46 --- /dev/null +++ b/python/testData/editing/innerElif.after.py @@ -0,0 +1,7 @@ +if 1: + pass +elif 2: + pass +elif 3: +else: + pass diff --git a/python/testData/editing/innerElif.py b/python/testData/editing/innerElif.py new file mode 100644 index 000000000000..4266a0a88db0 --- /dev/null +++ b/python/testData/editing/innerElif.py @@ -0,0 +1,7 @@ +if 1: + pass +elif 2: + pass + elif 3 +else: + pass diff --git a/python/testData/editing/misplacedElse.after.py b/python/testData/editing/misplacedElse.after.py new file mode 100644 index 000000000000..6b7e42b603d6 --- /dev/null +++ b/python/testData/editing/misplacedElse.after.py @@ -0,0 +1,3 @@ +def foo(): + pass + else: diff --git a/python/testData/editing/misplacedElse.py b/python/testData/editing/misplacedElse.py new file mode 100644 index 000000000000..8a0e5bdfe737 --- /dev/null +++ b/python/testData/editing/misplacedElse.py @@ -0,0 +1,3 @@ +def foo(): + pass + else diff --git a/python/testData/editing/nestedElse.after.py b/python/testData/editing/nestedElse.after.py new file mode 100644 index 000000000000..49b3a948e4d3 --- /dev/null +++ b/python/testData/editing/nestedElse.after.py @@ -0,0 +1,5 @@ +if 1: + pass + if 2: + pass + else: diff --git a/python/testData/editing/nestedElse.py b/python/testData/editing/nestedElse.py new file mode 100644 index 000000000000..b8cf71e690ab --- /dev/null +++ b/python/testData/editing/nestedElse.py @@ -0,0 +1,5 @@ +if 1: + pass + if 2: + pass + else diff --git a/python/testData/editing/nestedFinally.after.py b/python/testData/editing/nestedFinally.after.py new file mode 100644 index 000000000000..80305e28af3e --- /dev/null +++ b/python/testData/editing/nestedFinally.after.py @@ -0,0 +1,7 @@ +try: + pass + for x in []: + pass +finally: + +#blah diff --git a/python/testData/editing/nestedFinally.py b/python/testData/editing/nestedFinally.py new file mode 100644 index 000000000000..ffaa20975196 --- /dev/null +++ b/python/testData/editing/nestedFinally.py @@ -0,0 +1,7 @@ +try: + pass + for x in []: + pass + finally + +#blah diff --git a/python/testData/editing/simpleElif.after.py b/python/testData/editing/simpleElif.after.py new file mode 100644 index 000000000000..78f3328c64a0 --- /dev/null +++ b/python/testData/editing/simpleElif.after.py @@ -0,0 +1,3 @@ +if 1: + pass +elif 2: diff --git a/python/testData/editing/simpleElif.py b/python/testData/editing/simpleElif.py new file mode 100644 index 000000000000..c0b79b1c38dc --- /dev/null +++ b/python/testData/editing/simpleElif.py @@ -0,0 +1,3 @@ +if 1: + pass + elif 2 diff --git a/python/testData/editing/simpleExcept.after.py b/python/testData/editing/simpleExcept.after.py new file mode 100644 index 000000000000..729a480bd9ba --- /dev/null +++ b/python/testData/editing/simpleExcept.after.py @@ -0,0 +1,3 @@ +try: + pass +except: diff --git a/python/testData/editing/simpleExcept.py b/python/testData/editing/simpleExcept.py new file mode 100644 index 000000000000..062b5359a440 --- /dev/null +++ b/python/testData/editing/simpleExcept.py @@ -0,0 +1,3 @@ +try: + pass + except diff --git a/python/testData/editing/simpleFinally.after.py b/python/testData/editing/simpleFinally.after.py new file mode 100644 index 000000000000..5474a4b5c19c --- /dev/null +++ b/python/testData/editing/simpleFinally.after.py @@ -0,0 +1,3 @@ +try: + pass +finally: diff --git a/python/testData/editing/simpleFinally.py b/python/testData/editing/simpleFinally.py new file mode 100644 index 000000000000..b81e34cce438 --- /dev/null +++ b/python/testData/editing/simpleFinally.py @@ -0,0 +1,3 @@ +try: + pass + finally diff --git a/python/testData/editing/singleElse.after.py b/python/testData/editing/singleElse.after.py new file mode 100644 index 000000000000..995fda9a9b9a --- /dev/null +++ b/python/testData/editing/singleElse.after.py @@ -0,0 +1,5 @@ +if 1: + pass +else: + +#blah diff --git a/python/testData/editing/singleElse.py b/python/testData/editing/singleElse.py new file mode 100644 index 000000000000..007eac176e26 --- /dev/null +++ b/python/testData/editing/singleElse.py @@ -0,0 +1,5 @@ +if 1: + pass + else + +#blah diff --git a/python/testSrc/com/jetbrains/python/PyAutoUnindentTest.java b/python/testSrc/com/jetbrains/python/PyAutoUnindentTest.java new file mode 100644 index 000000000000..8516f47acfd2 --- /dev/null +++ b/python/testSrc/com/jetbrains/python/PyAutoUnindentTest.java @@ -0,0 +1,82 @@ +package com.jetbrains.python; + +import com.intellij.codeInsight.completion.CompletionType; +import com.intellij.codeInsight.lookup.LookupElement; +import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.util.Computable; +import com.intellij.psi.PsiFile; +import com.jetbrains.python.fixtures.PyLightFixtureTestCase; + +/** + * Checks auto-unindenting of 'else' and friends. + * User: dcheryasov + * Date: Mar 5, 2010 2:49:38 PM + */ +public class PyAutoUnindentTest extends PyLightFixtureTestCase { + + public void testSingleElse() throws Exception{ + doTypingTest(); + } + + public void testNestedElse() throws Exception{ + doTypingTest(); + } + + public void testMisplacedElse() throws Exception{ + doTypingTest(); + } + + public void testSimpleElif() throws Exception{ + doTypingTest(); + } + + public void testInnerElif() throws Exception{ + doTypingTest(); + } + + public void testSimpleExcept() throws Exception{ + doTypingTest(); + } + + public void testSimpleFinally() throws Exception{ + doTypingTest(); + } + + public void testNestedFinally() throws Exception{ + doTypingTest(); + } + + /* does not complete keywords + public void testNestedFinallyCompleted() throws Exception{ + doCompletionTest(); + } + */ + + + + private void doTypingTest() throws Exception { + final String testName = "editing/" + getTestName(true); + myFixture.configureByFile(testName + ".py"); + doTyping(':'); + myFixture.checkResultByFile(testName + ".after.py"); + } + + private void doTyping(final char character) { + final int offset = myFixture.getEditor().getCaretModel().getOffset(); + final PsiFile file = ApplicationManager.getApplication().runWriteAction(new Computable() { + public PsiFile compute() { + myFixture.getEditor().getCaretModel().moveToOffset(offset); + myFixture.type(character); + return myFixture.getFile(); + } + }); + } + + private void doCompletionTest() throws Exception { + final String testName = "editing/" + getTestName(true); + myFixture.configureByFile(testName + ".py"); + LookupElement[] variants = myFixture.complete(CompletionType.SMART); + myFixture.checkResultByFile(testName + ".after.py"); + } + +}