More refactoring in UastCallMatcher tests

This commit is contained in:
Yaroslav Pankratyev
2018-06-27 16:58:18 +07:00
parent 5c53453116
commit e58bb695b4
4 changed files with 87 additions and 168 deletions
@@ -6,7 +6,7 @@ public class MyClass {
s.concat("1");
s.chars();
java.util.List list = new java.util.ArrayList();
java.util.ArrayList list = new java.util.ArrayList();
list.addAll(new java.util.ArrayList());
}
}
@@ -2,15 +2,8 @@ package com.intellij.codeInspection;
import com.intellij.jvm.analysis.JvmAnalysisTestsUtil;
import com.intellij.pom.java.LanguageLevel;
import com.intellij.psi.PsiFile;
import com.intellij.testFramework.TestDataPath;
import com.intellij.testFramework.builders.JavaModuleFixtureBuilder;
import org.jetbrains.uast.UCallExpression;
import java.util.Set;
import static com.intellij.codeInspection.JvmAnalysisTestsUastUtil.getUElementsOfTypeFromFile;
import static com.intellij.codeInspection.UastCallMatcher.builder;
@TestDataPath("$CONTENT_ROOT/testData/codeInspection/uastCallMatcher")
public class UastCallMatcherTest extends UastCallMatcherTestBase {
@@ -26,82 +19,11 @@ public class UastCallMatcherTest extends UastCallMatcherTestBase {
}
public void testCallExpressions() {
doTestCallExpressions("MyClass.java");
}
public void testCallableReferences() {
doTestCallableReferences("MethodReferences.java");
}
public void testSimpleMatcher() {
PsiFile file = myFixture.configureByFile("MyClass.java");
Set<UCallExpression> expressions = getUElementsOfTypeFromFile(file, UCallExpression.class, ce -> ce.getMethodName() != null);
assertSize(5, expressions);
assertEquals(0, matchCallExpression(
builder().withClassFqn("java.util.ArrayList").build(),
expressions)
);
assertEquals(0, matchCallExpression(
builder().withClassFqn("java.util.ArrayList").withMethodName("size").build(),
expressions)
);
assertEquals(0, matchCallExpression(
builder().withMethodName("size").build(),
expressions)
);
assertEquals(0, matchCallExpression(
builder().withClassFqn("java.util.ArrayList").withMethodName("addAll").withArgumentsCount(1).build(),
expressions)
);
assertEquals(0, matchCallExpression(
builder().withClassFqn("java.util.ArrayList").withMethodName("addAll").withArgumentTypes("java.util.Collection").build(),
expressions)
);
assertEquals(4, matchCallExpression(
builder().withClassFqn("java.lang.String").build(),
expressions
));
assertEquals(2, matchCallExpression(
builder().withMethodName("toUpperCase").build(),
expressions
));
assertEquals(2, matchCallExpression(
builder().withClassFqn("java.lang.String").withMethodName("toUpperCase").build(),
expressions
));
assertEquals(3, matchCallExpression(
builder().withReturnType("java.lang.String").build(),
expressions
));
assertEquals(2, matchCallExpression(
builder().withReturnType("java.lang.String").withMethodName("toUpperCase").build(),
expressions
));
assertEquals(1, matchCallExpression(
builder().withReturnType("java.lang.String").withMethodName("toUpperCase").withArgumentsCount(1).build(),
expressions
));
assertEquals(1, matchCallExpression(
builder().withReturnType("java.lang.String").withMethodName("toUpperCase").withArgumentTypes("java.util.Locale").build(),
expressions
));
assertEquals(2, matchCallExpression(
builder().withArgumentsCount(0).build(),
expressions
));
assertEquals(3, matchCallExpression(
builder().withArgumentsCount(1).build(),
expressions
));
assertEquals(1, matchCallExpression(
builder().withArgumentTypes("java.util.Locale").build(),
expressions
));
assertEquals(1, matchCallExpression(
builder().withArgumentTypes("java.util.Collection").withMatchArgumentTypeInheritors(true).build(),
expressions
));
}
}
@@ -2,19 +2,12 @@ package com.intellij.codeInspection;
import com.intellij.jvm.analysis.JvmAnalysisKtTestsUtil;
import com.intellij.openapi.application.PathManager;
import com.intellij.psi.PsiFile;
import com.intellij.testFramework.TestDataPath;
import com.intellij.testFramework.builders.JavaModuleFixtureBuilder;
import kotlin.KotlinVersion;
import org.jetbrains.uast.UCallExpression;
import org.jetbrains.uast.UastCallKind;
import org.junit.Assume;
import java.io.File;
import java.util.Set;
import static com.intellij.codeInspection.JvmAnalysisTestsUastUtil.getUElementsOfTypeFromFile;
import static com.intellij.codeInspection.UastCallMatcher.builder;
@TestDataPath("$CONTENT_ROOT/testData/codeInspection/uastCallMatcher")
public class KtUastCallMatcherTest extends UastCallMatcherTestBase {
@@ -39,84 +32,11 @@ public class KtUastCallMatcherTest extends UastCallMatcherTestBase {
}
public void testCallExpressions() {
doTestCallExpressions("MyClass.kt");
}
public void testCallableReferences() {
doTestCallableReferences("MethodReferences.kt");
}
public void testSimpleMatcher() {
PsiFile file = myFixture.configureByFile("MyClass.kt");
Set<UCallExpression> expressions = getUElementsOfTypeFromFile(file, UCallExpression.class,
e -> e.getKind() == UastCallKind.METHOD_CALL);
assertSize(5, expressions);
assertEquals(1, matchCallExpression(
builder().withClassFqn("java.util.ArrayList").build(),
expressions)
);
assertEquals(0, matchCallExpression(
builder().withClassFqn("java.util.ArrayList").withMethodName("size").build(),
expressions)
);
assertEquals(0, matchCallExpression(
builder().withMethodName("size").build(),
expressions)
);
assertEquals(1, matchCallExpression(
builder().withClassFqn("java.util.ArrayList").withMethodName("addAll").withArgumentsCount(1).build(),
expressions)
);
assertEquals(1, matchCallExpression(
builder().withClassFqn("java.util.ArrayList").withMethodName("addAll").withArgumentTypes("java.util.Collection").build(),
expressions)
);
assertEquals(4, matchCallExpression(
builder().withClassFqn("java.lang.String").build(),
expressions
));
assertEquals(2, matchCallExpression(
builder().withMethodName("toUpperCase").build(),
expressions
));
assertEquals(2, matchCallExpression(
builder().withClassFqn("java.lang.String").withMethodName("toUpperCase").build(),
expressions
));
assertEquals(3, matchCallExpression(
builder().withReturnType("java.lang.String").build(),
expressions
));
assertEquals(2, matchCallExpression(
builder().withReturnType("java.lang.String").withMethodName("toUpperCase").build(),
expressions
));
assertEquals(1, matchCallExpression(
builder().withReturnType("java.lang.String").withMethodName("toUpperCase").withArgumentsCount(1).build(),
expressions
));
assertEquals(1, matchCallExpression(
builder().withReturnType("java.lang.String").withMethodName("toUpperCase").withArgumentTypes("java.util.Locale").build(),
expressions
));
assertEquals(2, matchCallExpression(
builder().withArgumentsCount(0).build(),
expressions
));
assertEquals(3, matchCallExpression(
builder().withArgumentsCount(1).build(),
expressions
));
assertEquals(1, matchCallExpression(
builder().withArgumentTypes("java.util.Locale").build(),
expressions
));
assertEquals(1, matchCallExpression(
builder().withArgumentTypes("java.util.Collection").withMatchArgumentTypeInheritors(true).build(),
expressions
));
}
}
@@ -9,6 +9,7 @@ import com.intellij.util.PathUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.uast.UCallExpression;
import org.jetbrains.uast.UCallableReferenceExpression;
import org.jetbrains.uast.UastCallKind;
import java.util.Locale;
import java.util.Set;
@@ -31,7 +32,83 @@ public abstract class UastCallMatcherTestBase extends JavaCodeInsightFixtureTest
return (int)expressions.stream().filter(matcher::testCallableReferenceExpression).count();
}
// expected matched expressions count are the same for Kotlin and Java tests for callable reference expressions
protected void doTestCallExpressions(@TestDataFile @NotNull String file) {
PsiFile psiFile = myFixture.configureByFile(file);
Set<UCallExpression> expressions = getUElementsOfTypeFromFile(psiFile, UCallExpression.class,
e -> e.getKind() == UastCallKind.METHOD_CALL);
assertSize(5, expressions);
assertEquals(1, matchCallExpression(
builder().withClassFqn("java.util.ArrayList").build(),
expressions)
);
assertEquals(0, matchCallExpression(
builder().withClassFqn("java.util.ArrayList").withMethodName("size").build(),
expressions)
);
assertEquals(0, matchCallExpression(
builder().withMethodName("size").build(),
expressions)
);
assertEquals(1, matchCallExpression(
builder().withClassFqn("java.util.ArrayList").withMethodName("addAll").withArgumentsCount(1).build(),
expressions)
);
assertEquals(1, matchCallExpression(
builder().withClassFqn("java.util.ArrayList").withMethodName("addAll").withArgumentTypes("java.util.Collection").build(),
expressions)
);
assertEquals(4, matchCallExpression(
builder().withClassFqn("java.lang.String").build(),
expressions
));
assertEquals(2, matchCallExpression(
builder().withMethodName("toUpperCase").build(),
expressions
));
assertEquals(2, matchCallExpression(
builder().withClassFqn("java.lang.String").withMethodName("toUpperCase").build(),
expressions
));
assertEquals(3, matchCallExpression(
builder().withReturnType("java.lang.String").build(),
expressions
));
assertEquals(2, matchCallExpression(
builder().withReturnType("java.lang.String").withMethodName("toUpperCase").build(),
expressions
));
assertEquals(1, matchCallExpression(
builder().withReturnType("java.lang.String").withMethodName("toUpperCase").withArgumentsCount(1).build(),
expressions
));
assertEquals(1, matchCallExpression(
builder().withReturnType("java.lang.String").withMethodName("toUpperCase").withArgumentTypes("java.util.Locale").build(),
expressions
));
assertEquals(2, matchCallExpression(
builder().withArgumentsCount(0).build(),
expressions
));
assertEquals(3, matchCallExpression(
builder().withArgumentsCount(1).build(),
expressions
));
assertEquals(1, matchCallExpression(
builder().withArgumentTypes("java.util.Locale").build(),
expressions
));
assertEquals(1, matchCallExpression(
builder().withArgumentTypes("java.util.Collection").withMatchArgumentTypeInheritors(true).build(),
expressions
));
}
protected void doTestCallableReferences(@TestDataFile @NotNull String file) {
PsiFile psiFile = myFixture.configureByFile(file);
Set<UCallableReferenceExpression> expressions = getUElementsOfTypeFromFile(psiFile, UCallableReferenceExpression.class);