Skip to main content

battler_data/mons/
gender.rs

1use serde_string_enum::{
2    DeserializeLabeledStringEnum,
3    SerializeLabeledStringEnum,
4};
5
6/// The gender of a specific Mon.
7#[derive(
8    Debug,
9    Default,
10    Clone,
11    Copy,
12    PartialEq,
13    Eq,
14    Hash,
15    SerializeLabeledStringEnum,
16    DeserializeLabeledStringEnum,
17)]
18pub enum Gender {
19    #[string = "U"]
20    #[alias = "Unknown"]
21    #[default]
22    Unknown,
23    #[string = "F"]
24    #[alias = "Female"]
25    Female,
26    #[string = "M"]
27    #[alias = "Male"]
28    Male,
29}
30
31#[cfg(test)]
32mod gender_test {
33    use crate::{
34        mons::Gender,
35        test_util::{
36            test_string_deserialization,
37            test_string_serialization,
38        },
39    };
40
41    #[test]
42    fn serializes_to_string() {
43        test_string_serialization(Gender::Unknown, "U");
44        test_string_serialization(Gender::Female, "F");
45        test_string_serialization(Gender::Male, "M");
46    }
47
48    #[test]
49    fn deserializes_full_name() {
50        test_string_deserialization("Unknown", Gender::Unknown);
51        test_string_deserialization("Female", Gender::Female);
52        test_string_deserialization("Male", Gender::Male);
53    }
54}