Build status Latest version All downloads Downloads of latest version

Pretty Assertions

When writing tests in Rust, you'll probably use assert_eq!(a, b) a lot.

If such a test fails, it will present all the details of a and b. But you have to spot the differences yourself, which is not always straightforward, like here:

standard assertion

Wouldn't that task be much easier with a colorful diff?

pretty assertion

Yep — and you only need one line of code to make it happen:

rust,ignore use pretty_assertions::{assert_eq, assert_ne};

Show the example behind the screenshots above.

``rust,ignore // 1. add theprettyassertionsdependency toCargo.toml`. // 2. insert this line at the top of each module, as needed use prettyassertions::{asserteq, assertne};

fn main() { #[derive(Debug, PartialEq)] struct Foo { lorem: &'static str, ipsum: u32, dolor: Result, }

let x = Some(Foo { lorem: "Hello World!", ipsum: 42, dolor: Ok("hey".to_string())});
let y = Some(Foo { lorem: "Hello Wrold!", ipsum: 42, dolor: Ok("hey ho!".to_string())});

assert_eq!(x, y);

} ```

Tip

Specify it as [dev-dependencies] and it will only be used for compiling tests, examples, and benchmarks. This way the compile time of cargo build won't be affected!

Also add #[cfg(test)] to your use statements, like this:

```rust,ignore

[cfg(test)]

use prettyassertions::{asserteq, assert_ne}; ```

Note

no_std support

For no_std support, disable the std feature and enable the alloc feature:

```toml

Cargo.toml

pretty_assertions = { version= "...", default-features = false, features = ["alloc"] } ```

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.