]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/beast/test/beast/core/static_buffer.cpp
2 // Copyright (c) 2016-2017 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/static_buffer.hpp>
13 #include "buffer_test.hpp"
15 #include <boost/beast/core/ostream.hpp>
16 #include <boost/beast/core/string.hpp>
17 #include <boost/beast/unit_test/suite.hpp>
24 boost::asio::is_dynamic_buffer
<static_buffer_base
>::value
);
26 class static_buffer_test
: public beast::unit_test::suite
33 using boost::asio::buffer
;
34 using boost::asio::buffer_size
;
36 std::string
const s
= "Hello, world";
37 BEAST_EXPECT(s
.size() == sizeof(buf
));
38 for(std::size_t i
= 1; i
< 4; ++i
) {
39 for(std::size_t j
= 1; j
< 4; ++j
) {
40 for(std::size_t x
= 1; x
< 4; ++x
) {
41 for(std::size_t y
= 1; y
< 4; ++y
) {
42 for(std::size_t t
= 1; t
< 4; ++ t
) {
43 for(std::size_t u
= 1; u
< 4; ++ u
) {
44 std::size_t z
= sizeof(buf
) - (x
+ y
);
45 std::size_t v
= sizeof(buf
) - (t
+ u
);
47 std::memset(buf
, 0, sizeof(buf
));
48 static_buffer
<sizeof(buf
)> ba
;
50 auto d
= ba
.prepare(z
);
51 BEAST_EXPECT(buffer_size(d
) == z
);
54 auto d
= ba
.prepare(0);
55 BEAST_EXPECT(buffer_size(d
) == 0);
58 auto d
= ba
.prepare(y
);
59 BEAST_EXPECT(buffer_size(d
) == y
);
62 auto d
= ba
.prepare(x
);
63 BEAST_EXPECT(buffer_size(d
) == x
);
64 ba
.commit(buffer_copy(d
, buffer(s
.data(), x
)));
66 BEAST_EXPECT(ba
.size() == x
);
67 BEAST_EXPECT(buffer_size(ba
.data()) == ba
.size());
69 auto d
= ba
.prepare(x
);
70 BEAST_EXPECT(buffer_size(d
) == x
);
73 auto d
= ba
.prepare(0);
74 BEAST_EXPECT(buffer_size(d
) == 0);
77 auto d
= ba
.prepare(z
);
78 BEAST_EXPECT(buffer_size(d
) == z
);
81 auto d
= ba
.prepare(y
);
82 BEAST_EXPECT(buffer_size(d
) == y
);
83 ba
.commit(buffer_copy(d
, buffer(s
.data()+x
, y
)));
86 BEAST_EXPECT(ba
.size() == x
+ y
);
87 BEAST_EXPECT(buffer_size(ba
.data()) == ba
.size());
89 auto d
= ba
.prepare(x
);
90 BEAST_EXPECT(buffer_size(d
) == x
);
93 auto d
= ba
.prepare(y
);
94 BEAST_EXPECT(buffer_size(d
) == y
);
97 auto d
= ba
.prepare(0);
98 BEAST_EXPECT(buffer_size(d
) == 0);
101 auto d
= ba
.prepare(z
);
102 BEAST_EXPECT(buffer_size(d
) == z
);
103 ba
.commit(buffer_copy(d
, buffer(s
.data()+x
+y
, z
)));
106 BEAST_EXPECT(ba
.size() == x
+ y
+ z
);
107 BEAST_EXPECT(buffer_size(ba
.data()) == ba
.size());
108 BEAST_EXPECT(to_string(ba
.data()) == s
);
111 auto d
= ba
.prepare(0);
112 BEAST_EXPECT(buffer_size(d
) == 0);
114 BEAST_EXPECT(to_string(ba
.data()) == s
.substr(t
, std::string::npos
));
116 BEAST_EXPECT(to_string(ba
.data()) == s
.substr(t
+ u
, std::string::npos
));
118 BEAST_EXPECT(to_string(ba
.data()) == "");
121 auto d
= ba
.prepare(0);
122 BEAST_EXPECT(buffer_size(d
) == 0);
126 ba
.prepare(ba
.capacity() - ba
.size() + 1);
140 using namespace test
;
141 string_view
const s
= "Hello, world!";
143 // static_buffer_base
146 static_buffer_base b
{buf
, sizeof(buf
)};
148 BEAST_EXPECT(to_string(b
.data()) == s
);
150 BEAST_EXPECT(to_string(b
.data()) == "");
155 static_buffer
<64> b1
;
156 BEAST_EXPECT(b1
.size() == 0);
157 BEAST_EXPECT(b1
.max_size() == 64);
158 BEAST_EXPECT(b1
.capacity() == 64);
160 BEAST_EXPECT(to_string(b1
.data()) == s
);
162 static_buffer
<64> b2
{b1
};
163 BEAST_EXPECT(to_string(b2
.data()) == s
);
165 BEAST_EXPECT(to_string(b2
.data()) == s
.substr(7));
168 static_buffer
<64> b2
;
170 BEAST_EXPECT(to_string(b2
.data()) == s
);
172 BEAST_EXPECT(to_string(b2
.data()) == s
.substr(7));
179 write_buffer(b
, "12345");
181 write_buffer(b
, "67890123");
182 BEAST_EXPECT(to_string(b
.data()) == "4567890123");
186 fail("", __FILE__
, __LINE__
);
188 catch(std::length_error
const&)
197 BEAST_EXPECT(read_size(b
, 512) == 10);
200 BEAST_EXPECT(read_size(b
, 512) == 6);
202 BEAST_EXPECT(read_size(b
, 512) == 8);
205 BEAST_EXPECT(read_size(b
, 512) == 0);
211 [&](static_buffer_base
& base
)
213 BEAST_EXPECT(base
.max_size() == b
.capacity());
217 [&](static_buffer_base
const& base
)
219 BEAST_EXPECT(base
.max_size() == b
.capacity());
228 //testStaticBuffer();
232 BEAST_DEFINE_TESTSUITE(beast
,core
,static_buffer
);