summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-07-26 15:24:03 +0100
committerMichael Williamson <mike@zwobble.org>2026-07-26 15:24:03 +0100
commitdd46fef443bacee1f17bca2a234a13a12c0ca3fa (patch)
treedc38400666d019a85bea4cf10e86c23b4c9a9e18
parent334fa19478b683c21c0f4a09ba9d982c5122d366 (diff)
Write java-transient-0 output
-rw-r--r--examples/11-transient-0/output/java/.gitignore1
-rw-r--r--examples/11-transient-0/output/java/src/test/java/org/zwobble/example/Transient0Tests.java27
-rw-r--r--src/test/java/org/zwobble/hobgoblin/compiler/ExampleTests.java1
3 files changed, 29 insertions, 0 deletions
diff --git a/examples/11-transient-0/output/java/.gitignore b/examples/11-transient-0/output/java/.gitignore
index ff511d4..2fcf0b8 100644
--- a/examples/11-transient-0/output/java/.gitignore
+++ b/examples/11-transient-0/output/java/.gitignore
@@ -1,2 +1,3 @@
/src/gen/
/target/
+/transient-0/
diff --git a/examples/11-transient-0/output/java/src/test/java/org/zwobble/example/Transient0Tests.java b/examples/11-transient-0/output/java/src/test/java/org/zwobble/example/Transient0Tests.java
index 6bab165..610532e 100644
--- a/examples/11-transient-0/output/java/src/test/java/org/zwobble/example/Transient0Tests.java
+++ b/examples/11-transient-0/output/java/src/test/java/org/zwobble/example/Transient0Tests.java
@@ -5,6 +5,8 @@ import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
+import java.nio.file.Files;
+import java.nio.file.Path;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -35,6 +37,7 @@ public class Transient0Tests {
var value = new StructWithBool(true, false);
assertRoundTripEncoding(
+ "StructWithBool",
value,
HobgoblinTransient0Data::encodeStructWithBool,
HobgoblinTransient0Data::decodeStructWithBool
@@ -46,6 +49,7 @@ public class Transient0Tests {
var value = new StructWithInt32(10, 25);
assertRoundTripEncoding(
+ "StructWithInt32",
value,
HobgoblinTransient0Data::encodeStructWithInt32,
HobgoblinTransient0Data::decodeStructWithInt32
@@ -57,6 +61,7 @@ public class Transient0Tests {
var value = new StructWithInt64(10, 25);
assertRoundTripEncoding(
+ "StructWithInt64",
value,
HobgoblinTransient0Data::encodeStructWithInt64,
HobgoblinTransient0Data::decodeStructWithInt64
@@ -68,6 +73,7 @@ public class Transient0Tests {
var value = new StructWithString("abc", "def");
assertRoundTripEncoding(
+ "StructWithString",
value,
HobgoblinTransient0Data::encodeStructWithString,
HobgoblinTransient0Data::decodeStructWithString
@@ -79,6 +85,7 @@ public class Transient0Tests {
var value = new StructWithStruct(new StructWithInt32(10, 25), 42);
assertRoundTripEncoding(
+ "StructWithStruct",
value,
HobgoblinTransient0Data::encodeStructWithStruct,
HobgoblinTransient0Data::decodeStructWithStruct
@@ -97,6 +104,7 @@ public class Transient0Tests {
);
assertRoundTripEncoding(
+ "StructWithList",
value,
HobgoblinTransient0Data::encodeStructWithList,
HobgoblinTransient0Data::decodeStructWithList
@@ -111,6 +119,7 @@ public class Transient0Tests {
);
assertRoundTripEncoding(
+ "StructWithOption_None",
value,
HobgoblinTransient0Data::encodeStructWithOption,
HobgoblinTransient0Data::decodeStructWithOption
@@ -125,6 +134,7 @@ public class Transient0Tests {
);
assertRoundTripEncoding(
+ "StructWithOption_Some",
value,
HobgoblinTransient0Data::encodeStructWithOption,
HobgoblinTransient0Data::decodeStructWithOption
@@ -134,18 +144,21 @@ public class Transient0Tests {
@Test
public void enumWithVariants() throws IOException {
assertRoundTripEncoding(
+ "EnumWithVariants_zero",
EnumWithVariants.ZERO,
HobgoblinTransient0Data::encodeEnumWithVariants,
HobgoblinTransient0Data::decodeEnumWithVariants
);
assertRoundTripEncoding(
+ "EnumWithVariants_one",
EnumWithVariants.ONE,
HobgoblinTransient0Data::encodeEnumWithVariants,
HobgoblinTransient0Data::decodeEnumWithVariants
);
assertRoundTripEncoding(
+ "EnumWithVariants_two",
EnumWithVariants.TWO,
HobgoblinTransient0Data::encodeEnumWithVariants,
HobgoblinTransient0Data::decodeEnumWithVariants
@@ -160,6 +173,7 @@ public class Transient0Tests {
);
assertRoundTripEncoding(
+ "StructWithEnum",
value,
HobgoblinTransient0Data::encodeStructWithEnum,
HobgoblinTransient0Data::decodeStructWithEnum
@@ -169,12 +183,14 @@ public class Transient0Tests {
@Test
public void sumWithVariants() throws IOException {
assertRoundTripEncoding(
+ "SumWithVariants_VariantOne",
new VariantOne(10),
HobgoblinTransient0Data::encodeSumWithVariants,
HobgoblinTransient0Data::decodeSumWithVariants
);
assertRoundTripEncoding(
+ "SumWithVariants_VariantTwo",
new VariantTwo(25),
HobgoblinTransient0Data::encodeSumWithVariants,
HobgoblinTransient0Data::decodeSumWithVariants
@@ -189,6 +205,7 @@ public class Transient0Tests {
);
assertRoundTripEncoding(
+ "StructWithSum",
value,
HobgoblinTransient0Data::encodeStructWithSum,
HobgoblinTransient0Data::decodeStructWithSum
@@ -203,6 +220,7 @@ public class Transient0Tests {
var value = new StructWithListOfShared(List.of(a, a, b, a, b));
var decodedValue = assertRoundTripEncoding(
+ "StructWithListOfShared",
value,
HobgoblinTransient0Data::encodeStructWithListOfShared,
HobgoblinTransient0Data::decodeStructWithListOfShared
@@ -221,6 +239,7 @@ public class Transient0Tests {
var value = new StructWithDifferentSharedTypes(a, b, c);
assertRoundTripEncoding(
+ "StructWithDifferentSharedTypes",
value,
HobgoblinTransient0Data::encodeStructWithDifferentSharedTypes,
HobgoblinTransient0Data::decodeStructWithDifferentSharedTypes
@@ -238,6 +257,7 @@ public class Transient0Tests {
var value = new StructWithSharedSumAndVariant(a, a);
assertRoundTripEncoding(
+ "StructWithSharedSumAndVariant",
value,
HobgoblinTransient0Data::encodeStructWithSharedSumAndVariant,
HobgoblinTransient0Data::decodeStructWithSharedSumAndVariant
@@ -245,6 +265,7 @@ public class Transient0Tests {
}
private <T> T assertRoundTripEncoding(
+ String name,
T value,
Encoder<T> encoder,
Decoder<T> decoder
@@ -254,6 +275,12 @@ public class Transient0Tests {
encoder.encode(value, outputStream, new HashMap<>());
var bytes = outputStream.toByteArray();
+ var outputDir = System.getenv("HOBGOBLIN_OUTPUT_DIR");
+ var transient0OutputDir = Path.of(outputDir).resolve("transient-0");
+ Files.createDirectories(transient0OutputDir);
+ var transient0OutputPath = transient0OutputDir.resolve(name);
+ Files.write(transient0OutputPath, bytes);
+
var inputStream = new ByteArrayInputStream(bytes);
var decodedValue = decoder.decode(inputStream, new ArrayList<>());
diff --git a/src/test/java/org/zwobble/hobgoblin/compiler/ExampleTests.java b/src/test/java/org/zwobble/hobgoblin/compiler/ExampleTests.java
index 73b611a..cc5e19c 100644
--- a/src/test/java/org/zwobble/hobgoblin/compiler/ExampleTests.java
+++ b/src/test/java/org/zwobble/hobgoblin/compiler/ExampleTests.java
@@ -61,6 +61,7 @@ public class ExampleTests {
try {
TestProcessRunner.command(command)
.cwd(outputPath)
+ .addEnvVar("HOBGOBLIN_OUTPUT_DIR", outputPath.toAbsolutePath().toString())
.runCaptureOutput()
.throwOnError();
writeLastTestRun(lastTestRunPath, new LastTestRun(currentHash, true));