diff options
author | Matthias Beyer <mail@beyermatthias.de> | 2017-10-01 13:58:47 +0200 |
---|---|---|
committer | Matthias Beyer <mail@beyermatthias.de> | 2017-10-01 13:58:47 +0200 |
commit | 51c6b1e6a365112865dd579fd604d18d97d32c55 (patch) | |
tree | f692b65dbe688e608977063af20769c31990d63a | |
parent | 4e9f57e7a00ccc9c036f86c9f78ff8ee1560a6ae (diff) |
Add more tests
-rw-r--r-- | src/failable/filter.rs | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/failable/filter.rs b/src/failable/filter.rs index 158111b..a940cf5 100644 --- a/src/failable/filter.rs +++ b/src/failable/filter.rs @@ -410,5 +410,36 @@ mod tests { assert!(a.filter(&1).unwrap()); } + + #[test] + fn test_error_return() { + let a = |_: &i32| -> Result<bool, StupError> { Err(StupError {}) }; + + assert!(a.filter(&1).is_err()); + } + + #[test] + fn test_error_return_and_chained() { + let a = |_: &i32| -> Result<bool, StupError> { Err(StupError {}) }; + let b = |_: &i32| -> Result<bool, StupError> { Ok(true) }; + let c = |_: &i32| -> Result<bool, StupError> { Ok(true) }; + let d = |_: &i32| -> Result<bool, StupError> { Ok(true) }; + + let e = d.and(b).and(c).and(a); + + assert!(e.filter(&1).is_err()); + } + + #[test] + fn test_error_return_or_chained() { + let a = |_: &i32| -> Result<bool, StupError> { Err(StupError {}) }; + let b = |_: &i32| -> Result<bool, StupError> { Ok(true) }; + let c = |_: &i32| -> Result<bool, StupError> { Ok(true) }; + let d = |_: &i32| -> Result<bool, StupError> { Ok(true) }; + + let e = a.or(b).or(c).or(d); + + assert!(e.filter(&1).is_err()); + } } |