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§
Source§impl<'s, S> Spec<'s, S>
impl<'s, S> Spec<'s, S>
Sourcepub fn at_location(self, location: String) -> Self
pub fn at_location(self, location: String) -> Self
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.
Source§impl<'s, S> Spec<'s, S>
impl<'s, S> Spec<'s, S>
Sourcepub fn is_equal_to<E: Borrow<S>>(&mut self, expected: E)
pub fn is_equal_to<E: Borrow<S>>(&mut self, expected: E)
Asserts that the actual value and the expected value are equal. The value type must
implement PartialEq
.
assert_that(&"hello").is_equal_to(&"hello");
Sourcepub fn is_not_equal_to<E: Borrow<S>>(&mut self, expected: E)
pub fn is_not_equal_to<E: Borrow<S>>(&mut self, expected: E)
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(&"hello");
Source§impl<'s, S> Spec<'s, S>where
S: Debug,
impl<'s, S> Spec<'s, S>where
S: Debug,
Sourcepub fn matches<F>(&mut self, matching_function: F)
pub fn matches<F>(&mut self, matching_function: F)
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.
assert_that(&"hello").matches(|x| x.eq(&"hello"));
Trait Implementations§
Source§impl<'s> BooleanAssertions for Spec<'s, bool>
impl<'s> BooleanAssertions for Spec<'s, bool>
Source§impl<'s, T, I> ContainingIntoIterAssertions<'s, T> for Spec<'s, I>
impl<'s, T, I> ContainingIntoIterAssertions<'s, T> for Spec<'s, I>
Source§fn contains<E: 's + Borrow<T>>(&mut self, expected_value: E)
fn contains<E: 's + Borrow<T>>(&mut self, expected_value: E)
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);
Source§fn contains_all_of<E>(&mut self, expected_values_iter: &'s E)
fn contains_all_of<E>(&mut self, expected_values_iter: &'s E)
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]);
Source§fn does_not_contain<E: 's + Borrow<T>>(&mut self, expected_value: E)
fn does_not_contain<E: 's + Borrow<T>>(&mut self, expected_value: E)
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);
Source§fn equals_iterator<E>(&mut self, expected_iter: &'s E)
fn equals_iterator<E>(&mut self, expected_iter: &'s E)
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());
Source§impl<'s, T, I> ContainingIteratorAssertions<'s, T> for Spec<'s, I>
impl<'s, T, I> ContainingIteratorAssertions<'s, T> for Spec<'s, I>
Source§fn contains<E: 's + Borrow<T>>(&mut self, expected_value: E)
fn contains<E: 's + Borrow<T>>(&mut self, expected_value: E)
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);
Source§fn contains_all_of<E>(&mut self, expected_values_iter: &'s E)
fn contains_all_of<E>(&mut self, expected_values_iter: &'s E)
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]);
Source§fn does_not_contain<E: 's + Borrow<T>>(&mut self, expected_value: E)
fn does_not_contain<E: 's + Borrow<T>>(&mut self, expected_value: E)
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);
Source§fn equals_iterator<E>(&mut self, expected_iter: &'s E)
fn equals_iterator<E>(&mut self, expected_iter: &'s E)
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());
Source§impl<'s, T> ContainingOptionAssertions<T> for Spec<'s, Option<T>>
impl<'s, T> ContainingOptionAssertions<T> for Spec<'s, Option<T>>
Source§fn contains_value<E: Borrow<T>>(&mut self, expected_value: E)
fn contains_value<E: Borrow<T>>(&mut self, expected_value: E)
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);
Source§impl<'s, T, E> ContainingResultAssertions<T, E> for Spec<'s, Result<T, E>>
impl<'s, T, E> ContainingResultAssertions<T, E> for Spec<'s, Result<T, E>>
Source§impl<'r, T> DescriptiveSpec<'r> for Spec<'r, T>
impl<'r, T> DescriptiveSpec<'r> for Spec<'r, T>
Source§impl<'s, K, V> HashMapAssertions<'s, K, V> for Spec<'s, HashMap<K, V>>
impl<'s, K, V> HashMapAssertions<'s, K, V> for Spec<'s, HashMap<K, V>>
Source§fn has_length(&mut self, expected: usize)
fn has_length(&mut self, expected: usize)
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);
Source§fn is_empty(&mut self)
fn is_empty(&mut self)
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();
Source§fn contains_key<E: Borrow<K>>(&mut self, expected_key: E) -> Spec<'s, V>
fn contains_key<E: Borrow<K>>(&mut self, expected_key: E) -> Spec<'s, V>
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");
Source§fn does_not_contain_key<E: Borrow<K>>(&mut self, expected_key: E)
fn does_not_contain_key<E: Borrow<K>>(&mut self, expected_key: E)
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");
Source§fn contains_entry<E: Borrow<K>, F: Borrow<V>>(
&mut self,
expected_key: E,
expected_value: F,
)
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,
)
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");
Source§impl<'s, T, I> MappingIterAssertions<'s, T> for Spec<'s, I>
impl<'s, T, I> MappingIterAssertions<'s, T> for Spec<'s, I>
Source§fn mapped_contains<F, M>(&mut self, mapping_function: F, expected_value: &M)
fn mapped_contains<F, M>(&mut self, mapping_function: F, expected_value: &M)
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);
Source§fn matching_contains<F>(&mut self, matcher: F)
fn matching_contains<F>(&mut self, matcher: F)
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
.
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
}
});
Source§impl<'s, T> OptionAssertions<'s, T> for Spec<'s, Option<T>>where
T: Debug,
impl<'s, T> OptionAssertions<'s, T> for Spec<'s, Option<T>>where
T: Debug,
Source§impl<'s, T> OrderedAssertions<T> for Spec<'s, T>where
T: Debug + PartialOrd,
impl<'s, T> OrderedAssertions<T> for Spec<'s, T>where
T: Debug + PartialOrd,
Source§fn is_less_than<E: Borrow<T>>(&mut self, other: E)
fn is_less_than<E: Borrow<T>>(&mut self, other: E)
Asserts that the subject is less than the expected value. The subject type must
implement PartialOrd
.
assert_that(&1).is_less_than(&2);
Source§fn is_less_than_or_equal_to<E: Borrow<T>>(&mut self, other: E)
fn is_less_than_or_equal_to<E: Borrow<T>>(&mut self, other: E)
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);
Source§fn is_greater_than<E: Borrow<T>>(&mut self, other: E)
fn is_greater_than<E: Borrow<T>>(&mut self, other: E)
Asserts that the subject is greater than the expected value. The subject type must
implement PartialOrd
.
assert_that(&2).is_greater_than(&1);
Source§fn is_greater_than_or_equal_to<E: Borrow<T>>(&mut self, other: E)
fn is_greater_than_or_equal_to<E: Borrow<T>>(&mut self, other: E)
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);
Source§impl<'s> PathAssertions for Spec<'s, &'s Path>
impl<'s> PathAssertions for Spec<'s, &'s Path>
Source§fn exists(&mut self)
fn exists(&mut self)
Asserts that the subject Path
refers to an existing location.
assert_that(&Path::new("/tmp/file")).exists();
Source§fn does_not_exist(&mut self)
fn does_not_exist(&mut self)
Asserts that the subject Path
does not refer to an existing location.
assert_that(&Path::new("/tmp/file")).does_not_exist();
Source§fn is_a_file(&mut self)
fn is_a_file(&mut self)
Asserts that the subject Path
refers to an existing file.
assert_that(&Path::new("/tmp/file")).is_a_file();
Source§fn is_a_directory(&mut self)
fn is_a_directory(&mut self)
Asserts that the subject Path
refers to an existing directory.
assert_that(&Path::new("/tmp/dir/")).is_a_directory();
Source§impl<'s> PathAssertions for Spec<'s, PathBuf>
impl<'s> PathAssertions for Spec<'s, PathBuf>
Source§fn exists(&mut self)
fn exists(&mut self)
Asserts that the subject PathBuf
refers to an existing location.
assert_that(&PathBuf::from("/tmp/file")).exists();
Source§fn does_not_exist(&mut self)
fn does_not_exist(&mut self)
Asserts that the subject PathBuf
does not refer to an existing location.
assert_that(&PathBuf::from("/tmp/file")).does_not_exist();
Source§fn is_a_file(&mut self)
fn is_a_file(&mut self)
Asserts that the subject PathBuf
refers to an existing file.
assert_that(&PathBuf::from("/tmp/file")).is_a_file();
Source§fn is_a_directory(&mut self)
fn is_a_directory(&mut self)
Asserts that the subject PathBuf
refers to an existing directory.
assert_that(&PathBuf::from("/tmp/dir/")).is_a_directory();
Source§impl<'s, T, E> ResultAssertions<'s, T, E> for Spec<'s, Result<T, E>>
impl<'s, T, E> ResultAssertions<'s, T, E> for Spec<'s, Result<T, E>>
Source§impl<'s> StrAssertions for Spec<'s, &'s str>
impl<'s> StrAssertions for Spec<'s, &'s str>
Source§fn starts_with<'r, E: Borrow<&'r str>>(&mut self, expected: E)
fn starts_with<'r, E: Borrow<&'r str>>(&mut self, expected: E)
Asserts that the subject &str
starts with the provided &str
.
assert_that(&"Hello").starts_with(&"H");
Source§impl<'s> StrAssertions for Spec<'s, String>
impl<'s> StrAssertions for Spec<'s, String>
Source§fn starts_with<'r, E: Borrow<&'r str>>(&mut self, expected: E)
fn starts_with<'r, E: Borrow<&'r str>>(&mut self, expected: E)
Asserts that the subject String
starts with the provided &str
.
assert_that(&"Hello".to_owned()).starts_with(&"H");
Source§impl<'s, T> VecAssertions for Spec<'s, Vec<T>>
impl<'s, T> VecAssertions for Spec<'s, Vec<T>>
Source§fn has_length(&mut self, expected: usize)
fn has_length(&mut self, expected: usize)
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);