From 60a7a57e65c8329a43465ffbb90cac9694cd9a81 Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Sun, 5 Oct 2014 00:57:16 +0400 Subject: [PATCH] Auto insert caret and selection to "after" file --- .../AbstractOverrideImplementTest.java | 20 ++++++++++++++++--- .../jet/testing/TagsTestDataUtil.java | 12 +++++++++++ 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/idea/tests/org/jetbrains/jet/plugin/codeInsight/AbstractOverrideImplementTest.java b/idea/tests/org/jetbrains/jet/plugin/codeInsight/AbstractOverrideImplementTest.java index 41ae572beff..2b64ee3b23b 100644 --- a/idea/tests/org/jetbrains/jet/plugin/codeInsight/AbstractOverrideImplementTest.java +++ b/idea/tests/org/jetbrains/jet/plugin/codeInsight/AbstractOverrideImplementTest.java @@ -31,6 +31,7 @@ import kotlin.Function1; import kotlin.KotlinPackage; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.jetbrains.jet.JetTestUtils; import org.jetbrains.jet.lang.descriptors.CallableMemberDescriptor; import org.jetbrains.jet.lang.descriptors.ClassDescriptor; import org.jetbrains.jet.lang.psi.JetClassOrObject; @@ -39,9 +40,11 @@ import org.jetbrains.jet.lang.resolve.OverrideResolver; import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; import org.jetbrains.jet.plugin.JetLightCodeInsightFixtureTestCase; import org.jetbrains.jet.plugin.JetLightProjectDescriptor; +import org.jetbrains.jet.testing.TagsTestDataUtil; import org.jetbrains.jet.utils.UtilsPackage; import org.junit.Assert; +import java.io.File; import java.util.*; public abstract class AbstractOverrideImplementTest extends JetLightCodeInsightFixtureTestCase { @@ -95,13 +98,13 @@ public abstract class AbstractOverrideImplementTest extends JetLightCodeInsightF private void doFileTest(OverrideImplementMethodsHandler handler) { myFixture.configureByFile(getTestName(true) + ".kt"); doOverrideImplement(handler, null); - myFixture.checkResultByFile(getTestName(true) + ".kt.after"); + checkResultByFile(getTestName(true) + ".kt.after"); } private void doMultiFileTest(OverrideImplementMethodsHandler handler) { myFixture.configureByFile(getTestName(true) + ".kt"); doMultiOverrideImplement(handler); - myFixture.checkResultByFile(getTestName(true) + ".kt.after"); + checkResultByFile(getTestName(true) + ".kt.after"); } protected void doDirectoryTest(OverrideImplementMethodsHandler handler) { @@ -112,7 +115,7 @@ public abstract class AbstractOverrideImplementTest extends JetLightCodeInsightF myFixture.copyDirectoryToProject(getTestName(true), ""); myFixture.configureFromTempProjectFile("foo/Impl.kt"); doOverrideImplement(handler, memberToOverride); - myFixture.checkResultByFile(getTestName(true) + "/foo/Impl.kt.after"); + checkResultByFile(getTestName(true) + "/foo/Impl.kt.after"); } private void doOverrideImplement(OverrideImplementMethodsHandler handler, @Nullable String memberToOverride) { @@ -212,4 +215,15 @@ public abstract class AbstractOverrideImplementTest extends JetLightCodeInsightF throw UtilsPackage.rethrow(throwable); } } + + private void checkResultByFile(String fileName) { + try { + myFixture.checkResultByFile(fileName); + } + catch (AssertionError error) { + JetTestUtils.assertEqualsToFile( + new File(myFixture.getTestDataPath(), fileName), + TagsTestDataUtil.generateTextWithCaretAndSelection(myFixture.getEditor())); + } + } } \ No newline at end of file diff --git a/idea/tests/org/jetbrains/jet/testing/TagsTestDataUtil.java b/idea/tests/org/jetbrains/jet/testing/TagsTestDataUtil.java index b4f81365c5a..7ea7a8f7ab8 100644 --- a/idea/tests/org/jetbrains/jet/testing/TagsTestDataUtil.java +++ b/idea/tests/org/jetbrains/jet/testing/TagsTestDataUtil.java @@ -21,6 +21,7 @@ import com.google.common.collect.Ordering; import com.intellij.codeInsight.daemon.LineMarkerInfo; import com.intellij.codeInsight.daemon.impl.HighlightInfo; import com.intellij.lang.annotation.HighlightSeverity; +import com.intellij.openapi.editor.Editor; import org.jetbrains.annotations.NotNull; import java.util.List; @@ -46,6 +47,17 @@ public class TagsTestDataUtil { return insertTagsInText(highlightPoints, text); } + public static String generateTextWithCaretAndSelection(@NotNull Editor editor) { + List points = Lists.newArrayList(); + points.add(new TagInfo(editor.getCaretModel().getOffset(), true, "caret")); + if (editor.getSelectionModel().hasSelection()) { + points.add(new TagInfo(editor.getSelectionModel().getSelectionStart(), true, "selection")); + points.add(new TagInfo(editor.getSelectionModel().getSelectionEnd(), false, "selection")); + } + + return insertTagsInText(points, editor.getDocument().getText()); + } + public static String insertTagsInText(List tags, String text) { StringBuilder builder = new StringBuilder(text);