blob: 24c4f13f9419df41c50b3cb71fc4e1a188e74616 [file] [log] [blame]
package org.jetbrains.plugins.groovy.lang.stubs;
import com.intellij.lang.ASTNode;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import com.intellij.psi.StubBuilder;
import com.intellij.psi.stubs.NamedStub;
import com.intellij.psi.stubs.StubElement;
import com.intellij.psi.tree.IElementType;
import com.intellij.psi.tree.IStubFileElementType;
import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase;
import junit.framework.Assert;
import org.jetbrains.plugins.groovy.util.TestUtils;
import java.util.List;
/**
* @author ilyas
*/
public class StubsTest extends LightCodeInsightFixtureTestCase {
public void testConfig_object() throws Throwable { doTest(); }
public void testSlurper() throws Throwable { doTest(); }
public void testStub1() throws Throwable { doTest(); }
public void testStub_field1() throws Throwable { doTest(); }
public void testStub_method1() throws Throwable { doTest(); }
public void testTypeParameters() throws Throwable { doTest(); }
@Override
protected String getBasePath() {
return TestUtils.getTestDataPath() + "groovy/stubs";
}
public void doTest() throws Exception {
final List<String> data = TestUtils.readInput(getTestDataPath() + "/" + getTestName(true) + ".test");
String fileText = data.get(0);
PsiFile psiFile = TestUtils.createPseudoPhysicalGroovyFile(getProject(), fileText);
ASTNode node = psiFile.getNode();
Assert.assertNotNull(node);
IElementType type = node.getElementType();
Assert.assertTrue(type instanceof IStubFileElementType);
IStubFileElementType stubFileType = (IStubFileElementType) type;
StubBuilder builder = stubFileType.getBuilder();
StubElement element = builder.buildStubTree(psiFile);
StringBuffer buffer = new StringBuffer();
getStubsTreeImpl(element, buffer, "");
String stubTree = buffer.toString().trim();
assertEquals(data.get(1), stubTree);
}
private static void getStubsTreeImpl(StubElement element, StringBuffer buffer, String offset) {
PsiElement psi = element.getPsi();
buffer.append(offset).append("[").append(psi.toString()).
append(element instanceof NamedStub ? " : " + ((NamedStub) element).getName() : "").
append("]\n");
for (StubElement stubElement : ((List<StubElement>) element.getChildrenStubs())) {
getStubsTreeImpl(stubElement, buffer, offset + " ");
}
}
}