void HttpStringStreamTester::testWriteUptoFirstBodyByte(const SampleResponse &resp) { // Response header should be buffered completed, only to be written out on Flush or first byte of body. InStringStream iss(sampleGetReq.GetRequest()); OutStringStream oss; HttpStringStream hss(&iss, &oss); const std::string &response = resp.GetResponse(); ssize_t bytes = hss.Write(response.data(), resp.GetAnsHeaderSize()); assert(bytes == sampleGetResp.GetAnsHeaderSize()); assert(oss.GetOutput().empty()); bytes = hss.Write(response.data() + resp.GetAnsHeaderSize(), 1); assert(bytes == 1); assert(oss.GetOutput().compare(0, std::string::npos, response, 0, resp.GetAnsHeaderSize() + 1) == 0); }
void HttpStringStreamTester::testWriteOnlyHeader(const SampleResponse &resp) { // Response header should be buffered completed, only to be written out on Flush or first byte of body. // Thus, if only the response buffer is written, nothing should be written out to the underlying stream. InStringStream iss(sampleGetReq.GetRequest()); OutStringStream oss; HttpStringStream hss(&iss, &oss); const std::string &response = resp.GetResponse(); ssize_t bytes = hss.Write(response.data(), resp.GetAnsHeaderSize()); assert(bytes == resp.GetAnsHeaderSize()); assert(oss.GetOutput().empty()); int err = hss.Flush(); assert(!err); std::string out = oss.GetOutput(); assert(response.compare(0, out.size(), out) == 0); }
void HttpStringStreamTester::testWriteAllAtOnce(const SampleResponse &resp) { InStringStream iss(sampleGetReq.GetRequest()); OutStringStream oss; HttpStringStream hss(&iss, &oss); const std::string &response = resp.GetResponse(); ssize_t bytes = hss.Write(response.data(), response.size()); assert(bytes == response.size()); assert(oss.GetOutput() == response); }