#[macro_use] extern crate enum_primitive as ep;
enum_from_primitive! {
enum Unused {
A = 17,
B = 42
}
}
enum_from_primitive! {
#[derive(Debug, PartialEq)]
enum Empty {
}
}
#[test]
fn empty() {
use ep::FromPrimitive;
assert_eq!(Empty::from_i32(91), None);
}
enum_from_primitive! {
#[derive(Debug, PartialEq)]
enum One {
A = 17
}
}
#[test]
fn one() {
use ep::FromPrimitive;
assert_eq!(One::from_isize(17), Some(One::A));
assert_eq!(One::from_isize(91), None);
assert_eq!(One::from_i8(17), Some(One::A));
assert_eq!(One::from_i8(91), None);
assert_eq!(One::from_i16(17), Some(One::A));
assert_eq!(One::from_i16(91), None);
assert_eq!(One::from_i32(17), Some(One::A));
assert_eq!(One::from_i32(91), None);
assert_eq!(One::from_i64(17), Some(One::A));
assert_eq!(One::from_i64(91), None);
assert_eq!(One::from_usize(17), Some(One::A));
assert_eq!(One::from_usize(91), None);
assert_eq!(One::from_u8(17), Some(One::A));
assert_eq!(One::from_u8(91), None);
assert_eq!(One::from_u16(17), Some(One::A));
assert_eq!(One::from_u16(91), None);
assert_eq!(One::from_u32(17), Some(One::A));
assert_eq!(One::from_u32(91), None);
assert_eq!(One::from_u64(17), Some(One::A));
assert_eq!(One::from_u64(91), None);
}
enum_from_primitive! {
#[derive(Debug, PartialEq)]
enum OneComma {
A = 17,
}
}
#[test]
fn one_comma() {
use ep::FromPrimitive;
assert_eq!(OneComma::from_i32(17), Some(OneComma::A));
assert_eq!(OneComma::from_i32(91), None);
}
enum_from_primitive! {
#[derive(Debug, PartialEq)]
enum Two {
A = 17,
B = 42
}
}
#[test]
fn two() {
use ep::FromPrimitive;
assert_eq!(PubTwo::from_i32(17), Some(PubTwo::A));
assert_eq!(PubTwo::from_i32(42), Some(PubTwo::B));
assert_eq!(PubTwo::from_i32(91), None);
}
enum_from_primitive! {
#[derive(Debug, PartialEq)]
enum TwoComma {
A = 17,
B = 42,
}
}
#[test]
fn two_comma() {
use ep::FromPrimitive;
assert_eq!(TwoComma::from_i32(17), Some(TwoComma::A));
assert_eq!(TwoComma::from_i32(42), Some(TwoComma::B));
assert_eq!(TwoComma::from_i32(91), None);
}
enum_from_primitive! {
#[derive(Debug, PartialEq)]
pub enum PubEmpty {
}
}
#[test]
fn pub_empty() {
use ep::FromPrimitive;
assert_eq!(PubEmpty::from_i32(91), None);
}
enum_from_primitive! {
#[derive(Debug, PartialEq)]
pub enum PubOne {
A = 17
}
}
#[test]
fn pub_one() {
use ep::FromPrimitive;
assert_eq!(PubOne::from_i32(17), Some(PubOne::A));
assert_eq!(PubOne::from_i32(91), None);
}
enum_from_primitive! {
#[derive(Debug, PartialEq)]
pub enum PubOneComma {
A = 17,
}
}
#[test]
fn pub_one_comma() {
use ep::FromPrimitive;
assert_eq!(PubOneComma::from_i32(17), Some(PubOneComma::A));
assert_eq!(PubOneComma::from_i32(91), None);
}
enum_from_primitive! {
#[derive(Debug, PartialEq)]
pub enum PubTwo {
A = 17,
B = 42
}
}
#[test]
fn pub_two() {
use ep::FromPrimitive;
assert_eq!(PubTwo::from_i32(17), Some(PubTwo::A));
assert_eq!(PubTwo::from_i32(42), Some(PubTwo::B));
assert_eq!(PubTwo::from_i32(91), None);
}
enum_from_primitive! {
#[derive(Debug, PartialEq)]
pub enum PubTwoComma {
A = 17,
B = 42,
}
}
#[test]
fn pub_two_comma() {
use ep::FromPrimitive;
assert_eq!(PubTwoComma::from_i32(17), Some(PubTwoComma::A));
assert_eq!(PubTwoComma::from_i32(42), Some(PubTwoComma::B));
assert_eq!(PubTwoComma::from_i32(91), None);
}
enum_from_primitive! {
#[derive(Debug, PartialEq)]
enum Negative {
A = -17
}
}
#[test]
fn negative() {
use ep::FromPrimitive;
assert_eq!(Negative::from_isize(-17), Some(Negative::A));
assert_eq!(Negative::from_isize(-91), None);
assert_eq!(Negative::from_i8(-17), Some(Negative::A));
assert_eq!(Negative::from_i8(-91), None);
assert_eq!(Negative::from_i16(-17), Some(Negative::A));
assert_eq!(Negative::from_i16(-91), None);
assert_eq!(Negative::from_i32(-17), Some(Negative::A));
assert_eq!(Negative::from_i32(-91), None);
assert_eq!(Negative::from_i64(-17), Some(Negative::A));
assert_eq!(Negative::from_i64(-91), None);
assert_eq!(Negative::from_usize(!16), Some(Negative::A));
assert_eq!(Negative::from_usize(!90), None);
assert_eq!(Negative::from_u8(!16), None);
assert_eq!(Negative::from_u8(!90), None);
assert_eq!(Negative::from_u16(!16), None);
assert_eq!(Negative::from_u16(!90), None);
assert_eq!(Negative::from_u32(!16), None);
assert_eq!(Negative::from_u32(!90), None);
assert_eq!(Negative::from_u64(!16), Some(Negative::A));
assert_eq!(Negative::from_u64(!90), None);
}
#[test]
fn in_local_mod() {
mod local_mod {
enum_from_primitive! {
#[derive(Debug, PartialEq)]
pub enum InLocalMod {
A = 17,
B = 42,
}
}
}
use ep::FromPrimitive;
assert_eq!(local_mod::InLocalMod::from_i32(17), Some(local_mod::InLocalMod::A));
assert_eq!(local_mod::InLocalMod::from_i32(42), Some(local_mod::InLocalMod::B));
assert_eq!(local_mod::InLocalMod::from_i32(91), None);
}
enum_from_primitive! {
#[derive(Debug, PartialEq)]
#[doc = "Documented"]
pub enum Documented {
A = 17
}
}
#[test]
fn documented() {
use ep::FromPrimitive;
assert_eq!(Documented::from_i32(17), Some(Documented::A));
assert_eq!(Documented::from_i32(91), None);
}