summaryrefslogtreecommitdiff
path: root/examples/11-transient-0/output/rust/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'examples/11-transient-0/output/rust/src/lib.rs')
-rw-r--r--examples/11-transient-0/output/rust/src/lib.rs26
1 files changed, 26 insertions, 0 deletions
diff --git a/examples/11-transient-0/output/rust/src/lib.rs b/examples/11-transient-0/output/rust/src/lib.rs
index 63a2799..3a02936 100644
--- a/examples/11-transient-0/output/rust/src/lib.rs
+++ b/examples/11-transient-0/output/rust/src/lib.rs
@@ -5,6 +5,7 @@ pub mod transient_0;
mod test {
use std::any::Any;
use std::io::Cursor;
+ use std::path::PathBuf;
use std::sync::Arc;
use std::collections::HashMap;
use super::data::{EnumWithVariants, StructWithBool, StructWithDifferentSharedTypes, StructWithEnum, StructWithInt32, StructWithInt64, StructWithList, StructWithListOfShared, StructWithOption, StructWithSharedSumAndVariant, StructWithString, StructWithStruct, StructWithSum, SumWithVariants, VariantOne, VariantTwo };
@@ -14,6 +15,7 @@ mod test {
let value = StructWithBool { a: true, b: false };
assert_round_trip_encoding(
+ "StructWithBool",
value,
super::data::transient_0::encode_struct_with_bool,
super::data::transient_0::decode_struct_with_bool,
@@ -25,6 +27,7 @@ mod test {
let value = StructWithInt32 { a: 10, b: 25 };
assert_round_trip_encoding(
+ "StructWithInt32",
value,
super::data::transient_0::encode_struct_with_int_32,
super::data::transient_0::decode_struct_with_int_32,
@@ -36,6 +39,7 @@ mod test {
let value = StructWithInt64 { a: 10, b: 25 };
assert_round_trip_encoding(
+ "StructWithInt64",
value,
super::data::transient_0::encode_struct_with_int_64,
super::data::transient_0::decode_struct_with_int_64,
@@ -47,6 +51,7 @@ mod test {
let value = StructWithString { a: "abc".to_string(), b: "def".to_string() };
assert_round_trip_encoding(
+ "StructWithString",
value,
super::data::transient_0::encode_struct_with_string,
super::data::transient_0::decode_struct_with_string,
@@ -58,6 +63,7 @@ mod test {
let value = StructWithStruct { inner: StructWithInt32 { a: 10, b: 25 }, c: 42 };
assert_round_trip_encoding(
+ "StructWithStruct",
value,
super::data::transient_0::encode_struct_with_struct,
super::data::transient_0::decode_struct_with_struct,
@@ -76,6 +82,7 @@ mod test {
};
assert_round_trip_encoding(
+ "StructWithList",
value,
super::data::transient_0::encode_struct_with_list,
super::data::transient_0::decode_struct_with_list,
@@ -90,6 +97,7 @@ mod test {
};
assert_round_trip_encoding(
+ "StructWithOption_None",
value,
super::data::transient_0::encode_struct_with_option,
super::data::transient_0::decode_struct_with_option,
@@ -104,6 +112,7 @@ mod test {
};
assert_round_trip_encoding(
+ "StructWithOption_Some",
value,
super::data::transient_0::encode_struct_with_option,
super::data::transient_0::decode_struct_with_option,
@@ -113,18 +122,21 @@ mod test {
#[test]
fn enum_with_variants() {
assert_round_trip_encoding(
+ "EnumWithVariants_zero",
EnumWithVariants::Zero,
super::data::transient_0::encode_enum_with_variants,
super::data::transient_0::decode_enum_with_variants,
);
assert_round_trip_encoding(
+ "EnumWithVariants_one",
EnumWithVariants::One,
super::data::transient_0::encode_enum_with_variants,
super::data::transient_0::decode_enum_with_variants,
);
assert_round_trip_encoding(
+ "EnumWithVariants_two",
EnumWithVariants::Two,
super::data::transient_0::encode_enum_with_variants,
super::data::transient_0::decode_enum_with_variants,
@@ -136,6 +148,7 @@ mod test {
let value = StructWithEnum { inner: EnumWithVariants::One, c: 42 };
assert_round_trip_encoding(
+ "StructWithEnum",
value,
super::data::transient_0::encode_struct_with_enum,
super::data::transient_0::decode_struct_with_enum,
@@ -145,12 +158,14 @@ mod test {
#[test]
fn sum_with_variants() {
assert_round_trip_encoding(
+ "SumWithVariants_VariantOne",
SumWithVariants::VariantOne(VariantOne { a: 10 }),
super::data::transient_0::encode_sum_with_variants,
super::data::transient_0::decode_sum_with_variants,
);
assert_round_trip_encoding(
+ "SumWithVariants_VariantTwo",
SumWithVariants::VariantTwo(VariantTwo { a: 25 }),
super::data::transient_0::encode_sum_with_variants,
super::data::transient_0::decode_sum_with_variants,
@@ -165,6 +180,7 @@ mod test {
};
assert_round_trip_encoding(
+ "StructWithSum",
value,
super::data::transient_0::encode_struct_with_sum,
super::data::transient_0::decode_struct_with_sum,
@@ -181,6 +197,7 @@ mod test {
};
let decoded_value = assert_round_trip_encoding(
+ "StructWithListOfShared",
value,
super::data::transient_0::encode_struct_with_list_of_shared,
super::data::transient_0::decode_struct_with_list_of_shared,
@@ -199,6 +216,7 @@ mod test {
let value = StructWithDifferentSharedTypes { a, b, c };
assert_round_trip_encoding(
+ "StructWithDifferentSharedTypes",
value,
super::data::transient_0::encode_struct_with_different_shared_types,
super::data::transient_0::decode_struct_with_different_shared_types,
@@ -213,6 +231,7 @@ mod test {
let value = StructWithSharedSumAndVariant { a, b };
assert_round_trip_encoding(
+ "StructWithSharedSumAndVariant",
value,
super::data::transient_0::encode_struct_with_shared_sum_and_variant,
super::data::transient_0::decode_struct_with_shared_sum_and_variant,
@@ -220,6 +239,7 @@ mod test {
}
fn assert_round_trip_encoding<T: std::cmp::PartialEq + std::fmt::Debug>(
+ name: &str,
value: T,
encode: impl Fn(&T, &mut Cursor<Vec<u8>>, &mut HashMap<usize, i64>) -> std::io::Result<()>,
decode: impl Fn(&mut Cursor<Vec<u8>>, &mut Vec<Arc<dyn Any + Sync + Send>>) -> std::io::Result<T>,
@@ -227,6 +247,12 @@ mod test {
let mut bytes = Cursor::new(Vec::new());
encode(&value, &mut bytes, &mut HashMap::new()).unwrap();
+ let output_dir = std::env::var("HOBGOBLIN_OUTPUT_DIR").unwrap();
+ let transient_0_output_dir = PathBuf::from(output_dir).join("transient-0");
+ std::fs::create_dir_all(&transient_0_output_dir).unwrap();
+ let transient_0_output_path = transient_0_output_dir.join(name);
+ std::fs::write(transient_0_output_path, bytes.get_ref()).unwrap();
+
bytes.set_position(0);
let decoded_value = decode(&mut bytes, &mut Vec::new()).unwrap();