]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/beast/test/beast/core/saved_handler.cpp
2 // Copyright (c) 2016-2019 Vinnie Falco (vinnie dot falco at gmail dot com)
4 // Distributed under the Boost Software License, Version 1.0. (See accompanying
5 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
7 // Official repository: https://github.com/boostorg/beast
10 // Test that header file is self-contained.
11 #include <boost/beast/core/saved_handler.hpp>
13 #include <boost/beast/_experimental/unit_test/suite.hpp>
19 //------------------------------------------------------------------------------
21 class saved_handler_test
: public unit_test::suite
27 bool throw_on_move_
= false;
31 handler(handler
const&) = delete;
32 handler
& operator=(handler
&&) = delete;
33 handler
& operator=(handler
const&) = delete;
37 BEAST_EXPECT(! failed_
);
40 handler(handler
&& other
)
41 : failed_(boost::exchange(
42 other
.failed_
, false))
45 throw std::bad_alloc
{};
57 bool invoked_
= false;
60 unhandler() = default;
61 unhandler(unhandler
const&) = delete;
62 unhandler
& operator=(unhandler
&&) = delete;
63 unhandler
& operator=(unhandler
const&) = delete;
67 BEAST_EXPECT(! invoked_
);
70 unhandler(unhandler
&& other
)
71 : invoked_(boost::exchange(
72 other
.invoked_
, false))
83 struct throwing_handler
85 throwing_handler() = default;
87 throwing_handler(throwing_handler
&&)
89 BOOST_THROW_EXCEPTION(std::exception
{});
103 BEAST_EXPECT(! sh
.has_value());
105 sh
.emplace(handler
{});
106 BEAST_EXPECT(sh
.has_value());
108 BEAST_EXPECT(! sh
.has_value());
110 sh
.emplace(handler
{}, std::allocator
<char>{});
111 BEAST_EXPECT(sh
.has_value());
113 BEAST_EXPECT(! sh
.has_value());
115 sh
.emplace(unhandler
{});
116 BEAST_EXPECT(sh
.has_value());
123 sh
.emplace(throwing_handler
{});
126 catch(std::exception
const&)
130 BEAST_EXPECT(! sh
.has_value());
141 BEAST_DEFINE_TESTSUITE(beast
,core
,saved_handler
);