The Wayback Machine - https://web.archive.org/web/20190901123827/https://github.com/ujh/hamcrest-rust
Skip to content
A port of Hamcrest to rust
Rust
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src Add boolean matchers: is(true|false) Nov 11, 2017
tests
.gitignore Update to master Aug 19, 2014
.travis.yml Configure travis to fail if formatting is not correct and format code Jan 10, 2017
CHANGELOG.md Prepare for the release of 0.1.5 Nov 13, 2017
Cargo.toml Prepare for the release of 0.1.5 Nov 13, 2017
LICENSE-APACHE Add MIT and Apache 2.0 dual license files and headers Jun 5, 2016
LICENSE-MIT
README.md Add some docs to the README Nov 11, 2017

README.md

Build Status

Hamcrest

A port of Hamcrest to Rust.

Installing

To use Hamcrest, add this to your Cargo.toml:

[dev-dependencies]
hamcrest = "*"

And this to your crate root:

#[cfg(test)] #[macro_use] extern crate hamcrest;

After a quick cargo build, you should be good to go!

Usage

Hamcrest supports a number of matchers. The easiest way is to just use them all like this:

use hamcrest::prelude::*;

If you want to be more selective make sure that you also import the HamcrestMatcher trait.

equal_to

assert_that!(1, is(equal_to(1)));

close_to

assert_that!(1e-40f32, is(close_to(0.0, 0.01)));
assert_that!(1e-40f32, is_not(close_to(0.0, 0.000001)));

compared_to

assert_that!(1, is(less_than(2)));
assert_that!(1, is(less_than_or_equal_to(1)));
assert_that!(2, is(greater_than(1)));
assert_that!(2, is(greater_than_or_equal_to(2)));

existing_{file,path,dir}

assert_that!(&path, is(existing_path()));
assert_that!(&path, is(existing_file()));
assert_that!(&path, is_not(existing_dir()));

none

assert_that!(None, is(none::<int>()));
assert_that!(Some(1), is_not(none::<int>()));

anything

assert_that!(42, is(anything()));
assert_that!("test", is(anything()));

contains, contains_exactly, contains_in order

assert_that!(&vec!(1i, 2, 3), contains(vec!(1i, 2)));
assert_that!(&vec!(1i, 2, 3), not(contains(vec!(4i))));

assert_that!(&vec!(1i, 2, 3), contains(vec!(1i, 2, 3)).exactly());
assert_that!(&vec!(1i, 2, 3), not(contains(vec!(1i, 2)).exactly()));

assert_that!(&vec!(1i, 2, 3), contains(vec!(1i, 2)).in_order());
assert_that!(&vec!(1i, 2, 3), not(contains(vec!(1i, 3)).in_order()));

matches_regex

assert_that!("1234", matches_regex(r"\d"));
assert_that!("abc", does_not(match_regex(r"\d")));

type_of

assert_that!(123usize, is(type_of::<usize>()));
assert_that!("test", is(type_of::<&str>()));

all_of

assert_that!(4, all_of!(less_than(5), greater_than(3)));
assert_that!(
    &vec![1, 2, 3],
    all_of!(contains(vec![1, 2]), not(contains(vec![4])))
);

any_of

assert_that!(4, any_of!(less_than(2), greater_than(3)));
assert_that!(
    &vec![1, 2, 3],
    any_of!(contains(vec![1, 2, 5]), not(contains(vec![4])))
);

is(bool)

assert_that!(true, is(true));
assert_that!(false, is(false));

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.

You can’t perform that action at this time.