extern crate strum; #[macro_use] extern crate strum_macros; use strum::EnumMessage; #[derive(Debug,Eq,PartialEq,EnumMessage)] enum Pets { #[strum(message="I'm a dog")] Dog, #[strum(message="I'm a cat")] #[strum(detailed_message="I'm a very exquisite striped cat")] Cat, #[strum(detailed_message="My fish is named Charles McFish")] Fish, Bird, #[strum(disabled="true")] Hamster, } #[test] fn simple_message() { assert_eq!("I'm a dog", (Pets::Dog).get_message().unwrap()); assert_eq!("I'm a dog", (Pets::Dog).get_detailed_message().unwrap()); } #[test] fn detailed_message() { assert_eq!("I'm a cat", (Pets::Cat).get_message().unwrap()); assert_eq!("I'm a very exquisite striped cat", (Pets::Cat).get_detailed_message().unwrap()); } #[test] fn only_detailed_message() { assert_eq!(None, (Pets::Fish).get_message()); assert_eq!("My fish is named Charles McFish", (Pets::Fish).get_detailed_message().unwrap()); } #[test] fn no_message() { assert_eq!(None, (Pets::Bird).get_message()); assert_eq!(None, (Pets::Bird).get_detailed_message()); } #[test] fn disabled_message() { assert_eq!(None, (Pets::Hamster).get_message()); assert_eq!(None, (Pets::Hamster).get_detailed_message()); }