tf2_enum/
description_format.rs

1use serde::{Deserialize, Serialize};
2use strum::{Display, EnumCount, EnumIter, EnumString};
3 
4/// Description format.
5#[derive(
6    Debug,
7    Clone,
8    Copy,
9    Eq,
10    PartialEq,
11    Ord,
12    PartialOrd,
13    Hash,
14    Display,
15    Deserialize,
16    Serialize,
17    EnumString,
18    EnumIter,
19    EnumCount,
20)]
21#[strum(serialize_all = "snake_case")]
22#[serde(rename_all = "snake_case")]
23#[allow(missing_docs)]
24 pub enum DescriptionFormat {
25    ValueIsAdditive,
26    ValueIsPercentage,
27    ValueIsInvertedPercentage,
28    ValueIsAdditivePercentage,
29    ValueIsOr,
30    ValueIsDate,
31    ValueIsParticleIndex,
32    ValueIsAccountId,
33    ValueIsItemDef,
34    ValueIsFromLookupTable,
35    VisualsMvmBoss,
36    #[strum(serialize = "value_is_killstreakeffect_index")]
37    #[serde(rename = "value_is_killstreakeffect_index")]
38    ValueIsKillstreakEffectIndex,
39    #[strum(serialize = "value_is_killstreak_idleeffect_index")]
40    #[serde(rename = "value_is_killstreak_idleeffect_index")]
41    ValueIsKillstreakIdleEffectIndex,
42 }
43 
44 #[cfg(test)]
45 mod tests {
46    use super::*;
47    
48    #[test]
49    fn serializes() {
50        let json = serde_json::to_string(&DescriptionFormat::ValueIsAdditive).unwrap();
51        assert_eq!(json, r#""value_is_additive""#);
52        
53        let json = serde_json::to_string(&DescriptionFormat::ValueIsKillstreakEffectIndex).unwrap();
54        assert_eq!(json, r#""value_is_killstreakeffect_index""#);
55    }
56    
57    #[test]
58    fn deserializes() {
59        let json = r#""value_is_additive""#;
60        let variant: DescriptionFormat = serde_json::from_str(json).unwrap();
61        assert_eq!(variant, DescriptionFormat::ValueIsAdditive);
62
63        let json = r#""value_is_killstreakeffect_index""#;
64        let variant: DescriptionFormat = serde_json::from_str(json).unwrap();
65        assert_eq!(variant, DescriptionFormat::ValueIsKillstreakEffectIndex);
66    }
67 }
68