|
2 | 2 |
|
3 | 3 | import com.github.javaparser.StaticJavaParser; |
4 | 4 | import com.github.javaparser.ast.CompilationUnit; |
| 5 | +import com.github.javaparser.ast.Node; |
| 6 | +import com.github.javaparser.ast.NodeList; |
5 | 7 | import com.github.javaparser.ast.body.*; |
6 | 8 | import com.github.javaparser.ast.nodeTypes.NodeWithName; |
7 | 9 | import com.github.javaparser.ast.nodeTypes.modifiers.NodeWithAbstractModifier; |
@@ -59,33 +61,40 @@ public JavaFileAssert isNormalClass() { |
59 | 61 | return this; |
60 | 62 | } |
61 | 63 |
|
62 | | - public JavaFileAssert extendsClass(String... parentClass) { |
63 | | - Set<String> expectedClasses = Stream.of(parentClass) |
64 | | - .collect(Collectors.toSet()); |
65 | | - |
66 | | - Set<String> actualParents = actual.getType(0) |
| 64 | + public JavaFileAssert extendsClass(String parentClass) { |
| 65 | + String actualParent = actual.getType(0) |
67 | 66 | .asClassOrInterfaceDeclaration().getExtendedTypes() |
68 | 67 | .stream() |
| 68 | + .filter(JavaFileAssert::isClass) |
69 | 69 | .map(ClassOrInterfaceType::getNameWithScope) |
70 | | - .collect(Collectors.toSet()); |
| 70 | + .findFirst() |
| 71 | + .orElse(null); |
71 | 72 |
|
72 | | - Assertions.assertThat(actualParents) |
| 73 | + Assertions.assertThat(actualParent) |
73 | 74 | .withFailMessage("Expected type %s to extends %s, but found %s", |
74 | | - actual.getType(0).getName().asString(), expectedClasses, actualParents) |
75 | | - .isEqualTo(expectedClasses); |
| 75 | + actual.getType(0).getName().asString(), parentClass, actualParent) |
| 76 | + .isEqualTo(parentClass); |
76 | 77 | return this; |
77 | 78 | } |
78 | 79 |
|
| 80 | + private static boolean isClass(ClassOrInterfaceType cit) { |
| 81 | + return cit.asClassOrInterfaceType().getParentNode() |
| 82 | + .map(node -> node instanceof ClassOrInterfaceDeclaration && !((ClassOrInterfaceDeclaration)node).isInterface()) |
| 83 | + .orElse(false); |
| 84 | + } |
| 85 | + |
79 | 86 | public JavaFileAssert doesNotExtendsClasses() { |
80 | | - Set<String> actualParents = actual.getType(0) |
| 87 | + String actualParent = actual.getType(0) |
81 | 88 | .asClassOrInterfaceDeclaration().getExtendedTypes() |
82 | 89 | .stream() |
| 90 | + .filter(JavaFileAssert::isClass) |
83 | 91 | .map(ClassOrInterfaceType::getNameWithScope) |
84 | | - .collect(Collectors.toSet()); |
85 | | - Assertions.assertThat(actualParents) |
| 92 | + .findFirst() |
| 93 | + .orElse(null); |
| 94 | + Assertions.assertThat(actualParent) |
86 | 95 | .withFailMessage("Expected type %s to extends a class, but found %s", |
87 | | - actual.getType(0).getName().asString(), actualParents) |
88 | | - .isEmpty(); |
| 96 | + actual.getType(0).getName().asString(), actualParent) |
| 97 | + .isNull(); |
89 | 98 | return this; |
90 | 99 | } |
91 | 100 |
|
|
0 commit comments