123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- #![allow(unused)]
- /// Assert that an op works for all val/ref combinations
- macro_rules! assert_op {
- ($left:ident $op:tt $right:ident == $expected:expr) => {
- assert_eq!((&$left) $op (&$right), $expected);
- assert_eq!((&$left) $op $right.clone(), $expected);
- assert_eq!($left.clone() $op (&$right), $expected);
- assert_eq!($left.clone() $op $right.clone(), $expected);
- };
- }
- /// Assert that an assign-op works for all val/ref combinations
- macro_rules! assert_assign_op {
- ($left:ident $op:tt $right:ident == $expected:expr) => {{
- let mut left = $left.clone();
- assert_eq!({ left $op &$right; left}, $expected);
- let mut left = $left.clone();
- assert_eq!({ left $op $right.clone(); left}, $expected);
- }};
- }
- /// Assert that an op works for scalar left or right
- macro_rules! assert_scalar_op {
- (($($to:ident),*) $left:ident $op:tt $right:ident == $expected:expr) => {
- $(
- if let Some(left) = $left.$to() {
- assert_op!(left $op $right == $expected);
- }
- if let Some(right) = $right.$to() {
- assert_op!($left $op right == $expected);
- }
- )*
- };
- }
- macro_rules! assert_unsigned_scalar_op {
- ($left:ident $op:tt $right:ident == $expected:expr) => {
- assert_scalar_op!((to_u8, to_u16, to_u32, to_u64, to_usize, to_u128)
- $left $op $right == $expected);
- };
- }
- macro_rules! assert_signed_scalar_op {
- ($left:ident $op:tt $right:ident == $expected:expr) => {
- assert_scalar_op!((to_u8, to_u16, to_u32, to_u64, to_usize, to_u128,
- to_i8, to_i16, to_i32, to_i64, to_isize, to_i128)
- $left $op $right == $expected);
- };
- }
- /// Assert that an op works for scalar right
- macro_rules! assert_scalar_assign_op {
- (($($to:ident),*) $left:ident $op:tt $right:ident == $expected:expr) => {
- $(
- if let Some(right) = $right.$to() {
- let mut left = $left.clone();
- assert_eq!({ left $op right; left}, $expected);
- }
- )*
- };
- }
- macro_rules! assert_unsigned_scalar_assign_op {
- ($left:ident $op:tt $right:ident == $expected:expr) => {
- assert_scalar_assign_op!((to_u8, to_u16, to_u32, to_u64, to_usize, to_u128)
- $left $op $right == $expected);
- };
- }
- macro_rules! assert_signed_scalar_assign_op {
- ($left:ident $op:tt $right:ident == $expected:expr) => {
- assert_scalar_assign_op!((to_u8, to_u16, to_u32, to_u64, to_usize, to_u128,
- to_i8, to_i16, to_i32, to_i64, to_isize, to_i128)
- $left $op $right == $expected);
- };
- }
|