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 EffectType {
25 Neutral,
26 Positive,
27 Negative,
28 Unusual,
29 ValueIsFromLookupTable,
30 Strange,
31}
32
33#[cfg(test)]
34mod tests {
35 use super::*;
36
37 #[test]
38 fn serializes() {
39 let json = serde_json::to_string(&EffectType::Neutral).unwrap();
40 assert_eq!(json, r#""neutral""#);
41 }
42
43 #[test]
44 fn deserializes() {
45 let json = r#""neutral""#;
46 let variant: EffectType = serde_json::from_str(json).unwrap();
47 assert_eq!(variant, EffectType::Neutral);
48 }
49}