diff options
Diffstat (limited to 'src/test/java')
4 files changed, 82 insertions, 47 deletions
diff --git a/src/test/java/org/zwobble/hobgoblin/compiler/output/lang/java/JavaGeneratorTests.java b/src/test/java/org/zwobble/hobgoblin/compiler/output/lang/java/JavaGeneratorTests.java index a99995b..4c7b0ff 100644 --- a/src/test/java/org/zwobble/hobgoblin/compiler/output/lang/java/JavaGeneratorTests.java +++ b/src/test/java/org/zwobble/hobgoblin/compiler/output/lang/java/JavaGeneratorTests.java @@ -5,6 +5,7 @@ import org.zwobble.hobgoblin.compiler.output.generators.java.JavaGenerator; import org.zwobble.hobgoblin.compiler.output.generators.java.JavaGeneratorConfig; import org.zwobble.hobgoblin.compiler.output.generators.java.JavaNamespaceConfig; import org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier; +import org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaPackageName; import org.zwobble.hobgoblin.compiler.types.NamespaceName; import java.util.List; @@ -23,9 +24,9 @@ public class JavaGeneratorTests { ); var generator = new JavaGenerator(config); - var result = generator.namespaceToJavaPackageParts(NamespaceName.of("a", "b")); + var result = generator.namespaceToJavaPackageName(NamespaceName.of("a", "b")); - assertThat(result, equalTo(List.of(JavaIdentifier.of("com"), JavaIdentifier.of("example"), JavaIdentifier.of("a"), JavaIdentifier.of("b")))); + assertThat(result, equalTo(JavaPackageName.of("com", "example", "a", "b"))); } @Test @@ -42,9 +43,9 @@ public class JavaGeneratorTests { ); var generator = new JavaGenerator(config); - var result = generator.namespaceToJavaPackageParts(NamespaceName.of("a", "b")); + var result = generator.namespaceToJavaPackageName(NamespaceName.of("a", "b")); - assertThat(result, equalTo(List.of(JavaIdentifier.of("com"), JavaIdentifier.of("other")))); + assertThat(result, equalTo(JavaPackageName.of("com", "other"))); } @Test @@ -61,8 +62,8 @@ public class JavaGeneratorTests { ); var generator = new JavaGenerator(config); - var result = generator.namespaceToJavaPackageParts(NamespaceName.of("a", "b", "c", "d")); + var result = generator.namespaceToJavaPackageName(NamespaceName.of("a", "b", "c", "d")); - assertThat(result, equalTo(List.of(JavaIdentifier.of("com"), JavaIdentifier.of("other"), JavaIdentifier.of("c"), JavaIdentifier.of("d")))); + assertThat(result, equalTo(JavaPackageName.of("com", "other", "c", "d"))); } } diff --git a/src/test/java/org/zwobble/hobgoblin/compiler/output/lang/java/JavaWriterTests.java b/src/test/java/org/zwobble/hobgoblin/compiler/output/lang/java/JavaWriterTests.java index ec09b72..b16494f 100644 --- a/src/test/java/org/zwobble/hobgoblin/compiler/output/lang/java/JavaWriterTests.java +++ b/src/test/java/org/zwobble/hobgoblin/compiler/output/lang/java/JavaWriterTests.java @@ -19,12 +19,12 @@ public class JavaWriterTests { @Test public void compilationUnit() throws IOException { var java = new JavaCompilationUnit( - List.of(JavaIdentifier.of("com"), JavaIdentifier.of("example"), JavaIdentifier.of("shapes")), + JavaPackageName.of("com", "example", "shapes"), new JavaClassDeclaration( JavaIdentifier.of("Rectangle"), List.of(), List.of(), - new JavaCustomArea(JavaTypeRef.topLevel(List.of(), JavaIdentifier.of("Rectangle")), "body"), + new JavaCustomArea(JavaTypeRef.topLevel(JavaPackageName.EMPTY, JavaIdentifier.of("Rectangle")), "body"), DocComment.EMPTY ) ); @@ -50,7 +50,7 @@ public class JavaWriterTests { JavaIdentifier.of("Rectangle"), List.of(), List.of(), - new JavaCustomArea(JavaTypeRef.topLevel(List.of(), JavaIdentifier.of("Rectangle")), "body"), + new JavaCustomArea(JavaTypeRef.topLevel(JavaPackageName.EMPTY, JavaIdentifier.of("Rectangle")), "body"), DocComment.EMPTY ); @@ -70,12 +70,12 @@ public class JavaWriterTests { JavaIdentifier.of("Rectangle"), List.of( JavaTypeRef.topLevel( - List.of(JavaIdentifier.of("com"), JavaIdentifier.of("example")), + JavaPackageName.of("com", "example"), JavaIdentifier.of("Shape") ) ), List.of(), - new JavaCustomArea(JavaTypeRef.topLevel(List.of(), JavaIdentifier.of("Rectangle")), "body"), + new JavaCustomArea(JavaTypeRef.topLevel(JavaPackageName.EMPTY, JavaIdentifier.of("Rectangle")), "body"), DocComment.EMPTY ); @@ -94,11 +94,11 @@ public class JavaWriterTests { var java = new JavaClassDeclaration( JavaIdentifier.of("Rectangle"), List.of( - JavaTypeRef.topLevel(List.of(JavaIdentifier.of("com"), JavaIdentifier.of("example")), JavaIdentifier.of("Shape")), - JavaTypeRef.topLevel(List.of(JavaIdentifier.of("com"), JavaIdentifier.of("example")), JavaIdentifier.of("Drawable")) + JavaTypeRef.topLevel(JavaPackageName.of("com", "example"), JavaIdentifier.of("Shape")), + JavaTypeRef.topLevel(JavaPackageName.of("com", "example"), JavaIdentifier.of("Drawable")) ), List.of(), - new JavaCustomArea(JavaTypeRef.topLevel(List.of(), JavaIdentifier.of("Rectangle")), "body"), + new JavaCustomArea(JavaTypeRef.topLevel(JavaPackageName.EMPTY, JavaIdentifier.of("Rectangle")), "body"), DocComment.EMPTY ); @@ -135,7 +135,7 @@ public class JavaWriterTests { JavaBlock.EMPTY ) ), - new JavaCustomArea(JavaTypeRef.topLevel(List.of(), JavaIdentifier.of("Rectangle")), "body"), + new JavaCustomArea(JavaTypeRef.topLevel(JavaPackageName.EMPTY, JavaIdentifier.of("Rectangle")), "body"), DocComment.EMPTY ); @@ -161,7 +161,7 @@ public class JavaWriterTests { JavaIdentifier.of("Point"), List.of(), List.of(), - new JavaCustomArea(JavaTypeRef.topLevel(List.of(), JavaIdentifier.of("Point")), "body"), + new JavaCustomArea(JavaTypeRef.topLevel(JavaPackageName.EMPTY, JavaIdentifier.of("Point")), "body"), new DocComment("A 2D point.") ); @@ -180,7 +180,7 @@ public class JavaWriterTests { public void emptyEnumDeclaration() throws IOException { var java = JavaEnumDeclaration.arbitrary() .withName(JavaIdentifier.of("SmallNumber")) - .withCustomArea(JavaCustomArea.forType(JavaTypeRef.topLevel(List.of(), JavaIdentifier.of("SmallNumber")), "body")) + .withCustomArea(JavaCustomArea.forType(JavaTypeRef.topLevel(JavaPackageName.EMPTY, JavaIdentifier.of("SmallNumber")), "body")) .build(); var string = write(writer -> writer.writeTypeDeclaration(java)); @@ -197,7 +197,7 @@ public class JavaWriterTests { public void enumDeclarationWithConstants() throws IOException { var java = JavaEnumDeclaration.arbitrary() .withName(JavaIdentifier.of("SmallNumber")) - .withCustomArea(JavaCustomArea.forType(JavaTypeRef.topLevel(List.of(), JavaIdentifier.of("SmallNumber")), "body")) + .withCustomArea(JavaCustomArea.forType(JavaTypeRef.topLevel(JavaPackageName.EMPTY, JavaIdentifier.of("SmallNumber")), "body")) .withConstants(List.of( JavaEnumConstant.arbitrary().withName(JavaIdentifier.of("ZERO")).build(), JavaEnumConstant.arbitrary().withName(JavaIdentifier.of("ONE")).build(), @@ -224,7 +224,7 @@ public class JavaWriterTests { var java = JavaEnumDeclaration.arbitrary() .withName(JavaIdentifier.of("SmallNumber")) .withDocComment(new DocComment("A small number.")) - .withCustomArea(JavaCustomArea.forType(JavaTypeRef.topLevel(List.of(), JavaIdentifier.of("SmallNumber")), "body")) + .withCustomArea(JavaCustomArea.forType(JavaTypeRef.topLevel(JavaPackageName.EMPTY, JavaIdentifier.of("SmallNumber")), "body")) .build(); var string = write(writer -> writer.writeTypeDeclaration(java)); @@ -245,7 +245,7 @@ public class JavaWriterTests { JavaInterfaceOpenness.OPEN, List.of(), List.of(), - new JavaCustomArea(JavaTypeRef.topLevel(List.of(), JavaIdentifier.of("Shape")), "body"), + new JavaCustomArea(JavaTypeRef.topLevel(JavaPackageName.EMPTY, JavaIdentifier.of("Shape")), "body"), DocComment.EMPTY ); @@ -266,7 +266,7 @@ public class JavaWriterTests { JavaInterfaceOpenness.SEALED, List.of(), List.of(), - new JavaCustomArea(JavaTypeRef.topLevel(List.of(), JavaIdentifier.of("Shape")), "body"), + new JavaCustomArea(JavaTypeRef.topLevel(JavaPackageName.EMPTY, JavaIdentifier.of("Shape")), "body"), DocComment.EMPTY ); @@ -286,11 +286,11 @@ public class JavaWriterTests { JavaIdentifier.of("Shape"), JavaInterfaceOpenness.SEALED, List.of( - JavaTypeRef.topLevel(List.of(JavaIdentifier.of("abc"), JavaIdentifier.of("def")), JavaIdentifier.of("One")), - JavaTypeRef.topLevel(List.of(JavaIdentifier.of("abc"), JavaIdentifier.of("def")), JavaIdentifier.of("Two")) + JavaTypeRef.topLevel(JavaPackageName.of("abc", "def"), JavaIdentifier.of("One")), + JavaTypeRef.topLevel(JavaPackageName.of("abc", "def"), JavaIdentifier.of("Two")) ), List.of(), - new JavaCustomArea(JavaTypeRef.topLevel(List.of(), JavaIdentifier.of("Shape")), "body"), + new JavaCustomArea(JavaTypeRef.topLevel(JavaPackageName.EMPTY, JavaIdentifier.of("Shape")), "body"), DocComment.EMPTY ); @@ -311,7 +311,7 @@ public class JavaWriterTests { JavaInterfaceOpenness.OPEN, List.of(), List.of(), - new JavaCustomArea(JavaTypeRef.topLevel(List.of(), JavaIdentifier.of("Shape")), "body"), + new JavaCustomArea(JavaTypeRef.topLevel(JavaPackageName.EMPTY, JavaIdentifier.of("Shape")), "body"), new DocComment("A 2D shape.") ); @@ -350,7 +350,7 @@ public class JavaWriterTests { JavaBlock.EMPTY ) ), - new JavaCustomArea(JavaTypeRef.topLevel(List.of(), JavaIdentifier.of("Shape")), "body"), + new JavaCustomArea(JavaTypeRef.topLevel(JavaPackageName.EMPTY, JavaIdentifier.of("Shape")), "body"), DocComment.EMPTY ); @@ -377,7 +377,7 @@ public class JavaWriterTests { List.of(), List.of(), List.of(), - new JavaCustomArea(JavaTypeRef.topLevel(List.of(), JavaIdentifier.of("Point")), "body"), + new JavaCustomArea(JavaTypeRef.topLevel(JavaPackageName.EMPTY, JavaIdentifier.of("Point")), "body"), DocComment.EMPTY ); @@ -398,7 +398,7 @@ public class JavaWriterTests { List.of(), List.of(), List.of(), - new JavaCustomArea(JavaTypeRef.topLevel(List.of(), JavaIdentifier.of("Point")), "body"), + new JavaCustomArea(JavaTypeRef.topLevel(JavaPackageName.EMPTY, JavaIdentifier.of("Point")), "body"), new DocComment("A 2D point.") ); @@ -419,10 +419,10 @@ public class JavaWriterTests { JavaIdentifier.of("Rectangle"), List.of(), List.of( - JavaTypeRef.topLevel(List.of(JavaIdentifier.of("com"), JavaIdentifier.of("example")), JavaIdentifier.of("Shape")) + JavaTypeRef.topLevel(JavaPackageName.of("com", "example"), JavaIdentifier.of("Shape")) ), List.of(), - new JavaCustomArea(JavaTypeRef.topLevel(List.of(), JavaIdentifier.of("Rectangle")), "body"), + new JavaCustomArea(JavaTypeRef.topLevel(JavaPackageName.EMPTY, JavaIdentifier.of("Rectangle")), "body"), DocComment.EMPTY ); @@ -442,11 +442,11 @@ public class JavaWriterTests { JavaIdentifier.of("Rectangle"), List.of(), List.of( - JavaTypeRef.topLevel(List.of(JavaIdentifier.of("com"), JavaIdentifier.of("example")), JavaIdentifier.of("Shape")), - JavaTypeRef.topLevel(List.of(JavaIdentifier.of("com"), JavaIdentifier.of("example")), JavaIdentifier.of("Drawable")) + JavaTypeRef.topLevel(JavaPackageName.of("com", "example"), JavaIdentifier.of("Shape")), + JavaTypeRef.topLevel(JavaPackageName.of("com", "example"), JavaIdentifier.of("Drawable")) ), List.of(), - new JavaCustomArea(JavaTypeRef.topLevel(List.of(), JavaIdentifier.of("Rectangle")), "body"), + new JavaCustomArea(JavaTypeRef.topLevel(JavaPackageName.EMPTY, JavaIdentifier.of("Rectangle")), "body"), DocComment.EMPTY ); @@ -484,7 +484,7 @@ public class JavaWriterTests { JavaBlock.EMPTY ) ), - new JavaCustomArea(JavaTypeRef.topLevel(List.of(), JavaIdentifier.of("Rectangle")), "body"), + new JavaCustomArea(JavaTypeRef.topLevel(JavaPackageName.EMPTY, JavaIdentifier.of("Rectangle")), "body"), DocComment.EMPTY ); @@ -830,7 +830,7 @@ public class JavaWriterTests { @Test public void staticFieldAccess() throws IOException { var java = new JavaStaticFieldAccess( - JavaTypeRef.topLevel(List.of(JavaIdentifier.of("one")), JavaIdentifier.of("Two")), + JavaTypeRef.topLevel(JavaPackageName.of("one"), JavaIdentifier.of("Two")), JavaIdentifier.of("three") ); @@ -842,7 +842,7 @@ public class JavaWriterTests { @Test public void referenceToMethodOnType() throws IOException { var java = new JavaMethodRef( - JavaTypeRef.topLevel(List.of(JavaIdentifier.of("one")), JavaIdentifier.of("Two")), + JavaTypeRef.topLevel(JavaPackageName.of("one"), JavaIdentifier.of("Two")), JavaIdentifier.of("three") ); @@ -854,7 +854,7 @@ public class JavaWriterTests { @Test public void newExpression() throws IOException { var java = new JavaNewExpression( - JavaTypeRef.topLevel(List.of(JavaIdentifier.of("one")), JavaIdentifier.of("Two")), + JavaTypeRef.topLevel(JavaPackageName.of("one"), JavaIdentifier.of("Two")), List.of(new JavaIntegerLiteral(1), new JavaIntegerLiteral(2)) ); @@ -875,7 +875,7 @@ public class JavaWriterTests { @Test public void typeRefWithoutArgsHasNoAngleBrackets() throws IOException { var java = JavaTypeRef.topLevel( - List.of(JavaIdentifier.of("abc"), JavaIdentifier.of("def")), + JavaPackageName.of("abc", "def"), JavaIdentifier.of("One") ); @@ -887,11 +887,11 @@ public class JavaWriterTests { @Test public void typeRefWithArgsHasAngleBrackets() throws IOException { var java = JavaTypeRef.topLevelGeneric( - List.of(JavaIdentifier.of("abc"), JavaIdentifier.of("def")), + JavaPackageName.of("abc", "def"), JavaIdentifier.of("One"), List.of( - JavaTypeArg.invariant(JavaTypeRef.topLevel(List.of(), JavaIdentifier.of("Two"))), - JavaTypeArg.invariant(JavaTypeRef.topLevel(List.of(), JavaIdentifier.of("Three"))) + JavaTypeArg.invariant(JavaTypeRef.topLevel(JavaPackageName.EMPTY, JavaIdentifier.of("Two"))), + JavaTypeArg.invariant(JavaTypeRef.topLevel(JavaPackageName.EMPTY, JavaIdentifier.of("Three"))) ) ); @@ -903,11 +903,11 @@ public class JavaWriterTests { @Test public void typeRefArgCanBeSuper() throws IOException { var java = JavaTypeRef.topLevelGeneric( - List.of(JavaIdentifier.of("abc"), JavaIdentifier.of("def")), + JavaPackageName.of("abc", "def"), JavaIdentifier.of("One"), List.of( - JavaTypeArg.superType(JavaTypeRef.topLevel(List.of(), JavaIdentifier.of("Two"))), - JavaTypeArg.superType(JavaTypeRef.topLevel(List.of(), JavaIdentifier.of("Three"))) + JavaTypeArg.superType(JavaTypeRef.topLevel(JavaPackageName.EMPTY, JavaIdentifier.of("Two"))), + JavaTypeArg.superType(JavaTypeRef.topLevel(JavaPackageName.EMPTY, JavaIdentifier.of("Three"))) ) ); @@ -919,7 +919,7 @@ public class JavaWriterTests { @Test public void typeRefInnerTypeNameIsSeparatedByDot() throws IOException { var java = JavaTypeRef.inner( - List.of(JavaIdentifier.of("abc"), JavaIdentifier.of("def")), + JavaPackageName.of("abc", "def"), JavaIdentifier.of("One"), JavaIdentifier.of("Two") ); @@ -936,7 +936,7 @@ public class JavaWriterTests { List.of(), List.of(), List.of(), - new JavaCustomArea(JavaTypeRef.topLevel(List.of(), JavaIdentifier.of("Point")), "body"), + new JavaCustomArea(JavaTypeRef.topLevel(JavaPackageName.EMPTY, JavaIdentifier.of("Point")), "body"), DocComment.EMPTY ); diff --git a/src/test/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaCompilationUnitMatcher.java b/src/test/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaCompilationUnitMatcher.java index 1c6541b..f2d516e 100644 --- a/src/test/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaCompilationUnitMatcher.java +++ b/src/test/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaCompilationUnitMatcher.java @@ -25,7 +25,7 @@ public class JavaCompilationUnitMatcher implements org.zwobble.precisely.Matcher return org.zwobble.precisely.Matchers.instanceOf(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCompilationUnit.class, this.submatchers); } - public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCompilationUnitMatcher withPackageName(org.zwobble.precisely.Matcher<? super java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier>> packageName) { + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCompilationUnitMatcher withPackageName(org.zwobble.precisely.Matcher<? super org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaPackageName> packageName) { return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCompilationUnitMatcher(java.util.stream.Stream.concat(this.submatchers.stream(), java.util.stream.Stream.of(org.zwobble.precisely.Matchers.has("packageName", org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCompilationUnit::packageName, packageName))).toList()); } diff --git a/src/test/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaPackageNameMatcher.java b/src/test/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaPackageNameMatcher.java new file mode 100644 index 0000000..aa6eda6 --- /dev/null +++ b/src/test/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaPackageNameMatcher.java @@ -0,0 +1,34 @@ +// Generated by hobgoblin. + +package org.zwobble.hobgoblin.compiler.output.lang.java.ast; + +public class JavaPackageNameMatcher implements org.zwobble.precisely.Matcher<java.lang.Object> { + public static org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaPackageNameMatcher isJavaPackageName() { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaPackageNameMatcher(java.util.List.of()); + } + + private final java.util.List<org.zwobble.precisely.Matcher<? super org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaPackageName>> submatchers; + + private JavaPackageNameMatcher(java.util.List<org.zwobble.precisely.Matcher<? super org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaPackageName>> submatchers) { + this.submatchers = submatchers; + } + + public org.zwobble.precisely.MatchResult match(java.lang.Object actual) { + return this.toMatcher().match(actual); + } + + public org.zwobble.precisely.TextTree describe() { + return this.toMatcher().describe(); + } + + private org.zwobble.precisely.Matcher<java.lang.Object> toMatcher() { + return org.zwobble.precisely.Matchers.instanceOf(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaPackageName.class, this.submatchers); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaPackageNameMatcher withParts(org.zwobble.precisely.Matcher<? super java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier>> parts) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaPackageNameMatcher(java.util.stream.Stream.concat(this.submatchers.stream(), java.util.stream.Stream.of(org.zwobble.precisely.Matchers.has("parts", org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaPackageName::parts, parts))).toList()); + } + + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaPackageNameMatcher body + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaPackageNameMatcher body +} |
