From a1b78ec441aea70ae7494ca2b2925720d3f4ab3c Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Fri, 12 Jun 2026 16:19:50 +0100 Subject: Add Java constructor --- .../compiler/output/lang/java/JavaWriterTests.java | 91 ++++++++++++++++++++++ 1 file changed, 91 insertions(+) (limited to 'src/test/java/org') 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 426b1c1..0e24939 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 @@ -577,6 +577,97 @@ public class JavaWriterTests { )); } + @Test + public void emptyConstructor() throws IOException { + var java = new JavaConstructorDeclaration( + "Rectangle", + JavaVisibility.PUBLIC, + List.of(), + JavaBlock.EMPTY + ); + + var string = write(writer -> writer.writeClassBodyDeclaration(java)); + + assertThat(string, equalTo(""" + public Rectangle() { + }""" + )); + } + + @Test + public void publicConstructor() throws IOException { + var java = new JavaConstructorDeclaration( + "Rectangle", + JavaVisibility.PUBLIC, + List.of(), + JavaBlock.EMPTY + ); + + var string = write(writer -> writer.writeClassBodyDeclaration(java)); + + assertThat(string, equalTo(""" + public Rectangle() { + }""" + )); + } + + @Test + public void privateConstructor() throws IOException { + var java = new JavaConstructorDeclaration( + "Rectangle", + JavaVisibility.PRIVATE, + List.of(), + JavaBlock.EMPTY + ); + + var string = write(writer -> writer.writeClassBodyDeclaration(java)); + + assertThat(string, equalTo(""" + private Rectangle() { + }""" + )); + } + + @Test + public void constructorWithParams() throws IOException { + var java = new JavaConstructorDeclaration( + "Rectangle", + JavaVisibility.PUBLIC, + List.of( + new JavaParam(JavaTypeRef.INT, "b"), + new JavaParam(JavaTypeRef.LONG, "c") + ), + JavaBlock.EMPTY + ); + + var string = write(writer -> writer.writeClassBodyDeclaration(java)); + + assertThat(string, equalTo(""" + public Rectangle(int b, long c) { + }""" + )); + } + + @Test + public void constructorWithBody() throws IOException { + var java = new JavaConstructorDeclaration( + "Rectangle", + JavaVisibility.PUBLIC, + List.of(), + new JavaBlock(List.of( + new JavaReturn(new JavaIntegerLiteral(42)) + )) + ); + + var string = write(writer -> writer.writeClassBodyDeclaration(java)); + + assertThat(string, equalTo(""" + public Rectangle() { + return 42; + }""" + )); + } + @Test public void block() throws IOException { var java = new JavaBlock(List.of( -- cgit v1.2.3