]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/beast/test/beast/core/buffers_suffix.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/buffers_suffix.hpp>
13 #include "test_buffer.hpp"
15 #include <boost/beast/core/buffer_traits.hpp>
16 #include <boost/beast/core/buffers_cat.hpp>
17 #include <boost/beast/_experimental/unit_test/suite.hpp>
18 #include <boost/asio/buffer.hpp>
24 class buffers_suffix_test
: public beast::unit_test::suite
33 auto b
= buffers_triple(buf
, sizeof(buf
));
34 buffers_suffix
<decltype(b
)> bs(b
);
35 test_buffer_sequence(bs
);
40 string_view src
= "Hello, world!";
41 std::array
<net::const_buffer
, 3> b
{{
42 net::const_buffer(src
.data(), 3),
43 net::const_buffer(src
.data() + 3, 4),
44 net::const_buffer(src
.data() + 7, 6) }};
45 buffers_suffix
<decltype(b
)> bs(b
);
46 test_buffer_sequence(bs
);
53 // default construction
56 : public net::const_buffer
60 : net::const_buffer("\r\n", 2)
65 buffers_suffix
<test_buffer
> cb
;
66 BEAST_EXPECT(buffers_to_string(cb
) == "\r\n");
68 BEAST_EXPECT(buffers_to_string(cb
) == "\n");
73 buffers_suffix
<buffers_cat_view
<
75 net::const_buffer
>> cb(
77 net::const_buffer("\r", 1),
78 net::const_buffer("\n", 1));
79 BEAST_EXPECT(buffers_to_string(cb
) == "\r\n");
84 buffers_suffix
<net::mutable_buffer
> cb(
85 net::mutable_buffer
{});
86 BEAST_EXPECT(buffer_bytes(cb
) == 0);
87 buffers_suffix
<net::mutable_buffer
> cb2(
88 net::mutable_buffer
{});
89 BEAST_EXPECT(net::buffer_copy(cb2
, cb
) == 0);
93 template<class BufferSequence
>
95 buffers_suffix
<BufferSequence
>
96 consumed_buffers(BufferSequence
const& bs
, std::size_t n
)
98 buffers_suffix
<BufferSequence
> cb(bs
);
103 template<class Buffers1
, class Buffers2
>
106 eq(Buffers1
const& lhs
, Buffers2
const& rhs
)
109 buffers_to_string(lhs
) ==
110 buffers_to_string(rhs
);
117 std::string
const s
= "Hello, world";
118 BEAST_EXPECT(s
.size() == sizeof(buf
));
119 net::buffer_copy(net::buffer(buf
), net::buffer(s
));
120 BEAST_EXPECT(buffers_to_string(net::buffer(buf
)) == s
);
121 for(std::size_t i
= 1; i
< 4; ++i
) {
122 for(std::size_t j
= 1; j
< 4; ++j
) {
123 for(std::size_t x
= 1; x
< 4; ++x
) {
124 for(std::size_t y
= 1; y
< 4; ++y
) {
125 std::size_t k
= sizeof(buf
) - (i
+ j
);
126 std::size_t z
= sizeof(buf
) - (x
+ y
);
128 std::array
<net::const_buffer
, 3> bs
{{
129 net::const_buffer
{&buf
[0], i
},
130 net::const_buffer
{&buf
[i
], j
},
131 net::const_buffer
{&buf
[i
+j
], k
}}};
132 buffers_suffix
<decltype(bs
)> cb(bs
);
133 BEAST_EXPECT(buffers_to_string(cb
) == s
);
134 BEAST_EXPECT(buffer_bytes(cb
) == s
.size());
136 BEAST_EXPECT(eq(cb
, consumed_buffers(bs
, 0)));
137 BEAST_EXPECT(buffers_to_string(cb
) == s
);
138 BEAST_EXPECT(buffer_bytes(cb
) == s
.size());
140 BEAST_EXPECT(buffers_to_string(cb
) == s
.substr(x
));
141 BEAST_EXPECT(eq(cb
, consumed_buffers(bs
, x
)));
143 BEAST_EXPECT(buffers_to_string(cb
) == s
.substr(x
+y
));
144 BEAST_EXPECT(eq(cb
, consumed_buffers(bs
, x
+y
)));
146 BEAST_EXPECT(buffers_to_string(cb
) == "");
147 BEAST_EXPECT(eq(cb
, consumed_buffers(bs
, x
+y
+z
)));
149 BEAST_EXPECT(buffers_to_string(cb
) == "");
150 BEAST_EXPECT(eq(cb
, consumed_buffers(bs
, x
+y
+z
)));
158 testBufferSequence();
164 BEAST_DEFINE_TESTSUITE(beast
,core
,buffers_suffix
);