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.ast.JavaQualifiedName;
import net.sourceforge.pmd.lang.java.multifile.signature.JavaFieldSigMask; 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.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.signature.JavaSignature.Visibility;
import net.sourceforge.pmd.lang.java.multifile.testdata.MultifileVisitorTestData;
import net.sourceforge.pmd.lang.java.multifile.testdata.MultifileVisitorTestData2; import net.sourceforge.pmd.lang.java.multifile.testdata.MultifileVisitorTestData2;
/** /**
@ -44,7 +44,7 @@ public class JavaMultifileVisitorTest {
@Test @Test
public void testOperationsAreThere() { public void testOperationsAreThere() {
ASTCompilationUnit acu = parseAndVisitForClass(MultifileVisitorTestData.class); ASTCompilationUnit acu = parseAndVisitForClass(MultifileVisitorTestData2.class);
final ProjectMirror toplevel = PackageStats.INSTANCE; final ProjectMirror toplevel = PackageStats.INSTANCE;
@ -63,13 +63,13 @@ public class JavaMultifileVisitorTest {
@Test @Test
public void testFieldsAreThere() { public void testFieldsAreThere() {
parseAndVisitForClass(MultifileVisitorTestData.class); parseAndVisitForClass(MultifileVisitorTestData2.class);
final ProjectMirror toplevel = PackageStats.INSTANCE; final ProjectMirror toplevel = PackageStats.INSTANCE;
final JavaFieldSigMask fieldSigMask = new JavaFieldSigMask(); final JavaFieldSigMask fieldSigMask = new JavaFieldSigMask();
JavaQualifiedName clazz = JavaQualifiedName.ofClass(MultifileVisitorTestData.class); JavaQualifiedName clazz = JavaQualifiedName.ofClass(MultifileVisitorTestData2.class);
String[] fieldNames = {"x", "y", "z", "t"}; String[] fieldNames = {"x", "y", "z", "t"};
Visibility[] visibilities = {Visibility.PUBLIC, Visibility.PRIVATE, Visibility.PROTECTED, Visibility.PACKAGE}; 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 @Test
public void testBothClassesFieldsAreThere() { public void testBothClassesFieldsAreThere() {
parseAndVisitForClass(MultifileVisitorTestData.class); parseAndVisitForClass(MultifileVisitorTestData2.class);
parseAndVisitForClass(MultifileVisitorTestData2.class); parseAndVisitForClass(MultifileVisitorTestData2.class);
final ProjectMirror toplevel = PackageStats.INSTANCE; final ProjectMirror toplevel = PackageStats.INSTANCE;
final JavaFieldSigMask fieldSigMask = new JavaFieldSigMask(); final JavaFieldSigMask fieldSigMask = new JavaFieldSigMask();
JavaQualifiedName clazz = JavaQualifiedName.ofClass(MultifileVisitorTestData.class); JavaQualifiedName clazz = JavaQualifiedName.ofClass(MultifileVisitorTestData2.class);
JavaQualifiedName clazz2 = JavaQualifiedName.ofClass(MultifileVisitorTestData2.class); JavaQualifiedName clazz2 = JavaQualifiedName.ofClass(MultifileVisitorTestData2.class);
String[] fieldNames1 = {"x", "y", "z", "t"}; String[] fieldNames = {"x", "y", "z", "t"};
String[] fieldNames2 = {"x2", "y2", "z2", "t2"};
Visibility[] visibilities = {Visibility.PUBLIC, Visibility.PRIVATE, Visibility.PROTECTED, Visibility.PACKAGE}; 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]); fieldSigMask.restrictVisibilitiesTo(visibilities[i]);
assertTrue(toplevel.hasMatchingSig(clazz, fieldNames1[i], fieldSigMask)); assertTrue(toplevel.hasMatchingSig(clazz, fieldNames[i], fieldSigMask));
assertTrue(toplevel.hasMatchingSig(clazz2, fieldNames2[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 class MultifileVisitorTestData2 {
public String x2; public String x;
protected String z2; private String y;
String t2; protected String z;
private String y2; String t;
public MultifileVisitorTestData2() { public MultifileVisitorTestData2() {
} }
private MultifileVisitorTestData2(String x) { private MultifileVisitorTestData2(String x) {
} }
public String getX() {
return x;
}
public String getX2() { public String getY() {
return x2; return y;
}
public void setX(String n) {
x = n;
}
public void setY(String n) {
y = n;
} }
public String getY2() { public static class NestedClass {
return y2;
}
public 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 void nestedMethod1() {
public void nestedMethod12() {
} }
} }
public void mymethod1() {
}
private void mymethod2() {
}
protected static void mystatic1() {
}
private static void mystatic2(String k) {
}
private static void mystatic2(String k, String l) {
}
} }