use enumn::N; #[derive(Debug, N, PartialEq)] enum EmptyEnum {} #[test] fn test_empty() { assert_eq!(EmptyEnum::n(0), None); assert_eq!(EmptyEnum::n(1), None); assert_eq!(EmptyEnum::n(-1), None); } #[derive(Debug, N, PartialEq)] enum SimpleEnum { Case0, Case1, } #[test] fn test_simple() { assert_eq!(SimpleEnum::n(0), Some(SimpleEnum::Case0)); assert_eq!(SimpleEnum::n(1), Some(SimpleEnum::Case1)); assert_eq!(SimpleEnum::n(4), None); assert_eq!(SimpleEnum::n(-1), None); } #[derive(Debug, N, PartialEq)] #[repr(u8)] enum EnumWithRepr { Case0, } #[test] fn test_repr() { assert_eq!(EnumWithRepr::n(0), Some(EnumWithRepr::Case0)); assert_eq!(EnumWithRepr::n(255), None); } #[derive(Debug, N, PartialEq)] enum EnumWithDiscriminant { A = 10, B, // implicitly 11 C = -80, } #[test] fn test_discriminant() { assert_eq!(EnumWithDiscriminant::n(10), Some(EnumWithDiscriminant::A)); assert_eq!(EnumWithDiscriminant::n(11), Some(EnumWithDiscriminant::B)); assert_eq!(EnumWithDiscriminant::n(-80), Some(EnumWithDiscriminant::C)); assert_eq!(EnumWithDiscriminant::n(12), None); }