vale 0.0.0

A simple entity validation library
Documentation
use vale::Validate;

struct Struct {
    value: u32,
    string: String,
    boolean: bool,
    even_value: i32,
    transformer: String,
    transfailer: String,
}

impl vale::Validate for Struct {
#[vale::ruleset]
fn validate(&mut self) -> Result<(), Vec<String>> {
    vale::rule!(self.value > 10, "Too low");
    vale::rule!(self.string.len() > 3, "Too short");
    vale::rule!(self.boolean, "Too false!");
    vale::rule!(is_even(self.even_value), "Not even!");
    self.transformer = self.transformer.trim().to_string();
    vale::rule!(self.transformer.len() < 10, "Too short");
    self.transformer = self.transformer.to_lowercase();
    vale::rule!(self.transfailer.len() < 10);
    self.transfailer = self.transfailer.trim().to_string();
}
}

fn is_even(arg: i32) -> bool {
    arg % 2 == 0
}

fn valid_struct() -> Struct {
    Struct {
        value: 12,
        string: "String".to_string(),
        boolean: true,
        even_value: 2,
        transformer: "hello".to_string(),
        transfailer: "hello".to_string(),
    }
}

#[test]
fn test_valid() {
    let mut s = valid_struct();
    s.validate().unwrap();
}

#[test]
#[should_panic(expected = "Too low")]
fn test_too_small() {
    let mut s = valid_struct();
    s.value = 8;
    s.validate().unwrap();
}

#[test]
#[should_panic(expected = "Too short")]
fn test_too_short() {
    let mut s = valid_struct();
    s.string = "hi".to_string();
    s.validate().unwrap();
}

#[test]
#[should_panic(expected = "Too false!")]
fn test_too_false() {
    let mut s = valid_struct();
    s.boolean = false;
    s.validate().unwrap();
}

#[test]
#[should_panic(expected = "Not even!")]
fn test_with() {
    let mut s = valid_struct();
    s.even_value = 7;
    s.validate().unwrap();
}

#[test]
fn transform() {
    let mut s = valid_struct();
    s.transformer = "     CAST ME       ".to_string();
    s.validate().unwrap();
    assert_eq!(s.transformer, "cast me");
}

#[test]
#[should_panic(expected = "No message provided")]
fn transfail() {
    let mut s = valid_struct();
    s.transfailer = "     CAST ME       ".to_string();
    s.validate().unwrap();
    assert_eq!(s.transformer, "cast me");
}