summaryrefslogtreecommitdiff
path: root/json/tests/test/com/intellij/json/JsonFormattingTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'json/tests/test/com/intellij/json/JsonFormattingTest.java')
-rw-r--r--json/tests/test/com/intellij/json/JsonFormattingTest.java112
1 files changed, 112 insertions, 0 deletions
diff --git a/json/tests/test/com/intellij/json/JsonFormattingTest.java b/json/tests/test/com/intellij/json/JsonFormattingTest.java
new file mode 100644
index 00000000..98f2a005
--- /dev/null
+++ b/json/tests/test/com/intellij/json/JsonFormattingTest.java
@@ -0,0 +1,112 @@
+package com.intellij.json;
+
+import com.intellij.json.formatter.JsonCodeStyleSettings.PropertyAlignment;
+import com.intellij.openapi.command.WriteCommandAction;
+import com.intellij.psi.codeStyle.CodeStyleManager;
+import com.intellij.psi.codeStyle.CommonCodeStyleSettings;
+import com.intellij.testFramework.PlatformTestUtil;
+import org.jetbrains.annotations.NotNull;
+
+/**
+ * @author Mikhail Golubev
+ */
+public class JsonFormattingTest extends JsonTestCase {
+
+ @Override
+ protected String getTestDataPath() {
+ return super.getTestDataPath() + "/formatting";
+ }
+
+ public void testContainerElementsAlignment() {
+ doTest();
+ }
+
+ public void testBlankLinesStripping() {
+ doTest();
+ }
+
+ public void testSpacesInsertion() {
+ doTest();
+ }
+
+ public void testDoNotThrowFailedToAlignException() {
+ getCustomCodeStyleSettings().PROPERTY_ALIGNMENT = PropertyAlignment.ALIGN_ON_VALUE.getId();
+ doTest();
+ }
+
+ public void testWrapping() {
+ getCodeStyleSettings().setRightMargin(JsonLanguage.INSTANCE, 20);
+ doTest();
+ }
+
+ // WEB-13587
+ public void testAlignPropertiesOnColon() {
+ checkPropertyAlignment(PropertyAlignment.ALIGN_ON_COLON);
+ }
+
+ // WEB-13587
+ public void testAlignPropertiesOnValue() {
+ checkPropertyAlignment(PropertyAlignment.ALIGN_ON_VALUE);
+ }
+
+ private void checkPropertyAlignment(@NotNull final PropertyAlignment alignmentType) {
+ getCustomCodeStyleSettings().PROPERTY_ALIGNMENT = alignmentType.getId();
+ doTest();
+ }
+
+ public void testChopDownArrays() {
+ getCustomCodeStyleSettings().ARRAY_WRAPPING = CommonCodeStyleSettings.WRAP_ON_EVERY_ITEM;
+ getCodeStyleSettings().setRightMargin(JsonLanguage.INSTANCE, 40);
+ doTest();
+ }
+
+ // IDEA-138902
+ public void testObjectsWithSingleProperty() {
+ doTest();
+ }
+
+ // Moved from JavaScript
+
+ public void testWeb3830() {
+ CommonCodeStyleSettings.IndentOptions options = getIndentOptions();
+ options.INDENT_SIZE = 8;
+ options.USE_TAB_CHARACTER = true;
+ options.TAB_SIZE = 8;
+ doTest();
+ }
+
+ public void testReformatJSon() {
+ getIndentOptions().INDENT_SIZE = 4;
+ doTest();
+ }
+
+ public void testReformatJSon2() {
+ getIndentOptions().INDENT_SIZE = 4;
+ doTest();
+ }
+
+ public void testRemoveTrailingCommas() {
+ doTest();
+ }
+
+ public void testReformatIncompleteJson1() { doTest();}
+
+ public void testReformatIncompleteJson2() { doTest();}
+
+ public void testIndentForElements() { doTest();}
+ public void testNoExtraNewLineByWrap() { doTest();}
+
+ public void testHugeJsonFile() {
+ // IDEA-195340 bad JSON kills IntelliJ
+ PlatformTestUtil.startPerformanceTest(getTestName(false), 20000, this::doTest).attempts(1).usesAllCPUCores().assertTiming();
+ }
+
+ private void doTest() {
+ myFixture.configureByFile(getTestName(false) + ".json");
+ WriteCommandAction.runWriteCommandAction(null, () -> {
+ CodeStyleManager codeStyleManager = CodeStyleManager.getInstance(myFixture.getProject());
+ codeStyleManager.reformat(myFixture.getFile());
+ });
+ myFixture.checkResultByFile(getTestName(false) + "_after.json");
+ }
+}