summaryrefslogtreecommitdiff
path: root/examples/11-transient-0
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-07-25 17:44:47 +0100
committerMichael Williamson <mike@zwobble.org>2026-07-25 17:44:47 +0100
commit5de41ad211a542ce1ae26a1db3f219b1aaf4c9f4 (patch)
treeb25f9f24d0ddb2517a8fe9dd923d0cb8b9e8efa6 /examples/11-transient-0
parentb219b7a24fbece0256b15d408e0f65d8136e671a (diff)
Test shared values of different types in java-transient-0
Diffstat (limited to 'examples/11-transient-0')
-rw-r--r--examples/11-transient-0/output/java/src/test/java/org/zwobble/example/Transient0Tests.java16
-rw-r--r--examples/11-transient-0/output/rust/src/gen/data.rs7
-rw-r--r--examples/11-transient-0/output/rust/src/gen/data/transient_0.rs14
-rw-r--r--examples/11-transient-0/src/data.hob6
4 files changed, 43 insertions, 0 deletions
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> T assertRoundTripEncoding(
T value,
Encoder<T> 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::<crate::data::StructWithInt32>>,
}
+
+#[derive(Debug, PartialEq)]
+pub struct StructWithDifferentSharedTypes {
+ pub a: ::std::sync::Arc::<crate::data::StructWithInt32>,
+ pub b: ::std::sync::Arc::<crate::data::StructWithInt64>,
+ pub c: ::std::sync::Arc::<crate::data::StructWithInt32>,
+}
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::<crate::data::StructWithDifferentSharedTypes> {
+ 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];
+}