summary refs log tree commit diff
path: root/src/test/stdtest
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2011-10-28 18:09:48 -0700
committerBrian Anderson <banderson@mozilla.com>2011-10-29 01:25:11 -0700
commit2b62a80202e2855d47f20d271842e0e9aec6d8e2 (patch)
treea37878693d9c0aa58bfa63a3eed957f4502811ba /src/test/stdtest
parentc1092fb6d88efe51e42df3aae2a321cc669e12a0 (diff)
downloadrust-2b62a80202e2855d47f20d271842e0e9aec6d8e2.tar.gz
rust-2b62a80202e2855d47f20d271842e0e9aec6d8e2.zip
stdlib: Add result::chain for composing results
Diffstat (limited to 'src/test/stdtest')
-rw-r--r--src/test/stdtest/result.rs17
-rw-r--r--src/test/stdtest/stdtest.rc1
2 files changed, 18 insertions, 0 deletions
diff --git a/src/test/stdtest/result.rs b/src/test/stdtest/result.rs
new file mode 100644
index 00000000000..9a7b390a523
--- /dev/null
+++ b/src/test/stdtest/result.rs
@@ -0,0 +1,17 @@
+import std::result;
+
+fn op1() -> result::t<int, str> { result::ok(666) }
+
+fn op2(&&i: int) -> result::t<uint, str> { result::ok(i as uint + 1u) }
+
+fn op3() -> result::t<int, str> { result::err("sadface") }
+
+#[test]
+fn chain_success() {
+    assert result::get(result::chain(op1(), op2)) == 667u;
+}
+
+#[test]
+fn chain_failure() {
+    assert result::get_err(result::chain(op3(), op2)) == "sadface";
+}
\ No newline at end of file
diff --git a/src/test/stdtest/stdtest.rc b/src/test/stdtest/stdtest.rc
index b2b7522c2e1..c47b85c65f8 100644
--- a/src/test/stdtest/stdtest.rc
+++ b/src/test/stdtest/stdtest.rc
@@ -31,6 +31,7 @@ mod test;
 mod uint;
 mod float;
 mod math;
+mod result;
 
 // Local Variables:
 // mode: rust