tests to community

This commit is contained in:
Dmitry Jemerov
2011-12-16 18:49:51 +01:00
parent 74c214e099
commit 0423ab9df1
5 changed files with 464 additions and 0 deletions
@@ -0,0 +1,232 @@
package com.intellij.lang.psi;
import com.intellij.lang.*;
import com.intellij.lang.impl.PsiBuilderImpl;
import com.intellij.lexer.JavaLexer;
import com.intellij.openapi.fileTypes.StdFileTypes;
import com.intellij.pom.java.LanguageLevel;
import com.intellij.psi.JavaTokenType;
import com.intellij.psi.PsiFile;
import com.intellij.psi.impl.java.stubs.JavaStubElementTypes;
import com.intellij.psi.impl.source.DummyHolder;
import com.intellij.psi.impl.source.tree.JavaElementType;
import com.intellij.psi.impl.source.tree.SharedImplUtil;
import com.intellij.psi.impl.source.tree.TreeElement;
import com.intellij.psi.text.BlockSupport;
import com.intellij.testFramework.LightIdeaTestCase;
import junit.framework.AssertionFailedError;
/**
* Date: Jan 21, 2005
* @author max
*/
public class PsiBuilderTest extends LightIdeaTestCase {
private PsiBuilderImpl myBuilder;
public void testEmptyProgram() throws Exception {
myBuilder = createBuilder("");
final PsiBuilder.Marker fileMarker = myBuilder.mark();
fileMarker.done(JavaStubElementTypes.JAVA_FILE);
ASTNode fileNode = myBuilder.getTreeBuilt();
assertNotNull(fileNode);
assertEquals("", fileNode.getText());
}
public void testProgramWithSingleKeyword() throws Exception {
myBuilder = createBuilder("package");
final PsiBuilder.Marker fileMarker = myBuilder.mark();
assertEquals("package", myBuilder.getTokenText());
assertEquals(JavaTokenType.PACKAGE_KEYWORD, myBuilder.getTokenType());
final PsiBuilder.Marker packageStatementMarker = myBuilder.mark();
myBuilder.advanceLexer();
assertTrue(myBuilder.eof());
packageStatementMarker.done(JavaElementType.PACKAGE_STATEMENT);
fileMarker.done(JavaStubElementTypes.JAVA_FILE);
ASTNode fileNode = myBuilder.getTreeBuilt();
assertNotNull(fileNode);
assertEquals("package", fileNode.getText());
assertSame(fileNode.getFirstChildNode(), fileNode.getLastChildNode());
ASTNode packageNode = fileNode.getFirstChildNode();
assertNotNull(packageNode);
assertEquals("package", packageNode.getText());
assertEquals(JavaElementType.PACKAGE_STATEMENT, packageNode.getElementType());
ASTNode leaf = packageNode.getFirstChildNode();
assertNotNull(leaf);
assertEquals(JavaTokenType.PACKAGE_KEYWORD, leaf.getElementType());
}
private static PsiBuilderImpl createBuilder(final String text) {
return createBuilder(text,null);
}
private static PsiBuilderImpl createBuilder(final String text, ASTNode originalTree) {
final Language lang = StdFileTypes.JAVA.getLanguage();
final ParserDefinition parserDefinition = LanguageParserDefinitions.INSTANCE.forLanguage(lang);
assertNotNull(parserDefinition);
PsiFile psiFile = createFile("x.java", text);
return new PsiBuilderImpl(getProject(), psiFile, parserDefinition, new JavaLexer(LanguageLevel.JDK_1_5),
SharedImplUtil.findCharTableByTree(psiFile.getNode()), text, originalTree, null);
}
public void testTrailingWhitespaces() throws Exception {
myBuilder = createBuilder("foo\n\nx");
final PsiBuilder.Marker marker = myBuilder.mark();
while (!myBuilder.eof()) {
myBuilder.advanceLexer();
}
marker.done(JavaStubElementTypes.JAVA_FILE);
assertEquals("foo\n\nx", myBuilder.getTreeBuilt().getText());
}
public void testRollback() throws Exception {
myBuilder = createBuilder("package");
PsiBuilder.Marker fileMarker = myBuilder.mark();
assertEquals("package", myBuilder.getTokenText());
assertEquals(JavaTokenType.PACKAGE_KEYWORD, myBuilder.getTokenType());
PsiBuilder.Marker packageStatementMarker = myBuilder.mark();
myBuilder.advanceLexer();
assertTrue(myBuilder.eof());
packageStatementMarker.done(JavaElementType.PACKAGE_STATEMENT);
fileMarker.rollbackTo();
fileMarker = myBuilder.mark();
assertEquals("package", myBuilder.getTokenText());
assertEquals(JavaTokenType.PACKAGE_KEYWORD, myBuilder.getTokenType());
packageStatementMarker = myBuilder.mark();
myBuilder.advanceLexer();
assertTrue(myBuilder.eof());
packageStatementMarker.done(JavaElementType.PACKAGE_STATEMENT);
fileMarker.done(JavaStubElementTypes.JAVA_FILE);
ASTNode fileNode = myBuilder.getTreeBuilt();
assertNotNull(fileNode);
assertEquals("package", fileNode.getText());
assertSame(fileNode.getFirstChildNode(), fileNode.getLastChildNode());
ASTNode packageNode = fileNode.getFirstChildNode();
assertNotNull(packageNode);
assertEquals("package", packageNode.getText());
assertEquals(JavaElementType.PACKAGE_STATEMENT, packageNode.getElementType());
ASTNode leaf = packageNode.getFirstChildNode();
assertNotNull(leaf);
assertEquals(JavaTokenType.PACKAGE_KEYWORD, leaf.getElementType());
}
public void testDrop() throws Exception {
myBuilder = createBuilder("package");
final PsiBuilder.Marker fileMarker = myBuilder.mark();
assertEquals("package", myBuilder.getTokenText());
assertEquals(JavaTokenType.PACKAGE_KEYWORD, myBuilder.getTokenType());
final PsiBuilder.Marker packageStatementMarker = myBuilder.mark();
myBuilder.advanceLexer();
assertTrue(myBuilder.eof());
packageStatementMarker.drop();
fileMarker.done(JavaStubElementTypes.JAVA_FILE);
ASTNode fileNode = myBuilder.getTreeBuilt();
assertNotNull(fileNode);
assertEquals("package", fileNode.getText());
assertSame(fileNode.getFirstChildNode(), fileNode.getLastChildNode());
ASTNode leaf = fileNode.getFirstChildNode();
assertNotNull(leaf);
assertEquals(JavaTokenType.PACKAGE_KEYWORD, leaf.getElementType());
assertEquals("package", leaf.getText());
assertNull(leaf.getFirstChildNode());
}
public void testAdvanceBeyondEof() {
myBuilder = createBuilder("package");
for(int i=0; i<20; i++) {
myBuilder.eof();
myBuilder.advanceLexer();
}
assertTrue(myBuilder.eof());
}
public void testAssertionFailureOnUnbalancedMarkers() {
myBuilder = createBuilder("foo");
myBuilder.setDebugMode(true);
final PsiBuilder.Marker m = myBuilder.mark();
final PsiBuilder.Marker m1 = myBuilder.mark();
myBuilder.getTokenType();
myBuilder.advanceLexer();
try {
m.done(JavaTokenType.PACKAGE_KEYWORD);
fail("Assertion must fire");
}
catch (AssertionFailedError e) {
throw e;
}
catch (Throwable e) {
if (!e.getMessage().startsWith("Another not done marker")) {
fail("Wrong assertion message");
}
}
}
public void testNotAllTokensProcessed() {
myBuilder = createBuilder("foo");
myBuilder.setDebugMode(true);
final PsiBuilder.Marker m = myBuilder.mark();
m.done(JavaTokenType.PACKAGE_KEYWORD);
try {
myBuilder.getTreeBuilt();
fail("Assertion must fire");
}
catch (AssertionFailedError e) {
throw e;
}
catch (Throwable e) {
if (!e.getMessage().startsWith("Tokens [IDENTIFIER] were not inserted into the tree")) {
fail("Wrong assertion message");
}
}
}
public void testMergeWhenEmptyElementAfterWhitespaceIsLastChild() throws Throwable {
myBuilder = createBuilder(" foo bar");
parseWhenEmptyElementAfterWhitespaceIsLastChild();
final ASTNode tree = myBuilder.getTreeBuilt();
new DummyHolder(getPsiManager(), (TreeElement)tree, null);
myBuilder = createBuilder(" bar", tree);
parseWhenEmptyElementAfterWhitespaceIsLastChild();
try {
myBuilder.getTreeBuilt();
fail();
}
catch (BlockSupport.ReparsedSuccessfullyException e) {
e.getDiffLog().performActualPsiChange(tree.getPsi().getContainingFile());
}
assertEquals(" bar", tree.getText());
}
private void parseWhenEmptyElementAfterWhitespaceIsLastChild() {
final PsiBuilder.Marker root = myBuilder.mark();
final PsiBuilder.Marker composite = myBuilder.mark();
final PsiBuilder.Marker backup = myBuilder.mark();
if ("foo".equals(myBuilder.getTokenText())) {
myBuilder.advanceLexer();
myBuilder.getTokenType();
myBuilder.mark().done(JavaStubElementTypes.TYPE_PARAMETER_LIST);
backup.done(JavaStubElementTypes.ANNOTATION_METHOD);
} else {
backup.rollbackTo();
}
composite.done(JavaStubElementTypes.ANONYMOUS_CLASS);
myBuilder.getTokenType();
myBuilder.advanceLexer();
root.done(JavaStubElementTypes.ENUM_CONSTANT_INITIALIZER);
}
}
@@ -0,0 +1,75 @@
/*
* Created by IntelliJ IDEA.
* User: mike
* Date: Jun 14, 2002
* Time: 8:05:58 PM
* To change template for new class use
* Code Style | Class Templates options (Tools | IDE Options).
*/
package com.intellij.psi.util;
import com.intellij.psi.*;
import com.intellij.testFramework.LightCodeInsightTestCase;
import com.intellij.util.IncorrectOperationException;
import org.jetbrains.annotations.NonNls;
public class PropertyUtilTest extends LightCodeInsightTestCase {
public void testSuggestGetterName() throws Exception {
assertEquals("isValid", PropertyUtil.suggestGetterName("valid", getType("boolean")));
assertEquals("getValid", PropertyUtil.suggestGetterName("valid", getType("Object")));
assertEquals("isValid", PropertyUtil.suggestGetterName(ourProject, createField("valid", "boolean")));
assertEquals("getValid", PropertyUtil.suggestGetterName(ourProject, createField("valid", "Object")));
assertEquals("getURL", PropertyUtil.suggestGetterName("URL", getType("Object")));
assertEquals("getURL", PropertyUtil.suggestGetterName(ourProject, createField("URL", "Object")));
assertEquals("isaURL", PropertyUtil.suggestGetterName(ourProject, createField("aURL", "boolean")));
assertEquals("getaURL", PropertyUtil.suggestGetterName(ourProject, createField("aURL", "Object")));
assertEquals("getBool", PropertyUtil.suggestGetterName(ourProject, createField("bool", "java.lang.Boolean")));
}
public void testSuggestSetterName() throws Exception {
assertEquals("setValid", PropertyUtil.suggestSetterName("valid"));
assertEquals("setValid", PropertyUtil.suggestSetterName(ourProject, createField("valid", "Object")));
assertEquals("setURL", PropertyUtil.suggestSetterName("URL"));
assertEquals("setURL", PropertyUtil.suggestSetterName(ourProject, createField("URL", "Object")));
assertEquals("setaURL", PropertyUtil.suggestSetterName("aURL"));
assertEquals("setaURL", PropertyUtil.suggestSetterName(ourProject, createField("aURL", "Object")));
assertEquals("setBool", PropertyUtil.suggestSetterName(ourProject, createField("bool", "java.lang.Boolean")));
}
public void testSuggestPropertyName() throws Exception {
assertEquals("valid", PropertyUtil.getPropertyName("isValid"));
assertEquals("valid", PropertyUtil.getPropertyName("getValid"));
assertEquals("valid", PropertyUtil.getPropertyName("setValid"));
assertEquals("URL", PropertyUtil.getPropertyName("isURL"));
assertEquals("URL", PropertyUtil.getPropertyName("getURL"));
assertEquals("URL", PropertyUtil.getPropertyName("setURL"));
assertEquals("aURL", PropertyUtil.getPropertyName("isaURL"));
assertEquals("aURL", PropertyUtil.getPropertyName("getaURL"));
assertEquals("aURL", PropertyUtil.getPropertyName("setaURL"));
}
public void testBooleanPropertyGetters() {
assertTrue(PropertyUtil.hasGetterName(createMethod("isOk", "boolean")));
assertFalse(PropertyUtil.hasGetterName(createMethod("isOk", CommonClassNames.JAVA_LANG_BOOLEAN)));
assertTrue(PropertyUtil.hasGetterName(createMethod("getOk", CommonClassNames.JAVA_LANG_BOOLEAN)));
assertFalse(PropertyUtil.hasGetterName(createMethod("isOk", "int")));
}
private static PsiType getType(@NonNls String type) throws IncorrectOperationException {
return PsiElementFactory.SERVICE.getInstance(ourProject).createTypeFromText(type, null);
}
private static PsiField createField(@NonNls String name, @NonNls String type) throws IncorrectOperationException {
return PsiElementFactory.SERVICE.getInstance(ourProject).createField(name, getType(type));
}
private static PsiMethod createMethod(@NonNls String name, String type) throws IncorrectOperationException {
return PsiElementFactory.SERVICE.getInstance(ourProject).createMethod(name, getType(type));
}
}
@@ -0,0 +1,91 @@
package com.intellij.application.options;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
/**
* @author mike
*/
public class ReplacePathToMacroMapTest {
private ReplacePathToMacroMap myMap;
@Before
public final void setupMap() {
myMap = new ReplacePathToMacroMap();
myMap.put("file:///tmp/foo", "file://$MODULE_DIR$");
myMap.put("file://tmp/foo", "file:/$MODULE_DIR$");
myMap.put("file:/tmp/foo", "file:$MODULE_DIR$");
myMap.put("jar:///tmp/foo", "jar://$MODULE_DIR$");
myMap.put("jar://tmp/foo", "jar:/$MODULE_DIR$");
myMap.put("jar:/tmp/foo", "jar:$MODULE_DIR$");
myMap.put("/tmp/foo", "$MODULE_DIR$");
}
@Test
public void testSubstitute_NoSubstitute() throws Exception {
assertEquals("/foo/bar", substitute("/foo/bar"));
}
@Test
public void testSubstitute_CompleteMatch() throws Exception {
assertEquals("$MODULE_DIR$", substitute("/tmp/foo"));
assertEquals("jar:$MODULE_DIR$", substitute("jar:/tmp/foo"));
assertEquals("jar:/$MODULE_DIR$", substitute("jar://tmp/foo"));
assertEquals("jar://$MODULE_DIR$", substitute("jar:///tmp/foo"));
assertEquals("file:$MODULE_DIR$", substitute("file:/tmp/foo"));
assertEquals("file:/$MODULE_DIR$", substitute("file://tmp/foo"));
assertEquals("file://$MODULE_DIR$", substitute("file:///tmp/foo"));
}
@Test
public void testSubstitute_PrefixMatch() throws Exception {
assertEquals("$MODULE_DIR$/bar", substitute("/tmp/foo/bar"));
assertEquals("jar:$MODULE_DIR$/bar", substitute("jar:/tmp/foo/bar"));
assertEquals("jar:/$MODULE_DIR$/bar", substitute("jar://tmp/foo/bar"));
assertEquals("jar://$MODULE_DIR$/bar", substitute("jar:///tmp/foo/bar"));
assertEquals("file:$MODULE_DIR$/bar", substitute("file:/tmp/foo/bar"));
assertEquals("file:/$MODULE_DIR$/bar", substitute("file://tmp/foo/bar"));
assertEquals("file://$MODULE_DIR$/bar", substitute("file:///tmp/foo/bar"));
}
@Test
public void testSubstitute_JarPrefixMatch() throws Exception {
assertEquals("$MODULE_DIR$!/bar", substitute("/tmp/foo!/bar"));
assertEquals("jar:$MODULE_DIR$!/bar", substitute("jar:/tmp/foo!/bar"));
assertEquals("jar:/$MODULE_DIR$!/bar", substitute("jar://tmp/foo!/bar"));
assertEquals("jar://$MODULE_DIR$!/bar", substitute("jar:///tmp/foo!/bar"));
assertEquals("file:$MODULE_DIR$!/bar", substitute("file:/tmp/foo!/bar"));
assertEquals("file:/$MODULE_DIR$!/bar", substitute("file://tmp/foo!/bar"));
assertEquals("file://$MODULE_DIR$!/bar", substitute("file:///tmp/foo!/bar"));
}
@Test
public void testSubstitute_WindowsRootSubstitution() throws Exception {
myMap.put("C:/", "../$MODULE_DIR$/");
assertEquals("../$MODULE_DIR$/", substitute("C:/"));
assertEquals("../$MODULE_DIR$/foo", substitute("C:/foo"));
}
@Test
public void testSubstitute_NoSubstituteInTheMiddleOccurs() throws Exception {
assertEquals("/bar/tmp/foo/bar", substitute("/bar/tmp/foo/bar"));
}
@Test
public void testSubstitute_NoDoubleSubstitution() throws Exception {
assertEquals("$MODULE_DIR$/bar/tmp/foo", substitute("/tmp/foo/bar/tmp/foo"));
}
@Test
public void testSubstitute_NoPartialSubstituteIsPerformed() throws Exception {
assertEquals("/tmp/foobar", substitute("/tmp/foobar"));
}
private String substitute(final String s) {
return myMap.substitute(s, true);
}
}
@@ -0,0 +1,24 @@
/*
* Copyright (c) 2000-2006 JetBrains s.r.o. All Rights Reserved.
*/
package com.intellij.ide.search;
import com.intellij.ide.ui.search.PorterStemmerUtil;
import junit.framework.TestCase;
/**
* User: anna
* Date: 15-Feb-2006
*/
public class PorterStemmerTest extends TestCase {
public void test() throws Exception {
assertEquals("name", PorterStemmerUtil.stem("names"));
assertEquals("j2ee", PorterStemmerUtil.stem("j2ee"));
assertEquals("keyword1", PorterStemmerUtil.stem("keyword1"));
assertEquals("initi", PorterStemmerUtil.stem("initializer"));
assertEquals("initi", PorterStemmerUtil.stem("initialization"));
assertEquals("go2file", PorterStemmerUtil.stem("go2file"));
}
}
@@ -0,0 +1,42 @@
/*
* Copyright (c) 2000-2006 JetBrains s.r.o. All Rights Reserved.
*/
/*
* Created by IntelliJ IDEA.
* User: Anna.Kozlova
* Date: 20-Jul-2006
* Time: 18:26:01
*/
package com.intellij.ide.severities;
import com.intellij.lang.annotation.HighlightSeverity;
import junit.framework.TestCase;
import org.jdom.Element;
public class HighlightSeveritiesTest extends TestCase {
private int myOldSeverity;
@Override
protected void setUp() throws Exception {
super.setUp();
myOldSeverity = HighlightSeverity.ERROR.myVal;
}
@Override
protected void tearDown() throws Exception {
HighlightSeverity.ERROR.myVal = myOldSeverity;
super.tearDown();
}
public void testSeveritiesMigration() throws Exception{
HighlightSeverity.ERROR.myVal = 200;
final Element element = new Element("temp");
new HighlightSeverity(HighlightSeverity.ERROR.myName, 500).writeExternal(element);
HighlightSeverity.ERROR.readExternal(element);
assertEquals(500, HighlightSeverity.ERROR.myVal);
}
}