summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2017-10-01 13:58:47 +0200
committerMatthias Beyer <mail@beyermatthias.de>2017-10-01 13:58:47 +0200
commit51c6b1e6a365112865dd579fd604d18d97d32c55 (patch)
treef692b65dbe688e608977063af20769c31990d63a
parent4e9f57e7a00ccc9c036f86c9f78ff8ee1560a6ae (diff)
Add more tests
-rw-r--r--src/failable/filter.rs31
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());
+ }
}