native_theme/model/
dialog_order.rs1use serde::{Deserialize, Serialize};
4
5#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Hash, Serialize, Deserialize)]
18pub enum DialogButtonOrder {
19 #[default]
21 #[serde(rename = "primary_right")]
22 PrimaryRight,
23 #[serde(rename = "primary_left")]
25 PrimaryLeft,
26}
27
28#[cfg(test)]
29#[allow(clippy::unwrap_used, clippy::expect_used)]
30mod tests {
31 use super::*;
32
33 #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
35 struct Wrapper {
36 order: DialogButtonOrder,
37 }
38
39 #[test]
40 fn serde_round_trip_both_variants() {
41 for (variant, expected_str) in [
42 (DialogButtonOrder::PrimaryRight, "primary_right"),
43 (DialogButtonOrder::PrimaryLeft, "primary_left"),
44 ] {
45 let original = Wrapper { order: variant };
46 let serialized = toml::to_string(&original).unwrap();
47 assert!(serialized.contains(expected_str), "got: {serialized}");
48 let deserialized: Wrapper = toml::from_str(&serialized).unwrap();
49 assert_eq!(deserialized, original);
50 }
51 }
52
53 #[test]
54 fn deserializes_from_toml_string_values() {
55 for (toml_str, expected) in [
56 (
57 r#"order = "primary_right""#,
58 DialogButtonOrder::PrimaryRight,
59 ),
60 (r#"order = "primary_left""#, DialogButtonOrder::PrimaryLeft),
61 ] {
62 let w: Wrapper = toml::from_str(toml_str).unwrap();
63 assert_eq!(w.order, expected);
64 }
65 }
66
67 #[test]
68 fn debug_output_both_variants() {
69 assert_eq!(
70 format!("{:?}", DialogButtonOrder::PrimaryRight),
71 "PrimaryRight"
72 );
73 assert_eq!(
74 format!("{:?}", DialogButtonOrder::PrimaryLeft),
75 "PrimaryLeft"
76 );
77 }
78
79 #[test]
80 fn default_is_primary_right() {
81 assert_eq!(
82 DialogButtonOrder::default(),
83 DialogButtonOrder::PrimaryRight
84 );
85 }
86}