From 9d657c327faa613201fb39753e5e7cb5f0c35f07 Mon Sep 17 00:00:00 2001 From: Stanislav Tkach Date: Sun, 2 Aug 2020 16:29:35 +0300 Subject: [PATCH] Support unsized values in assertions --- CHANGELOG.md | 4 ++++ src/lib.rs | 13 ++++++++----- tests/assert_eq.rs | 24 ++++++++++++++++++++++++ tests/assert_ne.rs | 21 +++++++++++++++++++++ 4 files changed, 57 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 62d3a82..8759bcf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Unreleased +## Added + +- Support for unsized values (#42, @stanislav-tkach) + ## Internal - Test Windows targets in CI (#46, @tommilligan) diff --git a/src/lib.rs b/src/lib.rs index 2f1b3a2..402e8be 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -93,9 +93,12 @@ fn init() { pub struct Comparison(Changeset); impl Comparison { - pub fn new(left: &TLeft, right: &TRight) -> Comparison { - let left_dbg = format!("{:#?}", *left); - let right_dbg = format!("{:#?}", *right); + pub fn new( + left: &TLeft, + right: &TRight, + ) -> Comparison { + let left_dbg = format!("{:#?}", &*left); + let right_dbg = format!("{:#?}", &*right); let changeset = Changeset::new(&left_dbg, &right_dbg, "\n"); Comparison(changeset) @@ -157,8 +160,8 @@ macro_rules! assert_ne { match (&($left), &($right)) { (left_val, right_val) => { if *left_val == *right_val { - let left_dbg = format!("{:?}", *left_val); - let right_dbg = format!("{:?}", *right_val); + let left_dbg = format!("{:?}", &*left_val); + let right_dbg = format!("{:?}", &*right_val); if left_dbg != right_dbg { panic!("assertion failed: `(left != right)`{}{}\ diff --git a/tests/assert_eq.rs b/tests/assert_eq.rs index cadab93..5541dd1 100644 --- a/tests/assert_eq.rs +++ b/tests/assert_eq.rs @@ -1,3 +1,5 @@ +#![allow(clippy::eq_op)] + #[allow(unused_imports)] use pretty_assertions::{assert_eq, assert_ne}; extern crate difference; @@ -193,3 +195,25 @@ fn assert_eq_custom_trailing_comma() { assert_eq!(x, y, "custom panic message",); } + +#[test] +fn assert_eq_unsized() { + let a: &[u8] = b"e"; + assert_eq!(*a, *a); +} + +#[test] +#[should_panic(expected = r#"assertion failed: `(left == right)` + +Diff < left / right > : + [ + 101, +> 101, + ] + +"#)] +fn assert_eq_unsized_panic() { + let a: &[u8] = b"e"; + let b: &[u8] = b"ee"; + assert_eq!(*a, *b); +} diff --git a/tests/assert_ne.rs b/tests/assert_ne.rs index b5d7b08..5760e94 100644 --- a/tests/assert_ne.rs +++ b/tests/assert_ne.rs @@ -174,3 +174,24 @@ fn assert_ne_custom_trailing_comma() { assert_ne!(x, x, "custom panic message",); } + +#[test] +fn assert_ne_unsized() { + let a: &[u8] = b"e"; + let b: &[u8] = b"ee"; + assert_ne!(*a, *b); +} + +#[test] +#[should_panic(expected = r#"assertion failed: `(left != right)` + +Both sides: +[ + 101, +] + +"#)] +fn assert_ne_unsized_panic() { + let a: &[u8] = b"e"; + assert_ne!(*a, *a); +}