1use 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 CraftClass {
25 Weapon,
26 Hat,
27 CraftBar,
28 HauntedHat,
29 Tool,
30 CraftToken,
31 SupplyCrate,
32}
33
34#[cfg(test)]
35mod tests {
36 use super::*;
37
38 #[test]
39 fn test_craft_class_serialization() {
40 let weapon = CraftClass::Weapon;
41 let hat = CraftClass::Hat;
42 let craft_bar = CraftClass::CraftBar;
43 let haunted_hat = CraftClass::HauntedHat;
44 let tool = CraftClass::Tool;
45 let craft_token = CraftClass::CraftToken;
46 let supply_crate = CraftClass::SupplyCrate;
47
48 assert_eq!(serde_json::to_string(&weapon).unwrap(), "\"weapon\"");
49 assert_eq!(serde_json::to_string(&hat).unwrap(), "\"hat\"");
50 assert_eq!(serde_json::to_string(&craft_bar).unwrap(), "\"craft_bar\"");
51 assert_eq!(serde_json::to_string(&haunted_hat).unwrap(), "\"haunted_hat\"");
52 assert_eq!(serde_json::to_string(&tool).unwrap(), "\"tool\"");
53 assert_eq!(serde_json::to_string(&craft_token).unwrap(), "\"craft_token\"");
54 assert_eq!(serde_json::to_string(&supply_crate).unwrap(), "\"supply_crate\"");
55 }
56}