1 use enumn::N;
2 
3 #[derive(Debug, N, PartialEq)]
4 enum EmptyEnum {}
5 
6 #[test]
test_empty()7 fn test_empty() {
8     assert_eq!(EmptyEnum::n(0), None);
9     assert_eq!(EmptyEnum::n(1), None);
10     assert_eq!(EmptyEnum::n(-1), None);
11 }
12 
13 #[derive(Debug, N, PartialEq)]
14 enum SimpleEnum {
15     Case0,
16     Case1,
17 }
18 
19 #[test]
test_simple()20 fn test_simple() {
21     assert_eq!(SimpleEnum::n(0), Some(SimpleEnum::Case0));
22     assert_eq!(SimpleEnum::n(1), Some(SimpleEnum::Case1));
23     assert_eq!(SimpleEnum::n(4), None);
24     assert_eq!(SimpleEnum::n(-1), None);
25 }
26 
27 #[derive(Debug, N, PartialEq)]
28 #[repr(u8)]
29 enum EnumWithRepr {
30     Case0,
31 }
32 
33 #[test]
test_repr()34 fn test_repr() {
35     assert_eq!(EnumWithRepr::n(0), Some(EnumWithRepr::Case0));
36     assert_eq!(EnumWithRepr::n(255), None);
37 }
38 
39 #[derive(Debug, N, PartialEq)]
40 enum EnumWithDiscriminant {
41     A = 10,
42     B, // implicitly 11
43     C = -80,
44 }
45 
46 #[test]
test_discriminant()47 fn test_discriminant() {
48     assert_eq!(EnumWithDiscriminant::n(10), Some(EnumWithDiscriminant::A));
49     assert_eq!(EnumWithDiscriminant::n(11), Some(EnumWithDiscriminant::B));
50     assert_eq!(EnumWithDiscriminant::n(-80), Some(EnumWithDiscriminant::C));
51     assert_eq!(EnumWithDiscriminant::n(12), None);
52 }
53