Skip to main content

battler_data/items/
item_flag.rs

1use serde_string_enum::{
2    DeserializeLabeledStringEnum,
3    SerializeLabeledStringEnum,
4};
5
6/// Item flags, which categorize items for miscellaneous behavior (such as bans or side
7/// effects).
8#[derive(
9    Debug, Clone, PartialEq, Eq, Hash, SerializeLabeledStringEnum, DeserializeLabeledStringEnum,
10)]
11pub enum ItemFlag {
12    /// A ball.
13    #[string = "Ball"]
14    Ball,
15    /// A battle item.
16    #[string = "Battle"]
17    Battle,
18    /// A berry.
19    #[string = "Berry"]
20    Berry,
21    /// Locks the holder's move choice.
22    #[string = "ChoiceLocking"]
23    ChoiceLocking,
24    /// A damage-reducing berry.
25    #[string = "DamageReducingBerry"]
26    DamageReducingBerry,
27    /// Raises the user's evasion.
28    #[string = "EvasionRaising"]
29    EvasionRaising,
30    /// A gem.
31    #[string = "Gem"]
32    Gem,
33    /// Medicine.
34    #[string = "Medicine"]
35    Medicine,
36    /// Not affected by Klutz.
37    #[string = "NoKlutz"]
38    NoKlutz,
39}
40
41#[cfg(test)]
42mod item_flag_test {
43    use crate::{
44        ItemFlag,
45        test_util::{
46            test_string_deserialization,
47            test_string_serialization,
48        },
49    };
50
51    #[test]
52    fn serializes_to_string() {
53        test_string_serialization(ItemFlag::EvasionRaising, "EvasionRaising");
54    }
55
56    #[test]
57    fn deserializes_lowercase() {
58        test_string_deserialization("evasionraising", ItemFlag::EvasionRaising);
59    }
60}