Skip to main content

battler_data/moves/
move_category.rs

1use serde_string_enum::{
2    DeserializeLabeledStringEnum,
3    SerializeLabeledStringEnum,
4};
5
6/// The category of a move.
7#[derive(
8    Debug, Default, Clone, Copy, PartialEq, SerializeLabeledStringEnum, DeserializeLabeledStringEnum,
9)]
10pub enum MoveCategory {
11    #[string = "Physical"]
12    #[default]
13    Physical,
14    #[string = "Special"]
15    Special,
16    #[string = "Status"]
17    Status,
18}
19
20#[cfg(test)]
21mod move_category_test {
22    use crate::{
23        moves::MoveCategory,
24        test_util::{
25            test_string_deserialization,
26            test_string_serialization,
27        },
28    };
29
30    #[test]
31    fn serializes_to_string() {
32        test_string_serialization(MoveCategory::Physical, "Physical");
33        test_string_serialization(MoveCategory::Special, "Special");
34        test_string_serialization(MoveCategory::Status, "Status");
35    }
36
37    #[test]
38    fn deserializes_lowercase() {
39        test_string_deserialization("physical", MoveCategory::Physical);
40        test_string_deserialization("special", MoveCategory::Special);
41        test_string_deserialization("status", MoveCategory::Status);
42    }
43}