1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
use core::fmt::Debug;

use crate::error::Error;

pub fn assert_eq<T: Eq + Debug>(message: &str, left: &T, right: &T) -> Result<(), Error> {
    if left == right {
        Ok(())
    } else {
        Err(Error::assertion(format!(
            "expect left ({left:?}) to be equal to right ({right:?}): {message}"
        )))
    }
}

pub fn assert_not_eq<T: Eq + Debug>(message: &str, left: &T, right: &T) -> Result<(), Error> {
    if left != right {
        Ok(())
    } else {
        Err(Error::assertion(format!(
            "expect left ({left:?}) to be not equal to right ({right:?}): {message}"
        )))
    }
}

pub fn assert_gt<T: Ord + Debug>(message: &str, left: &T, right: &T) -> Result<(), Error> {
    if left > right {
        Ok(())
    } else {
        Err(Error::assertion(format!(
            "expect left ({left:?}) to be greater than right ({right:?}): {message}"
        )))
    }
}

pub fn assert_err<T: Debug, E: Debug>(message: &str, result: Result<T, E>) -> Result<(), Error> {
    if result.is_err() {
        Ok(())
    } else {
        Err(Error::assertion(format!(
            "expect result ({result:?}) to be an error: {message}"
        )))
    }
}