Crates.io | smoothy |
lib.rs | smoothy |
version | 0.8.3 |
created_at | 2023-11-14 15:25:09.510625+00 |
updated_at | 2025-04-12 12:33:15.11869+00 |
description | Write smooth assertions in a fluent and human readable way |
homepage | https://github.com/open-schnick/smoothy |
repository | https://github.com/open-schnick/smoothy |
max_upload_size | |
id | 1034918 |
size | 138,389 |
Write smooth assertions in a fluent and readable way.
The crate is heavily inspired by AssertJ
All asserted are stared by calling assert_that
on a value.
After that various assertions based on the type of the asserted value can be made.
use smoothy::prelude::*;
assert_that(42).equals(42);
assert_that(true).is_true();
assert_that(String::from("Hello")).equals("Hello");
More examples on docs.rs
stateDiagram-v2
[*] --> BasicAsserter<Assertable> : assert_that
BasicAsserter<Assertable> --> Anything
state "Assertable is any type" as Anything {
[*] --> AssertionConnector<Assertable> : is
[*] --> AssertionConnector<Assertable> : is_not
[*] --> AssertionConnector<Assertable> : equals
[*] --> AssertionConnector<Assertable> : not_equals
[*] --> AssertionConnector<Assertable> : try_into_equals
[*] --> AssertionConnector<Assertable> : try_into_not_equals
[*] --> AssertionConnector<Assertable> : map
AssertionConnector<Assertable> --> [*] : and
}
BasicAsserter<Assertable> --> Result
state "Assertable is Result<Ok, Err>" as Result {
[*] --> OkAsserter<Ok> : is_ok
OkAsserter<Ok> --> BasicAsserter<Ok> : and_value
[*] --> ErrAsserter<Err> : is_err
ErrAsserter<Err> --> BasicAsserter<Err> : and_error
}
BasicAsserter<Assertable> --> Option
state "Assertable is Option<Some>" as Option {
[*] --> [*] : is_none
[*] --> SomeAsserter<Some> : is_some
SomeAsserter<Some> --> BasicAsserter<Some> : and_value
}
BasicAsserter<Assertable> --> ImplString
state "Assertable implements ToString" as ImplString {
[*] --> BasicAsserter<String> : to_string
}
BasicAsserter<Assertable> --> ImplToBool
state "Assertable implements Into<bool>" as ImplToBool {
[*] --> BasicAsserter<bool> : is_true
[*] --> BasicAsserter<bool> : is_false
}
BasicAsserter<Assertable> --> ImplAsRefStr
state "Assertable implements AsRef<str>" as ImplAsRefStr {
[*] --> AssertionConnector<AsRef<str>> : contains
[*] --> AssertionConnector<AsRef<str>> : starts_with
[*] --> AssertionConnector<AsRef<str>> : matches
AssertionConnector<AsRef<str>> --> [*] : and
}
BasicAsserter<Assertable> --> ImplIntoIter
state "Assertable implements IntoIter<Item>" as ImplIntoIter {
[*] --> [*] : is_empty
[*] --> [*] : is_not_empty
[*] --> BasicAsserter<Item>: first
[*] --> BasicAsserter<Item>: second
[*] --> BasicAsserter<Item>: third
[*] --> BasicAsserter<Item>: nth
}