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];
- int 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];
- int 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(0, len);
- CPPUNIT_ASSERT(enc->finished());
- }
|