use refinement::{Predicate, Refinement};
#[derive(PartialEq, Clone, Debug)]
struct NonEmptyStringPredicate;
impl Predicate<String> for NonEmptyStringPredicate {
fn test(x: &String) -> bool {
!x.is_empty()
}
}
type NonEmptyString = Refinement<String, NonEmptyStringPredicate>;
#[test]
fn create_good_value() {
let x = NonEmptyString::new(String::from("Hello"));
assert_eq!(Some(String::from("Hello")), x.map(|x| x.to_inner()))
}
#[test]
fn create_bad_value() {
let x = NonEmptyString::new(String::from(""));
assert_eq!(None, x);
}
#[test]
fn clone_equality() {
let x = NonEmptyString::new(String::from("Hello")).unwrap();
assert_eq!(x, x.clone())
}