expectest 0.2.4

Crate provides matchers and matcher functions for unit testing.
Documentation

expectest

[Build Status] (https://travis-ci.org/zummenix/expectest) Crates.io Crates.io

Crate provides matchers and matcher functions for unit testing. Inspired by Nimble for Swift.

Using this library you will receive helpful messages with data that is used in test case, example:

let result = vec![1, 2, 2];
expect!(result).to(be_equal_to([1, 2, 3]));

Test fails and gives us a message:

expected to be equal to <[1, 2, 3]>, got <[1, 2, 2]>

Usage

In Cargo.toml:

[dev-dependencies]
expectest = "~0.2.3"

In your crate:

#[cfg(test)]
#[macro_use(expect)]
extern crate expectest;

You can export all needed functions and types from prelude module:

use expectest::prelude::*;

Examples

Check out the tests directory!

Expectations

Use basic syntax to express expectations:

expect!(...).to(...);
expect!(...).to_not(...);
expect!(...).not_to(...);

Note: You can use expect function instead of expect! macro in that case you will not see file and line where the test will fail.

Equality

For types that implement the PartialEq trait:

expect!("hello".to_string()).to(be_equal_to("hello"));

Closeness of float numbers

There is a way to check if two float numbers are close each other:

expect!(12.1_f64).to(be_close_to(12.0).delta(0.1));

With default delta equal 0.001:

expect!(12.001_f64).to(be_close_to(12.0));

Order

For types that implement the PartialOrd trait:

expect!(1).to(be_greater_than(0));

Use any of the following matchers: be_less_than, be_less_or_equal_to, be_greater_than, be_greater_or_equal_to

Option

There are matchers for the Option<T> type:

expect!(Some(9)).to(be_some().value(9));

Use any of the following matchers: be_some, be_none

Result

There are matchers for the Result<T, E> type:

expect!("4".parse::<u32>()).to(be_ok().value(4));

Use any of the following matchers: be_ok, be_err

Emptyness

There is be_empty matcher for types that implement IsEmpty trait:

expect!("").to(be_empty());

Note: IsEmpty trait implemented by library for following types: String, &str, Vec<T>, &[T].

Count of elements in a collection

There is have_count matcher for types that implement Iterator + Clone trait:

expect!("abc".chars()).to(have_count(3));

Boolean

expect!(9 == 9).to(be_true());

Use any of the following matchers: be_true, be_false

Alternative crates

License

MIT