From fe9d820d35bd3759d390593fc08ec241fbb21680 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sun, 10 May 2026 15:35:21 +0100 Subject: Use docs comments in java-types output --- .../compiler/output/lang/java/JavaWriterTests.java | 86 ++++++++++++++++++++-- 1 file changed, 78 insertions(+), 8 deletions(-) (limited to 'src/test/java/org/zwobble') 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)); @@ -59,11 +58,29 @@ 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)); @@ -92,6 +110,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()); -- cgit v1.2.3