From 5de41ad211a542ce1ae26a1db3f219b1aaf4c9f4 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 25 Jul 2026 17:44:47 +0100 Subject: Test shared values of different types in java-transient-0 --- .../test/java/org/zwobble/example/Transient0Tests.java | 16 ++++++++++++++++ examples/11-transient-0/output/rust/src/gen/data.rs | 7 +++++++ .../output/rust/src/gen/data/transient_0.rs | 14 ++++++++++++++ examples/11-transient-0/src/data.hob | 6 ++++++ 4 files changed, 43 insertions(+) (limited to 'examples/11-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 abae7e0..dbbeb3c 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 @@ -15,6 +15,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.StructWithDifferentSharedTypes; import org.zwobble.example.types.data.StructWithEnum; import org.zwobble.example.types.data.StructWithInt32; import org.zwobble.example.types.data.StructWithInt64; @@ -210,6 +211,21 @@ public class Transient0Tests { Assertions.assertSame(decodedValue.inner().get(2), decodedValue.inner().get(4)); } + @Test + public void structWithDifferentSharedTypes() throws IOException { + var a = new StructWithInt32(10, 25); + var b = new StructWithInt64(42, 47); + var c = new StructWithInt32(52, 57); + + var value = new StructWithDifferentSharedTypes(a, b, c); + + assertRoundTripEncoding( + value, + HobgoblinTransient0Data::encodeStructWithDifferentSharedTypes, + HobgoblinTransient0Data::decodeStructWithDifferentSharedTypes + ); + } + private T assertRoundTripEncoding( T value, Encoder encoder, diff --git a/examples/11-transient-0/output/rust/src/gen/data.rs b/examples/11-transient-0/output/rust/src/gen/data.rs index d31f341..6703918 100644 --- a/examples/11-transient-0/output/rust/src/gen/data.rs +++ b/examples/11-transient-0/output/rust/src/gen/data.rs @@ -93,3 +93,10 @@ pub struct StructWithSum { pub struct StructWithListOfShared { pub inner: ::std::vec::Vec::<::std::sync::Arc::>, } + +#[derive(Debug, PartialEq)] +pub struct StructWithDifferentSharedTypes { + pub a: ::std::sync::Arc::, + pub b: ::std::sync::Arc::, + pub c: ::std::sync::Arc::, +} diff --git a/examples/11-transient-0/output/rust/src/gen/data/transient_0.rs b/examples/11-transient-0/output/rust/src/gen/data/transient_0.rs index 442e723..fb07229 100644 --- a/examples/11-transient-0/output/rust/src/gen/data/transient_0.rs +++ b/examples/11-transient-0/output/rust/src/gen/data/transient_0.rs @@ -243,3 +243,17 @@ pub fn decode_struct_with_list_of_shared(reader: &mut impl std::io::Read) -> ::s }; std::io::Result::Ok(crate::data::StructWithListOfShared { inner: inner }) } + +pub fn encode_struct_with_different_shared_types(value: &crate::data::StructWithDifferentSharedTypes, writer: &mut impl std::io::Write) -> ::std::io::Result::<()> { + crate::data::transient_0::encode_struct_with_int_32((&value.a).as_ref(), writer)?; + crate::data::transient_0::encode_struct_with_int_64((&value.b).as_ref(), writer)?; + crate::data::transient_0::encode_struct_with_int_32((&value.c).as_ref(), writer)?; + ::std::io::Result::Ok(()) +} + +pub fn decode_struct_with_different_shared_types(reader: &mut impl std::io::Read) -> ::std::io::Result:: { + let a = ::std::sync::Arc::new(crate::data::transient_0::decode_struct_with_int_32(reader)?); + let b = ::std::sync::Arc::new(crate::data::transient_0::decode_struct_with_int_64(reader)?); + let c = ::std::sync::Arc::new(crate::data::transient_0::decode_struct_with_int_32(reader)?); + std::io::Result::Ok(crate::data::StructWithDifferentSharedTypes { a: a, b: b, c: c }) +} diff --git a/examples/11-transient-0/src/data.hob b/examples/11-transient-0/src/data.hob index 63ed8d3..abe9552 100644 --- a/examples/11-transient-0/src/data.hob +++ b/examples/11-transient-0/src/data.hob @@ -65,3 +65,9 @@ struct StructWithSum { struct StructWithListOfShared { field inner: List[Shared[StructWithInt32]]; } + +struct StructWithDifferentSharedTypes { + field a: Shared[StructWithInt32]; + field b: Shared[StructWithInt64]; + field c: Shared[StructWithInt32]; +} -- cgit v1.2.3