#[macro_use]
extern crate enum_methods;
#[test]
fn test_is_a() {
#[derive(EnumIsA, Debug)]
enum MyEnum {
Foo,
Bar(bool, i32),
Baz(String),
StructType { foo: i32 },
BiggerStructType { foo: i32, bar: &'static str, baz: bool },
}
let first = MyEnum::Foo;
let second = MyEnum::Bar(false, -3);
let third = MyEnum::Baz("it's gonna take some time to do the things we never had".to_string());
let fourth = MyEnum::StructType { foo: 42 };
let fifth = MyEnum::BiggerStructType { foo: 42, bar: "I hear the drums echoing tonight", baz: true };
assert!(first.is_foo());
assert!(second.is_bar());
assert!(third.is_baz());
assert!(fourth.is_struct_type());
assert!(fifth.is_bigger_struct_type());
}
#[test]
fn test_is_a_names() {
#[derive(EnumIsA, Debug)]
enum MyEnum {
FooBar,
BarBaz(bool, i32),
Baz(String),
}
let first = MyEnum::FooBar;
let second = MyEnum::BarBaz(false, -3);
let third = MyEnum::Baz("cheers only whispers of some quiet conversation".to_string());
assert!(first.is_foo_bar());
assert!(second.is_bar_baz());
assert!(third.is_baz());
}