12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- #include "SinkStreamFilter.h"
- #include <cstdlib>
- #include <iostream>
- #include <cppunit/extensions/HelperMacros.h>
- #include "Segment.h"
- #include "ByteArrayDiskWriter.h"
- #include "SinkStreamFilter.h"
- #include "MockSegment.h"
- namespace aria2 {
- class SinkStreamFilterTest:public CppUnit::TestFixture {
- CPPUNIT_TEST_SUITE(SinkStreamFilterTest);
- CPPUNIT_TEST(testTransform_with_length);
- CPPUNIT_TEST(testTransform_without_length);
- CPPUNIT_TEST_SUITE_END();
- class MockSegment2:public MockSegment {
- public:
- MockSegment2(int32_t length):length(length), writtenLength(0) {}
- virtual int32_t getLength() const CXX11_OVERRIDE
- {
- return length;
- }
- virtual int32_t getWrittenLength() const CXX11_OVERRIDE
- {
- return writtenLength;
- }
- virtual void updateWrittenLength(int32_t bytes) CXX11_OVERRIDE
- {
- writtenLength += bytes;
- }
- int32_t length;
- int32_t writtenLength;
- };
- std::shared_ptr<SinkStreamFilter> filter_;
- std::shared_ptr<ByteArrayDiskWriter> writer_;
- std::shared_ptr<MockSegment2> segment_;
- void clearWriter()
- {
- writer_->setString("");
- }
- public:
- void setUp()
- {
- writer_.reset(new ByteArrayDiskWriter());
- filter_.reset(new SinkStreamFilter());
- filter_->init();
- segment_.reset(new MockSegment2(16));
- }
- void testTransform_with_length();
- void testTransform_without_length();
- };
- CPPUNIT_TEST_SUITE_REGISTRATION( SinkStreamFilterTest );
- void SinkStreamFilterTest::testTransform_with_length()
- {
- // If segment_->getLength() > 0, make sure that at most
- // segment_->getLength()-segment_->getWrittenLength() bytes are
- // written.
- std::string msg("01234567890123456");
- ssize_t r = filter_->transform
- (writer_, segment_,
- reinterpret_cast<const unsigned char*>(msg.c_str()), msg.size());
- CPPUNIT_ASSERT_EQUAL((ssize_t)16, r);
- }
- void SinkStreamFilterTest::testTransform_without_length()
- {
- // If segment_->getLength() == 0, all incoming bytes are written.
- segment_->length = 0;
- std::string msg("01234567890123456");
- ssize_t r = filter_->transform
- (writer_, segment_,
- reinterpret_cast<const unsigned char*>(msg.c_str()), msg.size());
- CPPUNIT_ASSERT_EQUAL((ssize_t)17, r);
- }
- } // namespace aria2
|