use clearcheck::assertions::collection::duplicate::DuplicateContentAssertion; use clearcheck::assertions::collection::membership::MembershipAssertion; use clearcheck::assertions::collection::size::SizeAssertion; use clearcheck::assertions::collection::sort::SortAssertion; use clearcheck::assertions::ordered::OrderedAssertion; #[derive(Eq, Debug, PartialEq)] struct Book { id: usize, title: &'static str, } impl Book { fn new(id: usize, title: &'static str) -> Self { Book { id, title } } } #[test] fn should_match_all_books() { let library = vec![ Book::new(1, "Database internals"), Book::new(2, "Designing data intensive applications"), Book::new(3, "Learning rust"), Book::new(4, "Rust in action"), ]; library .should_not_be_empty() .should_not_contain_duplicates() .should_have_at_least_size(3) .should_contain_all(vec![ &Book::new(3, "Learning rust"), &Book::new(4, "Rust in action"), ]); } #[test] #[should_panic] fn should_not_match_all_book() { let library = vec![ Book::new(1, "Database internals"), Book::new(2, "Designing data intensive applications"), Book::new(3, "Learning rust"), Book::new(4, "Rust in action"), ]; library .should_not_be_empty() .should_have_at_least_size(3) .should_not_contain_duplicates() .should_contain_all(vec![ &Book::new(3, "Learning rust"), &Book::new(4, "Designing a KV storage engine"), ]); } #[test] fn should_match_all_strings() { let libraries = vec!["clearcheck", "gotest", "junit", "scalatest"]; libraries .should_not_be_empty() .should_not_contain_duplicates() .should_contain("clearcheck") .should_be_sorted_ascending() .should_be_less_than(&vec![ "clearcheck", "gotest", "junit", "scalatest", "ziptest", ]); }