Add test case for operations

This commit is contained in:
Clément Fournier
2017-09-17 22:54:40 +02:00
parent 8af7d28197
commit 4f25c1feb3
2 changed files with 80 additions and 63 deletions

View File

@ -18,8 +18,8 @@ import net.sourceforge.pmd.lang.java.ast.JavaParserVisitorAdapter;
import net.sourceforge.pmd.lang.java.ast.JavaQualifiedName;
import net.sourceforge.pmd.lang.java.multifile.signature.JavaFieldSigMask;
import net.sourceforge.pmd.lang.java.multifile.signature.JavaOperationSigMask;
import net.sourceforge.pmd.lang.java.multifile.signature.JavaOperationSignature.Role;
import net.sourceforge.pmd.lang.java.multifile.signature.JavaSignature.Visibility;
import net.sourceforge.pmd.lang.java.multifile.testdata.MultifileVisitorTestData;
import net.sourceforge.pmd.lang.java.multifile.testdata.MultifileVisitorTestData2;
/**
@ -44,7 +44,7 @@ public class JavaMultifileVisitorTest {
@Test
public void testOperationsAreThere() {
ASTCompilationUnit acu = parseAndVisitForClass(MultifileVisitorTestData.class);
ASTCompilationUnit acu = parseAndVisitForClass(MultifileVisitorTestData2.class);
final ProjectMirror toplevel = PackageStats.INSTANCE;
@ -63,13 +63,13 @@ public class JavaMultifileVisitorTest {
@Test
public void testFieldsAreThere() {
parseAndVisitForClass(MultifileVisitorTestData.class);
parseAndVisitForClass(MultifileVisitorTestData2.class);
final ProjectMirror toplevel = PackageStats.INSTANCE;
final JavaFieldSigMask fieldSigMask = new JavaFieldSigMask();
JavaQualifiedName clazz = JavaQualifiedName.ofClass(MultifileVisitorTestData.class);
JavaQualifiedName clazz = JavaQualifiedName.ofClass(MultifileVisitorTestData2.class);
String[] fieldNames = {"x", "y", "z", "t"};
Visibility[] visibilities = {Visibility.PUBLIC, Visibility.PRIVATE, Visibility.PROTECTED, Visibility.PACKAGE};
@ -81,27 +81,56 @@ public class JavaMultifileVisitorTest {
}
@Test
public void testBothClassesOperationsAreThere() {
parseAndVisitForClass(MultifileVisitorTestData2.class);
parseAndVisitForClass(MultifileVisitorTestData2.class);
final ProjectMirror toplevel = PackageStats.INSTANCE;
final JavaOperationSigMask operationSigMask = new JavaOperationSigMask();
JavaQualifiedName clazz = JavaQualifiedName.ofClass(MultifileVisitorTestData2.class);
JavaQualifiedName clazz2 = JavaQualifiedName.ofClass(MultifileVisitorTestData2.class);
String[] opNames = {"getX()", "getY()", "setX(String)", "setY(String)",
"mymethod1()", "mymethod2()", "mystatic1()",
"mystatic2(String)", "mystatic2(String, String)"};
Role[] roles = {Role.GETTER_OR_SETTER, Role.GETTER_OR_SETTER, Role.GETTER_OR_SETTER, Role.GETTER_OR_SETTER,
Role.METHOD, Role.METHOD, Role.STATIC, Role.STATIC, Role.STATIC};
for (int i = 0; i < opNames.length; i++) {
operationSigMask.restrictRolesTo(roles[i]);
JavaQualifiedName name1 = JavaQualifiedName.ofString(clazz.toString() + "#" + opNames[i]);
JavaQualifiedName name2 = JavaQualifiedName.ofString(clazz2.toString() + "#" + opNames[i]);
assertTrue(toplevel.hasMatchingSig(name1, operationSigMask));
assertTrue(toplevel.hasMatchingSig(name2, operationSigMask));
}
}
@Test
public void testBothClassesFieldsAreThere() {
parseAndVisitForClass(MultifileVisitorTestData.class);
parseAndVisitForClass(MultifileVisitorTestData2.class);
parseAndVisitForClass(MultifileVisitorTestData2.class);
final ProjectMirror toplevel = PackageStats.INSTANCE;
final JavaFieldSigMask fieldSigMask = new JavaFieldSigMask();
JavaQualifiedName clazz = JavaQualifiedName.ofClass(MultifileVisitorTestData.class);
JavaQualifiedName clazz = JavaQualifiedName.ofClass(MultifileVisitorTestData2.class);
JavaQualifiedName clazz2 = JavaQualifiedName.ofClass(MultifileVisitorTestData2.class);
String[] fieldNames1 = {"x", "y", "z", "t"};
String[] fieldNames2 = {"x2", "y2", "z2", "t2"};
String[] fieldNames = {"x", "y", "z", "t"};
Visibility[] visibilities = {Visibility.PUBLIC, Visibility.PRIVATE, Visibility.PROTECTED, Visibility.PACKAGE};
for (int i = 0; i < fieldNames1.length; i++) {
for (int i = 0; i < fieldNames.length; i++) {
fieldSigMask.restrictVisibilitiesTo(visibilities[i]);
assertTrue(toplevel.hasMatchingSig(clazz, fieldNames1[i], fieldSigMask));
assertTrue(toplevel.hasMatchingSig(clazz2, fieldNames2[i], fieldSigMask));
assertTrue(toplevel.hasMatchingSig(clazz, fieldNames[i], fieldSigMask));
assertTrue(toplevel.hasMatchingSig(clazz2, fieldNames[i], fieldSigMask));
}
}

View File

@ -11,77 +11,65 @@ package net.sourceforge.pmd.lang.java.multifile.testdata;
*/
public class MultifileVisitorTestData2 {
public String x2;
protected String z2;
String t2;
private String y2;
public String x;
private String y;
protected String z;
String t;
public MultifileVisitorTestData2() {
}
private MultifileVisitorTestData2(String x) {
}
public String getX() {
return x;
}
public String getX2() {
return x2;
public String getY() {
return y;
}
public void setX(String n) {
x = n;
}
public void setY(String n) {
y = n;
}
public String getY2() {
return y2;
}
public static class NestedClass {
public void setX2(String n) {
x2 = n;
}
public void setY2(String n) {
y2 = n;
}
public void mymethod12() {
}
private void mymethod22() {
}
protected static void mystatic12() {
}
private static void mystatic22(String k) {
}
private static void mystatic22(String k, String l) {
}
public static class NestedClass2 {
public NestedClass2() {
public NestedClass() {
}
public void nestedMethod12() {
public void nestedMethod1() {
}
}
public void mymethod1() {
}
private void mymethod2() {
}
protected static void mystatic1() {
}
private static void mystatic2(String k) {
}
private static void mystatic2(String k, String l) {
}
}