Struct speculoos::Spec

source ·
pub struct Spec<'s, S: 's> {
    pub subject: &'s S,
    pub subject_name: Option<&'s str>,
    pub location: Option<String>,
    pub description: Option<&'s str>,
}
Expand description

An assertion.

This is created by either the assert_that function, or by calling that on a SpecDescription.

Fields§

§subject: &'s S§subject_name: Option<&'s str>§location: Option<String>§description: Option<&'s str>

Implementations§

Provides the actual location of the assertion.

Usually you would not call this directly, but use the macro forms of assert_that and asserting, which will call this on your behalf with the correct location.

Associates a name with the subject.

This will be displayed if the assertion fails.

Asserts that the actual value and the expected value are equal. The value type must implement PartialEq.

assert_that(&"hello").is_equal_to(&"hello");

Asserts that the actual value and the expected value are not equal. The value type must implement PartialEq.

assert_that(&"hello").is_not_equal_to(&"olleh");

Accepts a function accepting the value type which returns a bool. Returning false will cause the assertion to fail.

NOTE: The resultant panic message will only state the actual value. It’s recommended that you write your own assertion rather than relying upon this.

matches returns &mut &Self, making it possible to chain multiple assertions.

assert_that(&"hello").matches(|x| x.eq(&"hello"));

Transforms the subject of the Spec by passing it through to the provided mapping function.

let test_struct = TestStruct { value: 5 };
assert_that(&test_struct).map(|val| &val.value).is_equal_to(&5);

Trait Implementations§

Asserts that the subject is true. The subject type must be bool.

assert_that(&true).is_true();

Asserts that the subject is false. The subject type must be bool.

assert_that(&true).is_false();

Asserts that the subject contains the provided value. The subject must implement IntoIterator, and the contained type must implement PartialEq and Debug.

let test_vec = vec![1,2,3];
assert_that(&test_vec).contains(&2);

Asserts that the subject contains all of the provided values. The subject must implement IntoIterator, and the contained type must implement PartialEq and Debug.

let test_vec = vec![1,2,3];
assert_that(&test_vec).contains_all_of(&vec![&2, &3]);

Asserts that the subject does not contain the provided value. The subject must implement IntoIterator, and the contained type must implement PartialEq and Debug.

let test_vec = vec![1,2,3];
assert_that(&test_vec).does_not_contain(&4);

Asserts that the subject is equal to provided iterator. The subject must implement IntoIterator, the contained type must implement PartialEq and Debug and the expected value must implement Iterator and Clone.

let expected_vec = vec![1,2,3];
let test_vec = vec![1,2,3];
assert_that(&test_vec).equals_iterator(&expected_vec.iter());

Asserts that the iterable subject contains the provided value. The subject must implement Iterator, and the contained type must implement PartialEq and Debug.

let test_vec = vec![1,2,3];
assert_that(&test_vec.iter()).contains(&2);

Asserts that the subject contains all of the provided values. The subject must implement Iterator, and the contained type must implement PartialEq and Debug.

let test_vec = vec![1,2,3];
assert_that(&test_vec.iter()).contains_all_of(&vec![&2, &3]);

Asserts that the iterable subject does not contain the provided value. The subject must implement Iterator, and the contained type must implement PartialEq and Debug.

let test_vec = vec![1,2,3];
assert_that(&test_vec.iter()).does_not_contain(&4);

Asserts that the iterable subject is equal to provided iterator. The subject must implement Iterator, the contained type must implement PartialEq and Debug and the expected value must implement Iterator and Clone.

let expected_vec = vec![1,2,3];
let test_vec = vec![1,2,3];
assert_that(&test_vec.iter()).equals_iterator(&expected_vec.iter());

Asserts that the subject is a Some containing the expected value. The subject type must be an Option.

assert_that(&Some(1)).contains_value(&1);

Asserts that the subject is an Ok Result containing the expected value. The subject type must be a Result.

assert_that(&Result::Ok::<usize, usize>(1)).is_ok_containing(&1);

Asserts that the subject is an Err Result containing the expected value. The subject type must be a Result.

assert_that(&Result::Err::<usize, usize>(1)).is_err_containing(&1);
Formats the value using the given formatter. Read more
source§

fn contains_entry<E: Borrow<K>, F: Borrow<V>>(
    &mut self,
    expected_key: E,
    expected_value: F
)

Asserts that the subject hashmap contains the expected key with the expected value. The subject type must be of HashMap.

let mut test_map = HashMap::new();
test_map.insert("hello", "hi");

assert_that(&test_map).contains_entry(&"hello", &"hi");
source§

fn does_not_contain_entry<E: Borrow<K>, F: Borrow<V>>(
    &mut self,
    expected_key: E,
    expected_value: F
)

Asserts that the subject hashmap does not contains the provided key and value. The subject type must be of HashMap.

let mut test_map = HashMap::new();
test_map.insert("hello", "hi");

assert_that(&test_map).does_not_contain_entry(&"hello", &"hey");

Asserts that the subject is close to the expected value by the specified tolerance. The subject type must implement Float and Debug.

assert_that(&2.0f64).is_close_to(2.0f64, 0.01f64);

Asserts that the length of the subject hashmap is equal to the provided length. The subject type must be of HashMap.

let mut test_map = HashMap::new();
test_map.insert(1, 1);
test_map.insert(2, 2);

assert_that(&test_map).has_length(2);

Asserts that the subject hashmap is empty. The subject type must be of HashMap.

let test_map: HashMap<u8, u8> = HashMap::new();
assert_that(&test_map).is_empty();

