cock_lib/cock_parts/
circumcision.rs1use crate::{FromString, GetVariants};
2
3#[derive(Debug, PartialEq, Clone, serde::Deserialize)]
5pub enum Circumcision {
6 Circumcised,
7 Uncircumcised,
8}
9
10impl GetVariants for Circumcision {
12 fn get_variants() -> Vec<String> {
13 vec![String::from("Circumcised"), String::from("Uncircumcised")]
14 }
15}
16
17impl FromString for Circumcision {
19 fn from_string(circumcision: &str) -> Circumcision {
20 match circumcision {
21 "Circumcised" => Circumcision::Circumcised,
22 "Uncircumcised" => Circumcision::Uncircumcised,
23 _ => panic!("Invalid circumcision"),
24 }
25 }
26}
27
28impl std::fmt::Display for Circumcision {
30 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
32 match self {
33 Circumcision::Circumcised => write!(f, "Circumcised"),
34 Circumcision::Uncircumcised => write!(f, "Uncircumcised"),
35 }
36 }
37}
38
39#[cfg(test)]
40mod tests {
41 use super::*;
42
43 #[test]
44 fn test_circumcision_score() {
45 let circumsized = Circumcision::Circumcised;
46 let uncircumsized = Circumcision::Uncircumcised;
47
48 assert_eq!(circumsized, Circumcision::Circumcised);
49 assert_eq!(uncircumsized, Circumcision::Uncircumcised);
50 }
51}