summaryrefslogtreecommitdiffstats
path: root/sca-cpp/trunk/kernel/kernel-test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'sca-cpp/trunk/kernel/kernel-test.cpp')
-rw-r--r--sca-cpp/trunk/kernel/kernel-test.cpp14
1 files changed, 12 insertions, 2 deletions
diff --git a/sca-cpp/trunk/kernel/kernel-test.cpp b/sca-cpp/trunk/kernel/kernel-test.cpp
index 9b87397b96..7bde4fb526 100644
--- a/sca-cpp/trunk/kernel/kernel-test.cpp
+++ b/sca-cpp/trunk/kernel/kernel-test.cpp
@@ -501,13 +501,23 @@ const failable<int> failableH(const int v) {
bool testFailableMonad() {
const failable<int> m(2);
assert(m >> failableF == failableF(2));
- assert((m >> success<int, string>()) == m);
+ assert((m >> success<int, string, int>()) == m);
assert(m >> failableF >> failableG == m >> failableH);
cout << "Failable monad test... " << endl;
- failable<int> ooops = mkfailure<int>("test");
+ const failable<int> ooops = mkfailure<int>("test", 500);
assert(reason(ooops) == "test");
+ assert(rcode(ooops) == 500);
assert(ooops >> failableF >> failableG == ooops);
+
+ const failable<value> vooops = mkfailure<value>(ooops);
+ assert(reason(vooops) == "test");
+ assert(rcode(vooops) == 500);
+
+ const value v = value(vooops);
+ assert(car<value>(v) == value());
+ assert(cadr<value>(v) == string("test"));
+ assert(caddr<value>(v) == value((double)500));
return true;
}