// // Copyright (c) 2013-2017 Vinnie Falco (vinnie dot falco at gmail dot com) // // 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) // // Test that header file is self-contained. #include #include #include namespace beast { namespace http { class serializer_test : public beast::unit_test::suite { public: struct const_body { struct value_type{}; struct reader { using const_buffers_type = boost::asio::const_buffers_1; template reader(message const&); void init(error_code& ec); boost::optional> get(error_code&); }; }; struct mutable_body { struct value_type{}; struct reader { using const_buffers_type = boost::asio::const_buffers_1; template reader(message&); void init(error_code& ec); boost::optional> get(error_code&); }; }; BOOST_STATIC_ASSERT(std::is_const< serializer< true, const_body>::value_type>::value); BOOST_STATIC_ASSERT(! std::is_const::value_type>::value); BOOST_STATIC_ASSERT(std::is_constructible< serializer, message &>::value); BOOST_STATIC_ASSERT(std::is_constructible< serializer, message const&>::value); BOOST_STATIC_ASSERT(std::is_constructible< serializer, message &>::value); BOOST_STATIC_ASSERT(! std::is_constructible< serializer, message const&>::value); struct lambda { std::size_t size; template void operator()(error_code&, ConstBufferSequence const& buffers) { size = boost::asio::buffer_size(buffers); } }; void testWriteLimit() { auto const limit = 30; lambda visit; error_code ec; response res; res.body.append(1000, '*'); serializer sr{res}; sr.limit(limit); for(;;) { sr.next(ec, visit); BEAST_EXPECT(visit.size <= limit); sr.consume(visit.size); if(sr.is_done()) break; } } void run() override { testWriteLimit(); } }; BEAST_DEFINE_TESTSUITE(serializer,http,beast); } // http } // beast