| 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    {      return length;    }    virtual int32_t getWrittenLength() const    {      return writtenLength;    }    virtual void updateWrittenLength(int32_t bytes)    {      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
 |