]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/boost/libs/leaf/test/ctx_handle_all_test.cpp
import quincy beta 17.1.0
[ceph.git] / ceph / src / boost / libs / leaf / test / ctx_handle_all_test.cpp
diff --git a/ceph/src/boost/libs/leaf/test/ctx_handle_all_test.cpp b/ceph/src/boost/libs/leaf/test/ctx_handle_all_test.cpp
new file mode 100644 (file)
index 0000000..1324715
--- /dev/null
@@ -0,0 +1,51 @@
+// Copyright (c) 2018-2020 Emil Dotchevski and Reverge Studios, Inc.
+
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#include <boost/leaf/context.hpp>
+#include <boost/leaf/handle_errors.hpp>
+#include <boost/leaf/result.hpp>
+#include "lightweight_test.hpp"
+#include <iostream>
+
+namespace leaf = boost::leaf;
+
+template <int>
+struct info
+{
+    int value;
+};
+
+template <class Ctx>
+leaf::result<int> f( Ctx & ctx )
+{
+    auto active_context = activate_context(ctx);
+    return leaf::new_error( info<1>{1} );
+}
+
+int main()
+{
+    leaf::context<info<1>, leaf::verbose_diagnostic_info const &> ctx;
+
+    {
+        leaf::result<int> r1 = f(ctx);
+        BOOST_TEST(!r1);
+
+        int r2 = ctx.handle_error<int>(
+            r1.error(),
+            []( info<1> x )
+            {
+                BOOST_TEST(x.value==1);
+                return 1;
+            },
+            []( leaf::verbose_diagnostic_info const & info )
+            {
+                std::cout << info;
+                return 2;
+            } );
+        BOOST_TEST_EQ(r2, 1);
+    }
+
+    return boost::report_errors();
+}