| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 | #include "ChunkedEncoding.h"#include <fstream>#include <iostream>#include <string>#include <cppunit/extensions/HelperMacros.h>using namespace std;class ChunkedEncodingTest:public CppUnit::TestFixture {  CPPUNIT_TEST_SUITE(ChunkedEncodingTest);  CPPUNIT_TEST(testInflate1);  CPPUNIT_TEST(testInflateLargeChunk);  CPPUNIT_TEST_SUITE_END();private:  ChunkedEncoding* enc;public:  void setUp() {    enc = new ChunkedEncoding();    enc->init();  }  void testInflate1();  void testInflateLargeChunk();};CPPUNIT_TEST_SUITE_REGISTRATION( ChunkedEncodingTest );void ChunkedEncodingTest::testInflate1() {  string msg = "a\r\n1234567890\r\n";  char buf[100];  int32_t len = sizeof(buf);  enc->inflate(buf, len, msg.c_str(), msg.size());  buf[len] = '\0';  CPPUNIT_ASSERT_EQUAL(string("1234567890"), string(buf));  // second pass  len = sizeof(buf);  msg = "3;extensionIgnored\r\n123\r\n0\r\n";  enc->inflate(buf, len, msg.c_str(), msg.size());  buf[len] = '\0';  CPPUNIT_ASSERT_EQUAL(string("123"), string(buf));  // input is over  CPPUNIT_ASSERT(enc->finished());}void ChunkedEncodingTest::testInflateLargeChunk() {  // give over 4096 character chunk  fstream is("4096chunk.txt", ios::in);  if(is.fail()) {    CPPUNIT_FAIL("cannot open file 4096chunk.txt");  }  string body;  is >> body;  char buf[4097];  int32_t len = sizeof(buf);  for(int i = 0; i < 2; i++) {    string msg = "1000\r\n"+body+"\r\n";    len = sizeof(buf);    enc->inflate(buf, len, msg.c_str(), msg.size());    buf[len] = '\0';    CPPUNIT_ASSERT_EQUAL(body, string(buf));  }  enc->inflate(buf, len, "0\r\n", 3);  CPPUNIT_ASSERT_EQUAL((int32_t)0, len);  CPPUNIT_ASSERT(enc->finished());}
 |