summaryrefslogtreecommitdiff
path: root/src/test/java/org/zwobble
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-05-10 15:35:21 +0100
committerMichael Williamson <mike@zwobble.org>2026-05-10 15:35:21 +0100
commitfe9d820d35bd3759d390593fc08ec241fbb21680 (patch)
tree2d087d84133eb52fa16dc0479e05825d60f96161 /src/test/java/org/zwobble
parent4ecf8383268b2698bf4f81390da26898a6a5797f (diff)
Use docs comments in java-types output
Diffstat (limited to 'src/test/java/org/zwobble')
-rw-r--r--src/test/java/org/zwobble/hobgoblin/compiler/output/lang/java/JavaWriterTests.java86
1 files changed, 78 insertions, 8 deletions
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 0f2313a..36e7202 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
@@ -2,10 +2,7 @@ package org.zwobble.hobgoblin.compiler.output.lang.java;
import org.junit.jupiter.api.Test;
import org.zwobble.hobgoblin.compiler.output.CodeWriter;
-import org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassDeclaration;
-import org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceDeclaration;
-import org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodDeclaration;
-import org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef;
+import org.zwobble.hobgoblin.compiler.output.lang.java.ast.*;
import java.io.IOException;
import java.io.StringWriter;
@@ -19,7 +16,8 @@ public class JavaWriterTests {
public void emptyClassDeclaration() throws IOException {
var java = new JavaClassDeclaration(
"Rectangle",
- List.of()
+ List.of(),
+ ""
);
var string = write(writer -> writer.writeTypeDeclaration(java));
@@ -43,7 +41,8 @@ public class JavaWriterTests {
"b",
JavaTypeRef.VOID
)
- )
+ ),
+ ""
);
var string = write(writer -> writer.writeTypeDeclaration(java));
@@ -60,10 +59,28 @@ public class JavaWriterTests {
}
@Test
+ public void classDeclarationWithDocComment() throws IOException {
+ var java = new JavaClassDeclaration(
+ "Point",
+ List.of(),
+ "A 2D point."
+ );
+
+ var string = write(writer -> writer.writeTypeDeclaration(java));
+
+ assertThat(string, equalTo("""
+ /// A 2D point.
+ public class Point {
+ }"""
+ ));
+ }
+
+ @Test
public void emptyInterfaceDeclaration() throws IOException {
var java = new JavaInterfaceDeclaration(
"Shape",
- List.of()
+ List.of(),
+ ""
);
var string = write(writer -> writer.writeTypeDeclaration(java));
@@ -81,7 +98,8 @@ public class JavaWriterTests {
List.of(
new JavaTypeRef(List.of("abc", "def"), "One", List.of()),
new JavaTypeRef(List.of("abc", "def"), "Two", List.of())
- )
+ ),
+ ""
);
var string = write(writer -> writer.writeTypeDeclaration(java));
@@ -93,6 +111,58 @@ public class JavaWriterTests {
}
@Test
+ public void interfaceDeclarationWithDocComment() throws IOException {
+ var java = new JavaInterfaceDeclaration(
+ "Shape",
+ List.of(),
+ "A 2D shape."
+ );
+
+ var string = write(writer -> writer.writeTypeDeclaration(java));
+
+ assertThat(string, equalTo("""
+ /// A 2D shape.
+ public sealed interface Shape {
+ }"""
+ ));
+ }
+
+ @Test
+ public void emptyRecordDeclaration() throws IOException {
+ var java = new JavaRecordDeclaration(
+ "Point",
+ List.of(),
+ List.of(),
+ ""
+ );
+
+ var string = write(writer -> writer.writeTypeDeclaration(java));
+
+ assertThat(string, equalTo("""
+ public record Point() {
+ }"""
+ ));
+ }
+
+ @Test
+ public void recordDeclarationWithDocComment() throws IOException {
+ var java = new JavaRecordDeclaration(
+ "Point",
+ List.of(),
+ List.of(),
+ "A 2D point."
+ );
+
+ var string = write(writer -> writer.writeTypeDeclaration(java));
+
+ assertThat(string, equalTo("""
+ /// A 2D point.
+ public record Point() {
+ }"""
+ ));
+ }
+
+ @Test
public void typeRefWithoutArgsHasNoAngleBrackets() throws IOException {
var java = new JavaTypeRef(List.of("abc", "def"), "One", List.of());