summaryrefslogtreecommitdiffstats
path: root/library/core/tests/asserting.rs
diff options
context:
space:
mode:
Diffstat (limited to 'library/core/tests/asserting.rs')
-rw-r--r--library/core/tests/asserting.rs37
1 files changed, 37 insertions, 0 deletions
diff --git a/library/core/tests/asserting.rs b/library/core/tests/asserting.rs
new file mode 100644
index 000000000..4b626ba6f
--- /dev/null
+++ b/library/core/tests/asserting.rs
@@ -0,0 +1,37 @@
+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");