#![cfg(all(feature = "serialize", feature = "deserialize"))]
#[test]
fn saphyr_serialization_enum() {
use serde::{Deserialize, Serialize};
#[derive(Debug, Deserialize, PartialEq, Serialize)]
pub struct Foo {
bars: Vec<Bar>,
}
#[derive(Debug, Deserialize, PartialEq, Serialize)]
pub enum Bar {
Zip(Zip),
}
#[derive(Debug, Deserialize, PartialEq, Serialize)]
pub struct Zip {
a: i32,
b: i32,
}
let foo = Foo {
bars: vec![Bar::Zip(Zip { a: 1, b: 2 }), Bar::Zip(Zip { a: 3, b: 4 })],
};
let opts = serde_saphyr::ser_options! {
compact_list_indent: false,
};
let serialized = serde_saphyr::to_string_with_options(&foo, opts).unwrap();
assert_eq!(
serialized,
"bars:\n - Zip:\n a: 1\n b: 2\n - Zip:\n a: 3\n b: 4\n"
);
let opts = serde_saphyr::ser_options! {
compact_list_indent: true,
};
let compact_serialized = serde_saphyr::to_string_with_options(&foo, opts).unwrap();
assert_eq!(
compact_serialized,
"bars:\n- Zip:\n a: 1\n b: 2\n- Zip:\n a: 3\n b: 4\n"
);
let parsed: Foo = serde_saphyr::from_str(&compact_serialized).unwrap();
assert_eq!(parsed, foo);
}