| 54 | CPPUNIT_TEST_SUITE_REGISTRATION(ChunkedDecodingStreamFilterTest); |
| 55 | |
| 56 | void ChunkedDecodingStreamFilterTest::testTransform() |
| 57 | { |
| 58 | try { |
| 59 | std::basic_string<unsigned char> msg = |
| 60 | reinterpret_cast<const unsigned char*>("a\r\n1234567890\r\n"); |
| 61 | ssize_t r = filter_->transform(writer_, segment_, msg.data(), msg.size()); |
| 62 | CPPUNIT_ASSERT_EQUAL((ssize_t)10, r); |
| 63 | CPPUNIT_ASSERT_EQUAL(std::string("1234567890"), writer_->getString()); |
| 64 | CPPUNIT_ASSERT_EQUAL((size_t)15, filter_->getBytesProcessed()); |
| 65 | } |
| 66 | catch (DlAbortEx& e) { |
| 67 | CPPUNIT_FAIL(e.stackTrace()); |
| 68 | } |
| 69 | clearWriter(); |
| 70 | try { |
| 71 | // Feed extension; see it is ignored. |
| 72 | std::basic_string<unsigned char> msg = |
| 73 | reinterpret_cast<const unsigned char*>("3;extensionIgnored\r\n123\r\n"); |
| 74 | ssize_t r = filter_->transform(writer_, segment_, msg.data(), msg.size()); |
| 75 | CPPUNIT_ASSERT_EQUAL((ssize_t)3, r); |
| 76 | CPPUNIT_ASSERT_EQUAL(std::string("123"), writer_->getString()); |
| 77 | CPPUNIT_ASSERT_EQUAL((size_t)25, filter_->getBytesProcessed()); |
| 78 | } |
| 79 | catch (DlAbortEx& e) { |
| 80 | CPPUNIT_FAIL(e.stackTrace()); |
| 81 | } |
| 82 | |
| 83 | clearWriter(); |
| 84 | // Feed 2extensions; see it is ignored. |
| 85 | try { |
| 86 | std::basic_string<unsigned char> msg = |
| 87 | reinterpret_cast<const unsigned char*>( |
| 88 | "3;extension1;extension2;\r\n123\r\n"); |
| 89 | ssize_t r = filter_->transform(writer_, segment_, msg.data(), msg.size()); |
| 90 | CPPUNIT_ASSERT_EQUAL((ssize_t)3, r); |
| 91 | CPPUNIT_ASSERT_EQUAL(std::string("123"), writer_->getString()); |
| 92 | } |
| 93 | catch (DlAbortEx& e) { |
| 94 | CPPUNIT_FAIL(e.stackTrace()); |
| 95 | } |
| 96 | clearWriter(); |
| 97 | // Not all chunk size is available |
| 98 | try { |
| 99 | std::basic_string<unsigned char> msg = |
| 100 | reinterpret_cast<const unsigned char*>("1"); |
| 101 | ssize_t r = filter_->transform(writer_, segment_, msg.data(), msg.size()); |
| 102 | CPPUNIT_ASSERT_EQUAL((ssize_t)0, r); |
| 103 | } |
| 104 | catch (DlAbortEx& e) { |
| 105 | CPPUNIT_FAIL(e.stackTrace()); |
| 106 | } |
| 107 | clearWriter(); |
| 108 | try { |
| 109 | std::basic_string<unsigned char> msg = |
| 110 | reinterpret_cast<const unsigned char*>("0\r\n1234567890123456\r\n"); |
| 111 | ssize_t r = filter_->transform(writer_, segment_, msg.data(), msg.size()); |
| 112 | CPPUNIT_ASSERT_EQUAL((ssize_t)16, r); |
| 113 | CPPUNIT_ASSERT_EQUAL(std::string("1234567890123456"), writer_->getString()); |
nothing calls this directly
no test coverage detected