diff options
author | Matthias Beyer <mail@beyermatthias.de> | 2017-10-05 14:11:03 +0200 |
---|---|---|
committer | Matthias Beyer <mail@beyermatthias.de> | 2017-10-05 14:11:03 +0200 |
commit | 57b2fc454faeeb72a3d7573ce0ae656a62f1604b (patch) | |
tree | d76ade2f1030cafc36298d8fc2bc70a58338e3fb | |
parent | 58cbce8728405b4342f4b0b89318a29e1aa1adba (diff) |
Add tests where both filter types are used
-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 a872543..050084c 100644 --- a/src/failable/filter.rs +++ b/src/failable/filter.rs @@ -384,5 +384,36 @@ mod tests { assert!(e.filter(&1).is_err()); } + + #[test] + fn test_both_filter_types() { + use filter::Filter; + + let a = |_: &i32| -> Result<bool, StupError> { Ok(true) }; + let b = |_: &i32| -> bool { true }; + let c = |_: &i32| -> Result<bool, StupError> { Ok(true) }; + let d = |_: &i32| -> bool { false }; + + let e = a // true + .and(b.into_failable().map_err(|_| StupError {})) // true + .xor(c) // true + .or(d.into_failable().map_err(|_| StupError {})); // true + + assert!(!e.filter(&1).unwrap()); + } + + + #[test] + fn test_both_filter_types_in_one_scope() { + use filter::Filter; + use failable::filter::FailableFilter; + + let failable = |_: &i32| -> Result<bool, StupError> { Ok(true) }; + let unfailable = |_: &i32| -> bool { true }; + + assert!(failable.filter(&1).unwrap()); + assert!(unfailable.filter(&1)); + + } } |