Move some of the old JSON parsing tests to new plugin

This commit is contained in:
Mikhail Golubev
2014-08-21 15:08:27 +04:00
parent 9f8faafe6d
commit 6153f6636e
17 changed files with 254 additions and 20 deletions

View File

@@ -4,6 +4,7 @@
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/testData" type="java-test-resource" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />

View File

@@ -1,28 +1,14 @@
package com.intellij.json;
import com.intellij.testFramework.IdeaTestCase;
import com.intellij.testFramework.fixtures.CodeInsightFixtureTestCase;
import com.intellij.util.ArrayUtil;
/**
* @author Mikhail Golubev
*/
public class JsonCompletionTest extends CodeInsightFixtureTestCase {
public class JsonCompletionTest extends JsonTestCase {
private static final String[] KEYWORDS = new String[]{"true", "false", "null"};
private static final String[] NOTHING = ArrayUtil.EMPTY_STRING_ARRAY;
@Override
public void setUp() throws Exception {
IdeaTestCase.initPlatformPrefix();
super.setUp();
}
@Override
protected String getBasePath() {
return "/json/tests/testData/completion";
}
@Override
protected boolean isCommunity() {
return true;
@@ -49,6 +35,6 @@ public class JsonCompletionTest extends CodeInsightFixtureTestCase {
}
private void doTest(String... variants) {
myFixture.testCompletionVariants(getTestName(false) + ".json", variants);
myFixture.testCompletionVariants("completion/" + getTestName(false) + ".json", variants);
}
}

View File

@@ -2,6 +2,7 @@ package com.intellij.json;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.psi.codeStyle.CodeStyleSettings;
import com.intellij.psi.codeStyle.CommonCodeStyleSettings;
import com.intellij.psi.formatter.FormatterTestCase;
import com.intellij.testFramework.IdeaTestCase;
import com.intellij.testFramework.PlatformTestUtil;
@@ -23,7 +24,6 @@ public class JsonFormattingTest extends FormatterTestCase {
return "formatting";
}
// Why the heck do I specify path to testData in each kind of test differently?
@Override
protected String getTestDataPath() {
return PlatformTestUtil.getCommunityPath() + "/json/tests/testData/";
@@ -48,9 +48,7 @@ public class JsonFormattingTest extends FormatterTestCase {
public void testWrapping() throws Exception {
CodeStyleSettings settings = getSettings();
int indentSize = settings.getCommonSettings(JsonLanguage.INSTANCE).getIndentOptions().INDENT_SIZE;
// LOG.debug("Intend size for JSON: " + indentSize);
settings.RIGHT_MARGIN = 20;
settings.setRightMargin(JsonLanguage.INSTANCE, 20);
doTest();
}

View File

@@ -27,6 +27,31 @@ public class JsonParsingTest extends ParsingTestCase {
doTest();
}
public void testSimple1() {
doTest();
}
public void testSimple2() {
doTest();
}
public void testSimple4() {
doTest();
}
// TODO: ask about these tests
//public void testSimple3() {
// doTest();
//}
//
//public void testReal1() {
// doTest();
//}
//
//public void testReal2() {
// doTest();
//}
private void doTest() {
doTest(true);
}

View File

@@ -0,0 +1,24 @@
package com.intellij.json;
import com.intellij.testFramework.PlatformTestCase;
import com.intellij.testFramework.TestDataPath;
import com.intellij.testFramework.fixtures.CodeInsightFixtureTestCase;
import org.jetbrains.annotations.NotNull;
/**
* @author Mikhail Golubev
*/
@TestDataPath("$CONTENT_ROOT/../testData")
public abstract class JsonTestCase extends CodeInsightFixtureTestCase {
@Override
public void setUp() throws Exception {
PlatformTestCase.autodetectPlatformPrefix();
//IdeaTestCase.initPlatformPrefix();
super.setUp();
}
@NotNull
public String getBasePath() {
return "/json/tests/testData";
}
}

View File

@@ -0,0 +1,8 @@
{
navigation: [
{
name: "Demo Applications",
demos: [ "Mail", "Moxie" ]
}
]
}

View File

@@ -0,0 +1,43 @@
JSFile:Real.json
JSObjectLiteralExpression
PsiElement(JS:LBRACE)('{')
PsiWhiteSpace('\n ')
JSProperty
PsiElement(JS:IDENTIFIER)('navigation')
PsiElement(JS:COLON)(':')
PsiWhiteSpace(' ')
JSArrayLiteralExpression
PsiElement(JS:LBRACKET)('[')
PsiWhiteSpace('\n ')
JSObjectLiteralExpression
PsiElement(JS:LBRACE)('{')
PsiWhiteSpace('\n ')
JSProperty
PsiElement(JS:IDENTIFIER)('name')
PsiElement(JS:COLON)(':')
PsiWhiteSpace(' ')
JSLiteralExpression
PsiElement(JS:STRING_LITERAL)('"Demo Applications"')
PsiElement(JS:COMMA)(',')
PsiWhiteSpace('\n ')
JSProperty
PsiElement(JS:IDENTIFIER)('demos')
PsiElement(JS:COLON)(':')
PsiWhiteSpace(' ')
JSArrayLiteralExpression
PsiElement(JS:LBRACKET)('[')
PsiWhiteSpace(' ')
JSLiteralExpression
PsiElement(JS:STRING_LITERAL)('"Mail"')
PsiElement(JS:COMMA)(',')
PsiWhiteSpace(' ')
JSLiteralExpression
PsiElement(JS:STRING_LITERAL)('"Moxie"')
PsiWhiteSpace(' ')
PsiElement(JS:RBRACKET)(']')
PsiWhiteSpace('\n ')
PsiElement(JS:RBRACE)('}')
PsiWhiteSpace('\n ')
PsiElement(JS:RBRACKET)(']')
PsiWhiteSpace('\n')
PsiElement(JS:RBRACE)('}')

View File

@@ -0,0 +1,3 @@
{
/*xxx*/ navigation: "111" // yyy
}

View File

@@ -0,0 +1,16 @@
JSFile:Real2.json
JSObjectLiteralExpression
PsiElement(JS:LBRACE)('{')
PsiWhiteSpace('\n ')
PsiComment(JS:C_STYLE_COMMENT)('/*xxx*/')
PsiWhiteSpace(' ')
JSProperty
PsiElement(JS:IDENTIFIER)('navigation')
PsiElement(JS:COLON)(':')
PsiWhiteSpace(' ')
JSLiteralExpression
PsiElement(JS:STRING_LITERAL)('"111"')
PsiWhiteSpace(' ')
PsiComment(JS:END_OF_LINE_COMMENT)('// yyy')
PsiWhiteSpace('\n')
PsiElement(JS:RBRACE)('}')

View File

@@ -0,0 +1 @@
{ "x": "x value", "y": "y value", "z": "z value", "z2":[] }

View File

@@ -0,0 +1,40 @@
FILE
JsonObject
PsiElement({)('{')
PsiWhiteSpace(' ')
JsonProperty
JsonPropertyName
PsiElement(STRING)('"x"')
PsiElement(:)(':')
PsiWhiteSpace(' ')
JsonStringLiteral
PsiElement(STRING)('"x value"')
PsiElement(,)(',')
PsiWhiteSpace(' ')
JsonProperty
JsonPropertyName
PsiElement(STRING)('"y"')
PsiElement(:)(':')
PsiWhiteSpace(' ')
JsonStringLiteral
PsiElement(STRING)('"y value"')
PsiElement(,)(',')
PsiWhiteSpace(' ')
JsonProperty
JsonPropertyName
PsiElement(STRING)('"z"')
PsiElement(:)(':')
PsiWhiteSpace(' ')
JsonStringLiteral
PsiElement(STRING)('"z value"')
PsiElement(,)(',')
PsiWhiteSpace(' ')
JsonProperty
JsonPropertyName
PsiElement(STRING)('"z2"')
PsiElement(:)(':')
JsonArray
PsiElement([)('[')
PsiElement(])(']')
PsiWhiteSpace(' ')
PsiElement(})('}')

View File

@@ -0,0 +1 @@
[ "x", 555, null, true, false, "z value", "z2",[] ],

View File

@@ -0,0 +1,38 @@
FILE
JsonArray
PsiElement([)('[')
PsiWhiteSpace(' ')
JsonStringLiteral
PsiElement(STRING)('"x"')
PsiElement(,)(',')
PsiWhiteSpace(' ')
JsonNumberLiteral
PsiElement(NUMBER)('555')
PsiElement(,)(',')
PsiWhiteSpace(' ')
JsonNullLiteral
PsiElement(null)('null')
PsiElement(,)(',')
PsiWhiteSpace(' ')
JsonBooleanLiteral
PsiElement(true)('true')
PsiElement(,)(',')
PsiWhiteSpace(' ')
JsonBooleanLiteral
PsiElement(false)('false')
PsiElement(,)(',')
PsiWhiteSpace(' ')
JsonStringLiteral
PsiElement(STRING)('"z value"')
PsiElement(,)(',')
PsiWhiteSpace(' ')
JsonStringLiteral
PsiElement(STRING)('"z2"')
PsiElement(,)(',')
JsonArray
PsiElement([)('[')
PsiElement(])(']')
PsiWhiteSpace(' ')
PsiElement(])(']')
PsiErrorElement:',' unexpected
PsiElement(,)(',')

View File

@@ -0,0 +1 @@
[ ++x, "x value", y + "y value", z, "z value", z2,[ a = b], {z=c} ]

View File

@@ -0,0 +1,45 @@
JSFile:Simple3.json
JSArrayLiteralExpression
PsiElement(JS:LBRACKET)('[')
PsiErrorElement:expression expected
<empty list>
PsiWhiteSpace(' ')
PsiElement(BAD_CHARACTER)('++')
PsiElement(JS:IDENTIFIER)('x')
PsiElement(JS:COMMA)(',')
PsiWhiteSpace(' ')
PsiElement(JS:STRING_LITERAL)('"x value"')
PsiElement(JS:COMMA)(',')
PsiWhiteSpace(' ')
PsiElement(JS:IDENTIFIER)('y')
PsiWhiteSpace(' ')
PsiElement(BAD_CHARACTER)('+')
PsiWhiteSpace(' ')
PsiElement(JS:STRING_LITERAL)('"y value"')
PsiElement(JS:COMMA)(',')
PsiWhiteSpace(' ')
PsiElement(JS:IDENTIFIER)('z')
PsiElement(JS:COMMA)(',')
PsiWhiteSpace(' ')
PsiElement(JS:STRING_LITERAL)('"z value"')
PsiElement(JS:COMMA)(',')
PsiWhiteSpace(' ')
PsiElement(JS:IDENTIFIER)('z2')
PsiElement(JS:COMMA)(',')
PsiElement(JS:LBRACKET)('[')
PsiWhiteSpace(' ')
PsiElement(JS:IDENTIFIER)('a')
PsiWhiteSpace(' ')
PsiElement(BAD_CHARACTER)('=')
PsiWhiteSpace(' ')
PsiElement(JS:IDENTIFIER)('b')
PsiElement(JS:RBRACKET)(']')
PsiElement(JS:COMMA)(',')
PsiWhiteSpace(' ')
PsiElement(JS:LBRACE)('{')
PsiElement(JS:IDENTIFIER)('z')
PsiElement(BAD_CHARACTER)('=')
PsiElement(JS:IDENTIFIER)('c')
PsiElement(JS:RBRACE)('}')
PsiWhiteSpace(' ')
PsiElement(JS:RBRACKET)(']')

View File

@@ -0,0 +1 @@
true

View File

@@ -0,0 +1,3 @@
FILE
PsiErrorElement:'[' or '{' expected, got 'true'
PsiElement(true)('true')