Skip to main content

tf2_enum/
craft_material_type.rs

1use serde::{Deserialize, Serialize};
2use strum::{Display, EnumCount, EnumIter, EnumString};
3
4/// Craft material type.
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)]
24pub enum CraftMaterialType {
25    Weapon,
26    Hat,
27    CraftBar,
28    HauntedHat,
29    Tool,
30    CraftToken,
31    SupplyCrate,
32    CraftMaterialBurned,
33    #[strum(serialize = "craft_material_voodoocursed")]
34    #[serde(rename = "craft_material_voodoocursed")]
35    CraftMaterialVoodooCursed,
36    #[strum(serialize = "strangepart")]
37    #[serde(rename = "strangepart")]
38    StrangePart,
39}
40
41#[cfg(test)]
42mod tests {
43    use super::*;
44    use std::str::FromStr;
45    
46    #[test]
47    fn serializes_craft_material_type() {
48        let craft_material_type = CraftMaterialType::Weapon;
49        let serialized = serde_json::to_string(&craft_material_type).unwrap();
50        
51        assert_eq!(serialized, r#""weapon""#);
52        
53        let craft_material_type = CraftMaterialType::from_str("weapon").unwrap();
54        
55        assert_eq!(craft_material_type, CraftMaterialType::Weapon);
56        
57        let craft_material_type = CraftMaterialType::from_str("craft_material_voodoocursed").unwrap();
58
59        assert_eq!(craft_material_type, CraftMaterialType::CraftMaterialVoodooCursed);
60        
61        let craft_material_type = CraftMaterialType::from_str("strangepart").unwrap();
62        
63        assert_eq!(craft_material_type, CraftMaterialType::StrangePart);
64    }
65}