aria2/test/ByteArrayDiskWriterTest.cc
Tatsuhiro Tsujikawa 506bc3db13 2007-11-27 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Rewritten to add content-type support.
	* src/DownloadHandler.{h, cc}
	* src/BtPostDownloadHandler.{h, cc}
	* test/BtPostDownloadHandlerTest.cc
	* src/MetalinkPostDownloadHandler.{h, cc}
	* test/MetalinkPostDownloadHandlerTest.cc
	* src/PostDownloadHandler.{h, cc}
	* src/DownloadHandlerConstants.{h, cc}
	* src/RequestGroup.cc
	* src/HttpResponseCommand.cc
	* src/FtpNegotiationCommand.cc
	* src/SingleFileDownloadContext.{h, cc}
	* src/RequestGroup.h
	* src/RequestGroupCriteria.h
	* src/ContentTypeRequestGroupCriteria.h

	Added 'mem' option value for --follow-metalink, 
--follow-torrent.
	If it is give, metalink/torrent file is not written to the disk, 
but
	just is kept in memory. Parsing is occurred on memory.
	* src/MetalinkHelper.{h, cc}
	* src/MetalinkProcessor.h
	* src/Xml2MetalinkProcessor.{h, cc}
	* test/Xml2MetalinkProcessorTest.cc
	* src/DownloadHandlerFactory.{h, cc}
	* test/DownloadHandlerFactoryTest.cc
	* src/PreDownloadHandler.{h, cc}
	* src/OptionHandlerFactory.cc
	* src/DefaultBtContext.{h, cc}
	* test/DefaultBtContextTest.cc
	* src/version_usage.cc
	* src/Metalink2RequestGroup.{h, cc}
	* src/RequestGroup.{h, cc}
	* src/a2functional.h
	* test/a2functionalTest.cc
	* src/MemoryBufferPreDownloadHandler.{h, cc}
	* src/OptionHandlerImpl.h
	* src/prefs.h
	* src/Util.{h, cc}
	* test/UtilTest.cc
	
	Keep DownloadResult rather than RequestGroup after downloads to 
reduce
	memory usage.
	* src/RequestGroupMan.{h, cc}
	* src/DownloadEngine.cc
	* src/BtDependency.{h, cc}: Changed the type of dependee from
	WeakHandle to SharedHandle because WeakHandle could be null.
	* src/RequestGroup.{h, cc}
	* src/DownloadEngineFactory.cc
	* src/DownloadResult.h
	
	Set totalLength after download finished
	* src/UnknownLengthPieceStorage.{h, cc}

	Keep torrent file specified in metalink in memory.
	* src/Metalink2RequestGroup.cc
	* src/BtDependency.cc
	* src/TrueRequestGroupCriteria.h

	Fixed the bug: seekg is used where seekp should be used.
	* src/ByteArrayDiskWriter.cc
	* test/ByteArraydiskWriterTest.cc
2007-11-27 12:27:10 +00:00

61 lines
1.6 KiB
C++

#include "ByteArrayDiskWriter.h"
#include <string>
#include <cppunit/extensions/HelperMacros.h>
using namespace std;
class ByteArrayDiskWriterTest:public CppUnit::TestFixture {
CPPUNIT_TEST_SUITE(ByteArrayDiskWriterTest);
CPPUNIT_TEST(testWriteAndRead);
CPPUNIT_TEST(testWriteAndRead2);
CPPUNIT_TEST_SUITE_END();
private:
public:
void setUp() {
}
void testWriteAndRead();
void testWriteAndRead2();
};
CPPUNIT_TEST_SUITE_REGISTRATION( ByteArrayDiskWriterTest );
void ByteArrayDiskWriterTest::testWriteAndRead() {
ByteArrayDiskWriter bw;
string msg1 = "Hello";
bw.writeData((const unsigned char*)msg1.c_str(), msg1.size(), 0);
// write at the end of stream
string msg2 = " World";
bw.writeData((const unsigned char*)msg2.c_str(), msg2.size(), 5);
// write at the end of stream +1
string msg3 = "!!";
bw.writeData((const unsigned char*)msg3.c_str(), msg3.size(), 12);
// write space at the 'hole'
string msg4 = " ";
bw.writeData((const unsigned char*)msg4.c_str(), msg4.size(), 11);
char buf[100];
int32_t c = bw.readData((unsigned char*)buf, sizeof(buf), 1);
buf[c] = '\0';
CPPUNIT_ASSERT_EQUAL(string("ello World !!"), string(buf));
}
void ByteArrayDiskWriterTest::testWriteAndRead2() {
ByteArrayDiskWriter bw;
string msg1 = "Hello World";
bw.writeData((const unsigned char*)msg1.c_str(), msg1.size(), 0);
string msg2 = "From Mars";
bw.writeData((const unsigned char*)msg2.c_str(), msg2.size(), 6);
char buf[100];
int32_t c = bw.readData((unsigned char*)buf, sizeof(buf), 0);
buf[c] = '\0';
CPPUNIT_ASSERT_EQUAL(string("Hello From Mars"), string(buf));
}