diff options
Diffstat (limited to 'tests/test.rs')
-rw-r--r-- | tests/test.rs | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/tests/test.rs b/tests/test.rs new file mode 100644 index 0000000..3f2daa7 --- /dev/null +++ b/tests/test.rs @@ -0,0 +1,52 @@ +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); +} |