summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-07-24 14:58:49 +0100
committerMichael Williamson <mike@zwobble.org>2026-07-24 14:58:49 +0100
commit615ea14404c04d155e2c911e53946ff434d59095 (patch)
treed527751fb2cf89ecc6e7bb8e1902ea72294025a3
parentd9374240857b256f66e9d3f84e1bf4747761ed1f (diff)
Add StructWithEnum to transient-0 tests
-rw-r--r--examples/10-transient-0/output/java/src/test/java/org/zwobble/example/Transient0Tests.java15
-rw-r--r--examples/10-transient-0/output/rust/src/gen/data.rs6
-rw-r--r--examples/10-transient-0/output/rust/src/gen/data/transient_0.rs12
-rw-r--r--examples/10-transient-0/src/data.hob5
4 files changed, 38 insertions, 0 deletions
diff --git a/examples/10-transient-0/output/java/src/test/java/org/zwobble/example/Transient0Tests.java b/examples/10-transient-0/output/java/src/test/java/org/zwobble/example/Transient0Tests.java
index 2ab3934..e5d13da 100644
--- a/examples/10-transient-0/output/java/src/test/java/org/zwobble/example/Transient0Tests.java
+++ b/examples/10-transient-0/output/java/src/test/java/org/zwobble/example/Transient0Tests.java
@@ -12,6 +12,7 @@ import org.junit.jupiter.api.Test;
import org.zwobble.example.types.data.EnumWithVariants;
import org.zwobble.example.types.data.HobgoblinTransient0Data;
import org.zwobble.example.types.data.StructWithBool;
+import org.zwobble.example.types.data.StructWithEnum;
import org.zwobble.example.types.data.StructWithInt32;
import org.zwobble.example.types.data.StructWithInt64;
import org.zwobble.example.types.data.StructWithList;
@@ -145,6 +146,20 @@ public class Transient0Tests {
}
@Test
+ public void structWithInner() throws IOException {
+ var value = new StructWithEnum(
+ EnumWithVariants.ONE,
+ 42
+ );
+
+ assertRoundTripEncoding(
+ value,
+ HobgoblinTransient0Data::encodeStructWithEnum,
+ HobgoblinTransient0Data::decodeStructWithEnum
+ );
+ }
+
+ @Test
public void sumWithVariants() throws IOException {
assertRoundTripEncoding(
new VariantOne(10),
diff --git a/examples/10-transient-0/output/rust/src/gen/data.rs b/examples/10-transient-0/output/rust/src/gen/data.rs
index ccabce6..dd9af46 100644
--- a/examples/10-transient-0/output/rust/src/gen/data.rs
+++ b/examples/10-transient-0/output/rust/src/gen/data.rs
@@ -50,6 +50,12 @@ pub enum EnumWithVariants {
}
#[derive(Debug, PartialEq)]
+pub struct StructWithEnum {
+ pub inner: crate::data::EnumWithVariants,
+ pub c: ::core::primitive::i32,
+}
+
+#[derive(Debug, PartialEq)]
pub enum SumWithVariants {
VariantOne(crate::data::VariantOne),
VariantTwo(crate::data::VariantTwo),
diff --git a/examples/10-transient-0/output/rust/src/gen/data/transient_0.rs b/examples/10-transient-0/output/rust/src/gen/data/transient_0.rs
index c1ded4c..9892a8c 100644
--- a/examples/10-transient-0/output/rust/src/gen/data/transient_0.rs
+++ b/examples/10-transient-0/output/rust/src/gen/data/transient_0.rs
@@ -156,6 +156,18 @@ pub fn decode_enum_with_variants(reader: &mut impl std::io::Read) -> ::std::io::
})
}
+pub fn encode_struct_with_enum(value: &crate::data::StructWithEnum, writer: &mut impl std::io::Write) -> ::std::io::Result::<()> {
+ todo!();
+ crate::transient_0::encode_int_32(&value.c, writer)?;
+ ::std::io::Result::Ok(())
+}
+
+pub fn decode_struct_with_enum(reader: &mut impl std::io::Read) -> ::std::io::Result::<crate::data::StructWithEnum> {
+ let inner = todo!();
+ let c = crate::transient_0::decode_int_32(reader)?;
+ std::io::Result::Ok(crate::data::StructWithEnum { inner: inner, c: c })
+}
+
pub fn encode_sum_with_variants(value: &crate::data::SumWithVariants, writer: &mut impl std::io::Write) -> ::std::io::Result::<()> {
match value {
crate::data::SumWithVariants::VariantOne(value) => {
diff --git a/examples/10-transient-0/src/data.hob b/examples/10-transient-0/src/data.hob
index 5f82992..3de6265 100644
--- a/examples/10-transient-0/src/data.hob
+++ b/examples/10-transient-0/src/data.hob
@@ -39,6 +39,11 @@ enum EnumWithVariants {
variant two;
}
+struct StructWithEnum {
+ field inner: EnumWithVariants;
+ field c: Int32;
+}
+
sum SumWithVariants {
variant VariantOne;
variant VariantTwo;