From 615ea14404c04d155e2c911e53946ff434d59095 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Fri, 24 Jul 2026 14:58:49 +0100 Subject: Add StructWithEnum to transient-0 tests --- .../test/java/org/zwobble/example/Transient0Tests.java | 15 +++++++++++++++ examples/10-transient-0/output/rust/src/gen/data.rs | 6 ++++++ .../output/rust/src/gen/data/transient_0.rs | 12 ++++++++++++ examples/10-transient-0/src/data.hob | 5 +++++ 4 files changed, 38 insertions(+) (limited to 'examples') 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; @@ -144,6 +145,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( 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 @@ -49,6 +49,12 @@ pub enum EnumWithVariants { Two, } +#[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), 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:: { + 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; -- cgit v1.2.3