| use core::asserting::{Capture, TryCaptureGeneric, TryCapturePrintable, Wrapper}; |
| |
| macro_rules! test { |
| ($test_name:ident, $elem:expr, $captured_elem:expr, $output:literal) => { |
| #[test] |
| fn $test_name() { |
| let elem = $elem; |
| let mut capture = Capture::new(); |
| assert!(capture.elem == None); |
| (&Wrapper(&elem)).try_capture(&mut capture); |
| assert!(capture.elem == $captured_elem); |
| assert_eq!(format!("{:?}", capture), $output); |
| } |
| }; |
| } |
| |
| #[derive(Debug, PartialEq)] |
| struct NoCopy; |
| |
| #[derive(PartialEq)] |
| struct NoCopyNoDebug; |
| |
| #[derive(Clone, Copy, PartialEq)] |
| struct NoDebug; |
| |
| test!( |
| capture_with_non_copyable_and_non_debugabble_elem_has_correct_params, |
| NoCopyNoDebug, |
| None, |
| "N/A" |
| ); |
| |
| test!(capture_with_non_copyable_elem_has_correct_params, NoCopy, None, "N/A"); |
| |
| test!(capture_with_non_debugabble_elem_has_correct_params, NoDebug, None, "N/A"); |
| |
| test!(capture_with_copyable_and_debugabble_elem_has_correct_params, 1i32, Some(1i32), "1"); |