Skip to main content

battler_data/moves/
mon_override.rs

1use serde_string_enum::{
2    DeserializeLabeledStringEnum,
3    SerializeLabeledStringEnum,
4};
5
6/// The Mon to use for stat calculations on a move.
7#[derive(Debug, Clone, PartialEq, Eq, SerializeLabeledStringEnum, DeserializeLabeledStringEnum)]
8pub enum MonOverride {
9    /// Use the target for stat calculations.
10    #[string = "Target"]
11    Target,
12    /// Use the user for stat calculations.
13    #[string = "User"]
14    User,
15}
16
17#[cfg(test)]
18mod mon_override_test {
19    use crate::{
20        moves::MonOverride,
21        test_util::{
22            test_string_deserialization,
23            test_string_serialization,
24        },
25    };
26
27    #[test]
28    fn serializes_to_string() {
29        test_string_serialization(MonOverride::Target, "Target");
30        test_string_serialization(MonOverride::User, "User");
31    }
32
33    #[test]
34    fn deserializes_lowercase() {
35        test_string_deserialization("target", MonOverride::Target);
36        test_string_deserialization("user", MonOverride::User);
37    }
38}