]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/beast/test/beast/core/string_param.cpp
update sources to v12.2.3
[ceph.git] / ceph / src / boost / libs / beast / test / beast / core / string_param.cpp
1 //
2 // Copyright (c) 2016-2017 Vinnie Falco (vinnie dot falco at gmail dot com)
3 //
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)
6 //
7 // Official repository: https://github.com/boostorg/beast
8 //
9
10 // Test that header file is self-contained.
11 #include <boost/beast/core/string_param.hpp>
12
13 #include <boost/beast/unit_test/suite.hpp>
14 #include <boost/beast/core/detail/type_traits.hpp>
15
16 namespace boost {
17 namespace beast {
18
19 class string_param_test : public unit_test::suite
20 {
21 public:
22 struct nop {};
23
24 void
25 check(string_param const& v, string_view s)
26 {
27 BEAST_EXPECT(static_cast<string_view>(v) == s);
28 }
29
30 class repeater
31 {
32 std::size_t n_;
33
34 public:
35 explicit
36 repeater(std::size_t n)
37 : n_(n)
38 {
39 }
40
41 friend
42 std::ostream&
43 operator<<(std::ostream& os, repeater const& v)
44 {
45 return os << std::string(v.n_, '*');
46 }
47 };
48
49 void
50 testConversion()
51 {
52 // Make sure things convert correctly
53 check(std::string("hello"), "hello");
54 check("xyz", "xyz");
55 check(1, "1");
56 check(12, "12");
57 check(123, "123");
58 check(1234, "1234");
59 check(12345, "12345");
60 check({"a", "b"}, "ab");
61 check({1, 2, 3}, "123");
62 }
63
64 void
65 testStaticOstream()
66 {
67 // exercise static_ostream for coverage
68 std::string s(500, '*');
69 check(repeater{500}, s);
70 }
71
72 void
73 run() override
74 {
75 testConversion();
76 testStaticOstream();
77 }
78 };
79
80 BEAST_DEFINE_TESTSUITE(beast,core,string_param);
81
82 } // beast
83 } // boost