2022-05-22 05:18:32 -05:00
|
|
|
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!(
|
2023-04-10 23:49:38 -05:00
|
|
|
capture_with_non_copyable_and_non_debuggable_elem_has_correct_params,
|
2022-05-22 05:18:32 -05:00
|
|
|
NoCopyNoDebug,
|
|
|
|
None,
|
|
|
|
"N/A"
|
|
|
|
);
|
|
|
|
|
|
|
|
test!(capture_with_non_copyable_elem_has_correct_params, NoCopy, None, "N/A");
|
|
|
|
|
2023-04-10 23:49:38 -05:00
|
|
|
test!(capture_with_non_debuggable_elem_has_correct_params, NoDebug, None, "N/A");
|
2022-05-22 05:18:32 -05:00
|
|
|
|
2023-04-10 23:49:38 -05:00
|
|
|
test!(capture_with_copyable_and_debuggable_elem_has_correct_params, 1i32, Some(1i32), "1");
|