1 use super::*;
2
3 use crate::Flags;
4
5 #[test]
cases()6 fn cases() {
7 case(0, TestFlags::from_bits_retain);
8 case(1, TestFlags::from_bits_retain);
9 case(1 | 1 << 1 | 1 << 2, TestFlags::from_bits_retain);
10
11 case(1 << 3, TestFlags::from_bits_retain);
12 case(1 | 1 << 3, TestFlags::from_bits_retain);
13
14 case(1 | 1 << 1, TestOverlapping::from_bits_retain);
15
16 case(1 << 1, TestOverlapping::from_bits_retain);
17
18 case(1 << 5, TestExternal::from_bits_retain);
19 }
20
21 #[track_caller]
case<T: Flags>(input: T::Bits, inherent: impl FnOnce(T::Bits) -> T) where <T as Flags>::Bits: std::fmt::Debug + PartialEq,22 fn case<T: Flags>(input: T::Bits, inherent: impl FnOnce(T::Bits) -> T)
23 where
24 <T as Flags>::Bits: std::fmt::Debug + PartialEq,
25 {
26 assert_eq!(
27 input,
28 inherent(input).bits(),
29 "T::from_bits_retain({:?})",
30 input
31 );
32 assert_eq!(
33 input,
34 T::from_bits_retain(input).bits(),
35 "Flags::from_bits_retain({:?})",
36 input
37 );
38 }
39