#[cfg(test)]
mod tests
{
use hexga_bitflags::*;
#[bit_index]
#[repr(u8)]
pub enum Color
{
Red,
Green,
Blue = 5,
Yellow, RedAndBlue = Color::Red | Self::Blue,
Purple, GreenAndYellowAndPurple = (Color::Yellow | Self::Purple) | Self::Green,
}
#[test]
fn increment_variant()
{
assert_eq!(Color::Red as u8, 0);
assert_eq!(Color::Red.index(), 0);
assert_eq!(Color::Red.bits(), 0b1);
assert_eq!(Color::Red.flags().bits(), 0b1);
assert_eq!(Color::Green as u8, 1);
assert_eq!(Color::Green.index(), 1);
assert_eq!(Color::Green.bits(), 0b10);
assert_eq!(Color::Green.flags().bits(), 0b10);
assert_eq!(Color::Blue as u8, 5);
assert_eq!(Color::Blue.index(), 5);
assert_eq!(Color::Blue.bits(), 0b100000);
assert_eq!(Color::Blue.flags().bits(), 0b100000);
assert_eq!(Color::Yellow as u8, 6);
assert_eq!(Color::Yellow.index(), 6);
assert_eq!(Color::Yellow.bits(), 0b1000000);
assert_eq!(Color::Yellow.flags().bits(), 0b1000000);
assert_eq!(Color::Purple as u8, 7);
assert_eq!(Color::Purple.index(), 7);
assert_eq!(Color::Purple.bits(), 0b10000000);
assert_eq!(Color::Purple.flags().bits(), 0b10000000);
assert_eq!(Color::Red | Color::Blue, ColorFlags::RedAndBlue);
assert_eq!(ColorFlags::Red | Color::Blue, ColorFlags::RedAndBlue);
assert_eq!(ColorFlags::Blue | Color::Red, ColorFlags::RedAndBlue);
assert_eq!(Color::Red | ColorFlags::Blue, ColorFlags::RedAndBlue);
assert_eq!(Color::Blue | ColorFlags::Red, ColorFlags::RedAndBlue);
assert_eq!(ColorFlags::Blue | ColorFlags::Red, ColorFlags::RedAndBlue);
assert_eq!(ColorFlags::Red | ColorFlags::Blue, ColorFlags::RedAndBlue);
assert_eq!(
ColorFlags::GreenAndYellowAndPurple,
Color::Green | Color::Yellow | Color::Purple
);
assert_eq!(
ColorFlags::RedAndBlue.collect::<Vec<_>>(),
vec![Color::Red, Color::Blue]
);
assert_eq!(
ColorFlags::GreenAndYellowAndPurple.collect::<Vec<_>>(),
vec![Color::Green, Color::Yellow, Color::Purple]
);
assert_eq!(ColorFlags::RedAndBlue & Color::Red, Color::Red);
assert_eq!(ColorFlags::RedAndBlue & Color::Red, ColorFlags::Red);
}
}