From 0e9e0974e0c2a8906e484082dc4e6666faa8a2a7 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Fri, 24 Jul 2026 15:02:27 +0100 Subject: Add struct with sum 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 c2564aa..6369f93 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 @@ -19,6 +19,7 @@ import org.zwobble.example.types.data.StructWithList; import org.zwobble.example.types.data.StructWithOption; import org.zwobble.example.types.data.StructWithString; import org.zwobble.example.types.data.StructWithStruct; +import org.zwobble.example.types.data.StructWithSum; import org.zwobble.example.types.data.VariantOne; import org.zwobble.example.types.data.VariantTwo; @@ -174,6 +175,20 @@ public class Transient0Tests { ); } + @Test + public void structWithSum() throws IOException { + var value = new StructWithSum( + new VariantTwo(25), + 42 + ); + + assertRoundTripEncoding( + value, + HobgoblinTransient0Data::encodeStructWithSum, + HobgoblinTransient0Data::decodeStructWithSum + ); + } + private void assertRoundTripEncoding( T value, Encoder encoder, 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 dd9af46..0ea6c0f 100644 --- a/examples/10-transient-0/output/rust/src/gen/data.rs +++ b/examples/10-transient-0/output/rust/src/gen/data.rs @@ -82,3 +82,9 @@ pub struct VariantOne { pub struct VariantTwo { pub a: ::core::primitive::i64, } + +#[derive(Debug, PartialEq)] +pub struct StructWithSum { + pub inner: crate::data::SumWithVariants, + pub b: ::core::primitive::i32, +} 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 867318d..cd7b772 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 @@ -209,3 +209,15 @@ pub fn decode_variant_two(reader: &mut impl std::io::Read) -> ::std::io::Result: let a = crate::transient_0::decode_int_64(reader)?; std::io::Result::Ok(crate::data::VariantTwo { a: a }) } + +pub fn encode_struct_with_sum(value: &crate::data::StructWithSum, writer: &mut impl std::io::Write) -> ::std::io::Result::<()> { + todo!(); + crate::transient_0::encode_int_32(&value.b, writer)?; + ::std::io::Result::Ok(()) +} + +pub fn decode_struct_with_sum(reader: &mut impl std::io::Read) -> ::std::io::Result:: { + let inner = todo!(); + let b = crate::transient_0::decode_int_32(reader)?; + std::io::Result::Ok(crate::data::StructWithSum { inner: inner, b: b }) +} diff --git a/examples/10-transient-0/src/data.hob b/examples/10-transient-0/src/data.hob index 3de6265..bbfd882 100644 --- a/examples/10-transient-0/src/data.hob +++ b/examples/10-transient-0/src/data.hob @@ -56,3 +56,8 @@ struct VariantOne { struct VariantTwo { field a: Int64; } + +struct StructWithSum { + field inner: SumWithVariants; + field b: Int32; +} -- cgit v1.2.3