Asserts that the subject hashmap is not empty. The subject type must be of HashMap.

let mut test_map: HashMap<u8, u8> = HashMap::new();
test_map.insert(1, 2);
assert_that(&test_map).is_not_empty();

Asserts that the length of the subject HashSet is equal to the provided length. The subject type must be of HashSet.

let mut test_map = HashSet::new();
test_map.insert(1);
test_map.insert(2);

assert_that(&test_map).has_length(2);

Asserts that the subject HashSet is empty. The subject type must be of HashSet.

let test_map: HashSet<u8> = HashSet::new();
assert_that(&test_map).is_empty();

Asserts that the subject HashSet is not empty. The subject type must be of HashSet.

let mut test_map: HashSet<u8> = HashSet::new();
test_map.insert(42);
assert_that(&test_map).is_not_empty();

Asserts that the subject hashmap contains the expected key. The subject type must be of HashMap.

This will return a new Spec containing the associated value if the key is present.

let mut test_map = HashMap::new();
test_map.insert("hello", "hi");

assert_that(&test_map).contains_key(&"hello");

Asserts that the subject hashmap does not contain the provided key. The subject type must be of HashMap.

let mut test_map = HashMap::new();
test_map.insert("hello", "hi");

assert_that(&test_map).does_not_contain_key(&"hey");

Asserts that the subject contains a matching item by using the provided function. The subject must implement IntoIterator, and the contained type must implement Debug.

#[derive(Debug, PartialEq)]
let mut test_into_iter = LinkedList::new();
test_into_iter.push_back(TestEnum::Bad);
test_into_iter.push_back(TestEnum::Good);
test_into_iter.push_back(TestEnum::Bad);

assert_that(&test_into_iter).matching_contains(|val| {
    match val {
        &TestEnum::Good => true,
        _ => false
    }
});

Maps the values of the subject before asserting that the mapped subject contains the provided value. The subject must implement IntoIterator, and the type of the mapped value must implement PartialEq.

NOTE: The panic message will refer to the mapped values rather than the values present in the original subject.

#[derive(PartialEq, Debug)]
struct Simple {
    pub val: usize,
}

//...
assert_that(&vec![Simple { val: 1 }, Simple { val: 2 } ]).mapped_contains(|x| x.val, &2);

Asserts that the subject is Some. The subject type must be an Option.

This will return a new Spec containing the unwrapped value if it is Some.

assert_that(&Some(1)).is_some();

Asserts that the subject is None. The value type must be an Option.

assert_that(&Option::None::<String>).is_none();

Asserts that the subject is less than the expected value. The subject type must implement PartialOrd.

assert_that(&1).is_less_than(&2);

Asserts that the subject is less than or equal to the expected value. The subject type must implement PartialOrd.

assert_that(&2).is_less_than_or_equal_to(&2);

Asserts that the subject is greater than the expected value. The subject type must implement PartialOrd.

assert_that(&2).is_greater_than(&1);

Asserts that the subject is greater than or equal to the expected value. The subject type must implement PartialOrd.

assert_that(&2).is_greater_than_or_equal_to(&1);

Asserts that the subject Path refers to an existing location.

assert_that(&Path::new("/tmp/file")).exists();

Asserts that the subject Path does not refer to an existing location.

assert_that(&Path::new("/tmp/file")).does_not_exist();

Asserts that the subject Path refers to an existing file.

assert_that(&Path::new("/tmp/file")).is_a_file();

Asserts that the subject Path refers to an existing directory.

assert_that(&Path::new("/tmp/dir/")).is_a_directory();

Asserts that the subject Path has the expected file name.

assert_that(&Path::new("/tmp/file")).has_file_name(&"file");

Asserts that the subject is Ok. The value type must be a Result.

This will return a new Spec containing the unwrapped value if it is Ok.

assert_that(&Result::Ok::<usize, usize>(1)).is_ok();

Asserts that the subject is Err. The value type must be a Result.

This will return a new Spec containing the unwrapped value if it is Err.

assert_that(&Result::Err::<usize, usize>(1)).is_err();

Asserts that the subject &str starts with the provided &str.

assert_that(&"Hello").starts_with("H");

Asserts that the subject &str ends with the provided &str.

assert_that(&"Hello").ends_with("o");

Asserts that the subject &str contains the provided &str.

assert_that(&"Hello").contains("e");

Asserts that the subject &str contains the provided &str.

assert_that(&"Hello").contains("e");

Asserts that the subject &str is empty.

assert_that(&"").is_empty();

Asserts that the length of the subject vector is equal to the provided length. The subject type must be of &Vec with a matching lifetime.

assert_that(&&vec![1, 2, 3, 4]).has_length(4);

Asserts that the subject vector is empty. The subject type must be of &Vec with a matching lifetime.

let test_vec: &Vec<u8> = &vec![];
assert_that(&test_vec).is_empty();

Asserts that the subject vector is not empty. The subject type must be of &Vec with a matching lifetime.

let test_vec: Vec<u8> = vec![1];
assert_that(&test_vec).is_not_empty();

Asserts that the length of the subject vector is equal to the provided length. The subject type must be of Vec.

assert_that!(vec![1, 2, 3, 4]).has_length(4);

Asserts that the subject vector is empty. The subject type must be of Vec.

let test_vec: Vec<u8> = vec![];
assert_that!(test_vec).is_empty();

Asserts that the subject vector is not empty. The subject type must be of Vec.

let test_vec: Vec<u8> = vec![1];
assert_that!(test_vec).is_not_empty();

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.