winget_types/installer/
elevation_requirement.rs1use core::fmt;
2
3#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
4#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
5#[cfg_attr(feature = "serde", serde(rename_all = "camelCase"))]
6pub enum ElevationRequirement {
7 ElevationRequired,
10 ElevationProhibited,
12 ElevatesSelf,
15}
16
17impl fmt::Display for ElevationRequirement {
18 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
19 match self {
20 Self::ElevationRequired => f.write_str("Elevation required"),
21 Self::ElevationProhibited => f.write_str("Elevation prohibited"),
22 Self::ElevatesSelf => f.write_str("Elevate self"),
23 }
24 }
25}
26
27#[cfg(test)]
28mod tests {
29 #[cfg(feature = "serde")]
30 use indoc::indoc;
31 #[cfg(feature = "serde")]
32 use rstest::rstest;
33
34 #[cfg(feature = "serde")]
35 use super::ElevationRequirement;
36
37 #[cfg(feature = "serde")]
38 #[rstest]
39 #[case(
40 ElevationRequirement::ElevationRequired,
41 indoc! {"
42 ElevationRequirement: elevationRequired
43 "}
44 )]
45 #[case(
46 ElevationRequirement::ElevationProhibited,
47 indoc! {"
48 ElevationRequirement: elevationProhibited
49 "}
50 )]
51 #[case(
52 ElevationRequirement::ElevatesSelf,
53 indoc! {"
54 ElevationRequirement: elevatesSelf
55 "}
56 )]
57 fn serialize_elevation_requirement(
58 #[case] elevation_requirement: ElevationRequirement,
59 #[case] expected: &str,
60 ) {
61 #[derive(serde::Serialize)]
62 #[serde(rename_all = "PascalCase")]
63 struct Manifest {
64 elevation_requirement: ElevationRequirement,
65 }
66
67 assert_eq!(
68 serde_yaml::to_string(&Manifest {
69 elevation_requirement,
70 })
71 .unwrap(),
72 expected,
73 );
74 }
75}