Crate hamcrest2

Source
Expand description

§Usage

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

use hamcrest2::prelude::*;

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

§General Matchers

§eq, not

assert_that!(1, eq(1));  // also equal_to()
assert_that!(1, not(eq(2)));

§compared_to

assert_that!(1, lt(2));   // also less_than()
assert_that!(1, leq(1));  // also less_than_or_equal_to()
assert_that!(2, gt(1));   // also greater_than()
assert_that!(2, geq(2));  // also greater_than_or_equal_to()

§type_of

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

§matches_regex

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

§Numerical Matchers

§close_to

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

§Filesystem Matchers

§path_exists, file_exists, dir_exists

let path = Path::new("./README.md");
assert_that!(path, path_exists());
assert_that!(path, file_exists());
assert_that!(path, not(dir_exists()));

§Option and Result

§has

let var: Option<i8> = Some(5);
assert_that!(var, has(5));

let var: Result<i8, String> = Ok(5);
assert_that!(var, has(5));

§ok

let var: Result<i8, String> = Ok(5);
assert_that!(var, ok());

assert_that!(Ok(5), ok::<i8, String>());

let var: Result<i8, String> = Err("bad!".to_string());
assert_that!(var, not(ok()));

§err

let var: Result<i8, String> = Err("bad!".to_string());
assert_that!(var, err());

assert_that!(Err("bad!".to_string()), err::<i8, String>());

let var: Result<i8, String> = Ok(5);
assert_that!(var, not(err()));

§some

let var: Option<i8> = Some(5);
assert_that!(var, some());

assert_that!(Some(1), some::<u8>());

let var: Option<i8> = None;
assert_that!(var, not(some()));

§none

let var: Option<i8> = None;
assert_that!(var, none());

assert_that!(None, none::<u8>());
assert_that!(Some(1), not(none::<u8>()));

§Collection Matchers

§contains, contains exactly, contains in order

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

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

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

§len

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

§empty

assert_that!(&Vec::<i32>::new(), empty());
assert_that!(&vec![1, 2, 3], not(empty()));

§Compound Matchers

§all

assert_that!(4, all!(lt(5), gt(3)));  // also and!()
assert_that!(
    &vec![1, 2, 3],
    all!(contains(vec![1, 2]), not(contains(vec![4])))
);

§any

assert_that!(4, any!(less_than(2), greater_than(3)));  // also or!()
assert_that!(
    &vec![1, 2, 3],
    any!(contains(vec![1, 2, 5]), not(contains(vec![4])))
);

§Misc Matchers

§is(bool)

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

§anything

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

Re-exports§

Modules§

Macros§