tf2_enum/
craft_material_type.rs1use serde::{Deserialize, Serialize};
2use strum::{Display, EnumCount, EnumIter, EnumString};
3
4#[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}