native_theme/model/
arrow_side.rs1use serde::{Deserialize, Serialize};
4
5#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
14pub enum ArrowSide {
15 #[serde(rename = "leading")]
17 Leading,
18 #[serde(rename = "trailing")]
20 Trailing,
21}
22
23#[cfg(test)]
24#[allow(clippy::unwrap_used, clippy::expect_used)]
25mod tests {
26 use super::*;
27
28 #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
30 struct Wrapper {
31 side: ArrowSide,
32 }
33
34 #[test]
35 fn serde_round_trip_both_variants() {
36 for (variant, expected_str) in [
37 (ArrowSide::Leading, "leading"),
38 (ArrowSide::Trailing, "trailing"),
39 ] {
40 let original = Wrapper { side: variant };
41 let serialized = toml::to_string(&original).unwrap();
42 assert!(serialized.contains(expected_str), "got: {serialized}");
43 let deserialized: Wrapper = toml::from_str(&serialized).unwrap();
44 assert_eq!(deserialized, original);
45 }
46 }
47
48 #[test]
49 fn an_unknown_side_is_rejected() {
50 assert!(toml::from_str::<Wrapper>(r#"side = "left""#).is_err());
51 }
52}