From 449bda6498f82fc11b08718a88fcb20cb77c7675 Mon Sep 17 00:00:00 2001 From: Maxim Shafirov Date: Fri, 7 Jan 2011 02:11:40 +0300 Subject: [PATCH] Naive testing for PSI getters. --- .../jetbrains/jet/parsing/JetParsingTest.java | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/idea/tests/org/jetbrains/jet/parsing/JetParsingTest.java b/idea/tests/org/jetbrains/jet/parsing/JetParsingTest.java index 06235af3242..8d28e0e2f2d 100644 --- a/idea/tests/org/jetbrains/jet/parsing/JetParsingTest.java +++ b/idea/tests/org/jetbrains/jet/parsing/JetParsingTest.java @@ -4,12 +4,19 @@ package org.jetbrains.jet.parsing; import com.intellij.openapi.application.PathManager; +import com.intellij.psi.PsiFile; import com.intellij.testFramework.ParsingTestCase; import junit.framework.TestSuite; +import org.jetbrains.annotations.NonNls; +import org.jetbrains.jet.lang.psi.JetElement; +import org.jetbrains.jet.lang.psi.JetVisitor; import java.io.File; import java.io.FileFilter; import java.io.FilenameFilter; +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; import java.util.Arrays; import java.util.Collections; import java.util.Comparator; @@ -40,6 +47,34 @@ public class JetParsingTest extends ParsingTestCase { return new File(PathManager.getResourceRoot(JetParsingTest.class, "/org/jetbrains/jet/parsing/JetParsingTest.class")).getParentFile().getParentFile().getParent(); } + @Override + protected void checkResult(@NonNls String targetDataName, PsiFile file) throws IOException { + super.checkResult(targetDataName, file); + file.acceptChildren(new JetVisitor() { + @Override + public void visitJetElement(JetElement elem) { + elem.acceptChildren(this); + try { + checkPsiGetters(elem); + } catch (Throwable throwable) { + throw new RuntimeException(throwable); + } + } + }); + } + + private void checkPsiGetters(JetElement elem) throws Throwable { + Method[] methods = elem.getClass().getDeclaredMethods(); + for (Method method : methods) { + if (!method.getName().startsWith("get") && !method.getName().startsWith("find")) continue; + if (method.getParameterTypes().length > 0) continue; + Class declaringClass = method.getDeclaringClass(); + if (!declaringClass.getName().startsWith("org.jetbrains.jet")) continue; + + method.invoke(elem); + } + } + @Override protected void runTest() throws Throwable { doTest(true);