use super::*; use crate::Flags; #[test] fn cases() { case( TestFlags::empty(), &[ (TestFlags::empty(), false), (TestFlags::A, false), (TestFlags::B, false), (TestFlags::C, false), (TestFlags::from_bits_retain(1 << 3), false), ], TestFlags::intersects, ); case( TestFlags::A, &[ (TestFlags::empty(), false), (TestFlags::A, true), (TestFlags::B, false), (TestFlags::C, false), (TestFlags::ABC, true), (TestFlags::from_bits_retain(1 << 3), false), (TestFlags::from_bits_retain(1 | (1 << 3)), true), ], TestFlags::intersects, ); case( TestFlags::ABC, &[ (TestFlags::empty(), false), (TestFlags::A, true), (TestFlags::B, true), (TestFlags::C, true), (TestFlags::ABC, true), (TestFlags::from_bits_retain(1 << 3), false), ], TestFlags::intersects, ); case( TestFlags::from_bits_retain(1 << 3), &[ (TestFlags::empty(), false), (TestFlags::A, false), (TestFlags::B, false), (TestFlags::C, false), (TestFlags::from_bits_retain(1 << 3), true), ], TestFlags::intersects, ); case( TestOverlapping::AB, &[ (TestOverlapping::AB, true), (TestOverlapping::BC, true), (TestOverlapping::from_bits_retain(1 << 1), true), ], TestOverlapping::intersects, ); } #[track_caller] fn case( value: T, inputs: &[(T, bool)], mut inherent: impl FnMut(&T, T) -> bool, ) { for (input, expected) in inputs { assert_eq!( *expected, inherent(&value, *input), "{:?}.intersects({:?})", value, input ); assert_eq!( *expected, Flags::intersects(&value, *input), "Flags::intersects({:?}, {:?})", value, input ); } }