| 723 | |
| 724 | template<class Body> |
| 725 | void |
| 726 | testWriteStream(net::yield_context yield) |
| 727 | { |
| 728 | test::stream ts{ioc_}, tr{ioc_}; |
| 729 | ts.connect(tr); |
| 730 | ts.write_size(3); |
| 731 | |
| 732 | response<Body> m0; |
| 733 | m0.version(11); |
| 734 | m0.result(status::ok); |
| 735 | m0.reason("OK"); |
| 736 | m0.set(field::server, "test"); |
| 737 | m0.body().s = "Hello, world!\n"; |
| 738 | |
| 739 | { |
| 740 | std::string const result = |
| 741 | "HTTP/1.1 200 OK\r\n" |
| 742 | "Server: test\r\n" |
| 743 | "\r\n" |
| 744 | "Hello, world!\n"; |
| 745 | { |
| 746 | auto m = m0; |
| 747 | error_code ec; |
| 748 | do_write(ts, m, ec); |
| 749 | BEAST_EXPECT(tr.str() == result); |
| 750 | BEAST_EXPECT(equal_body<false>( |
| 751 | tr.str(), m.body().s)); |
| 752 | tr.clear(); |
| 753 | } |
| 754 | { |
| 755 | auto m = m0; |
| 756 | error_code ec; |
| 757 | do_async_write(ts, m, ec, yield); |
| 758 | BEAST_EXPECT(tr.str() == result); |
| 759 | BEAST_EXPECT(equal_body<false>( |
| 760 | tr.str(), m.body().s)); |
| 761 | tr.clear(); |
| 762 | } |
| 763 | { |
| 764 | auto m = m0; |
| 765 | response_serializer<Body, fields> sr{m}; |
| 766 | sr.split(true); |
| 767 | for(;;) |
| 768 | { |
| 769 | write_some(ts, sr); |
| 770 | if(sr.is_header_done()) |
| 771 | break; |
| 772 | } |
| 773 | BEAST_EXPECT(! m.body().read); |
| 774 | tr.clear(); |
| 775 | } |
| 776 | { |
| 777 | auto m = m0; |
| 778 | response_serializer<Body, fields> sr{m}; |
| 779 | sr.split(true); |
| 780 | for(;;) |
| 781 | { |
| 782 | async_write_some(ts, sr, yield); |
nothing calls this directly
no test coverage detected