Auto insert caret and selection to "after" file

This commit is contained in:
Nikolay Krasko
2014-10-05 00:57:16 +04:00
parent 27b654cc50
commit 60a7a57e65
2 changed files with 29 additions and 3 deletions
@@ -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()));
}
}
}
@@ -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<TagInfo> points = Lists.newArrayList();
points.add(new TagInfo<String>(editor.getCaretModel().getOffset(), true, "caret"));
if (editor.getSelectionModel().hasSelection()) {
points.add(new TagInfo<String>(editor.getSelectionModel().getSelectionStart(), true, "selection"));
points.add(new TagInfo<String>(editor.getSelectionModel().getSelectionEnd(), false, "selection"));
}
return insertTagsInText(points, editor.getDocument().getText());
}
public static String insertTagsInText(List<? extends TagInfo> tags, String text) {
StringBuilder builder = new StringBuilder(text);