summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2006-07-03 14:19:23 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2006-07-03 14:19:23 +0000
commit78eff232546a5fa6f48c151dc2343915ed94fa8c (patch)
tree6d30c01c1586f0513ab152de48473dad2746fe5d /test
parent003a47435758a976a57c483c37859989105e204e (diff)
2006-07-03 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
To add Metalink support(http/ftp only): * src/AbstractCommand.h (tryReserved): New function. * src/AbstractCommand.cc (execute): Call tryReserved(). (tryReserved): New function. * src/Request.h (Requests): New type definition. * src/SegmentMan.h (reserved): New variable. * src/Util.h (fileChecksum): New function. (toUpper): New function. (toLower): New function. * src/Util.cc (messageDigest.h): Included. (trim): Trim \r\n\t. (fileChecksum): New function. (toUpper): New function. (toLower): New function. * src/main.cc (normalDownload): New function. (main): Added 2 command-line options: metalink-file, metalink-connection. Their usage has not been written yet. * src/MetalinkProcessor.h: New class. * src/Xml2MetalinkProcessor.h: New class. * src/Xml2MetalinkProcessor.cc: New class. * src/MetalinkEntry.h: New class. * src/MetalinkEntry.cc: New class. * src/MetalinkResource.h: New class. * src/MetalinkResource.cc: New class. To add md5 message digest checking: * src/messageDigest.h: Rewritten. * src/MultiDiskWriter.cc: Updated according to the changes in messageDigest.h. * src/ShaVisitor.cc: Updated according to the changes in messageDigest.h. * src/Util.cc: Updated according to the changes in messageDigest.h. * src/AbstractDiskWriter.cc: Updated according to the changes in messageDigest.h. To fix a bug that causes segfault when the payload length in peer message is less than 0: * src/PeerConnection.cc: (receiveMessage): Fixed the bug. * src/PeerMessageUtil.cc (checkLength): Throw an exception if length is less than or equals to 0. To add new interfaces to Base64 encoding/decoding: * src/Base64.h (part_encode): Changed the method signature. (encode): New function(overload). (decode): New function(overload). * src/Base64.cc (part_encode): Rewritten. (encode): Rewritten. (encode): New function(overload). To prevent a peer to download same piece if there is an error in checksum: * src/PieceMessage.cc (receivedAction): Call peerInteraction->abortPiece().
Diffstat (limited to 'test')
-rw-r--r--test/Base64Test.cc8
-rw-r--r--test/Makefile.am9
-rw-r--r--test/Makefile.in19
-rw-r--r--test/UtilTest.cc34
4 files changed, 63 insertions, 7 deletions
diff --git a/test/Base64Test.cc b/test/Base64Test.cc
index 9ace6f5b..e7497312 100644
--- a/test/Base64Test.cc
+++ b/test/Base64Test.cc
@@ -26,6 +26,14 @@ CPPUNIT_TEST_SUITE_REGISTRATION( Base64Test );
void Base64Test::testEncode() {
CPPUNIT_ASSERT_EQUAL(string("SGVsbG8gV29ybGQh"),
Base64::encode("Hello World!"));
+ CPPUNIT_ASSERT_EQUAL(string("SGVsbG8gV29ybGQ="),
+ Base64::encode("Hello World"));
+ CPPUNIT_ASSERT_EQUAL(string("SGVsbG8gV29ybA=="),
+ Base64::encode("Hello Worl"));
+ CPPUNIT_ASSERT_EQUAL(string("YQ=="),
+ Base64::encode("a"));
+ CPPUNIT_ASSERT_EQUAL(string(""),
+ Base64::encode(""));
}
void Base64Test::testDecode() {
diff --git a/test/Makefile.am b/test/Makefile.am
index 215c8903..e8fc2ca8 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -31,16 +31,19 @@ aria2c_SOURCES = AllTest.cc\
PieceMessageTest.cc\
RejectMessageTest.cc\
AllowedFastMessageTest.cc\
- SuggestPieceMessageTest.cc
+ SuggestPieceMessageTest.cc\
+ Xml2MetalinkProcessorTest.cc\
+ MetalinkerTest.cc\
+ MetalinkEntryTest.cc
#aria2c_CXXFLAGS = ${CPPUNIT_CFLAGS} -I../src -I../lib -Wall -D_FILE_OFFSET_BITS=64
#aria2c_LDFLAGS = ${CPPUNIT_LIBS}
aria2c_LDADD = ../src/libaria2c.a\
${CPPUNIT_LIBS} @LIBGNUTLS_LIBS@\
- @LIBGCRYPT_LIBS@ @OPENSSL_LIBS@
+ @LIBGCRYPT_LIBS@ @OPENSSL_LIBS@ @XML_LIBS@
AM_CPPFLAGS = -Wall\
${CPPUNIT_CFLAGS}\
-I ../src\
-I../lib -I../intl -I$(top_srcdir)/intl\
- @LIBGNUTLS_CFLAGS@ @LIBGCRYPT_CFLAGS@ @OPENSSL_CFLAGS@\
+ @LIBGNUTLS_CFLAGS@ @LIBGCRYPT_CFLAGS@ @OPENSSL_CFLAGS@ @XML_CPPFLAGS@\
-D_FILE_OFFSET_BITS=64 -DLOCALEDIR=\"$(localedir)\" @DEFS@
diff --git a/test/Makefile.in b/test/Makefile.in
index 2490ea5e..0c1606b2 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -71,7 +71,9 @@ am_aria2c_OBJECTS = AllTest.$(OBJEXT) RequestTest.$(OBJEXT) \
BitfieldMessageTest.$(OBJEXT) RequestMessageTest.$(OBJEXT) \
CancelMessageTest.$(OBJEXT) PieceMessageTest.$(OBJEXT) \
RejectMessageTest.$(OBJEXT) AllowedFastMessageTest.$(OBJEXT) \
- SuggestPieceMessageTest.$(OBJEXT)
+ SuggestPieceMessageTest.$(OBJEXT) \
+ Xml2MetalinkProcessorTest.$(OBJEXT) MetalinkerTest.$(OBJEXT) \
+ MetalinkEntryTest.$(OBJEXT)
aria2c_OBJECTS = $(am_aria2c_OBJECTS)
am__DEPENDENCIES_1 =
aria2c_DEPENDENCIES = ../src/libaria2c.a $(am__DEPENDENCIES_1)
@@ -168,6 +170,9 @@ USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
USE_NLS = @USE_NLS@
VERSION = @VERSION@
XGETTEXT = @XGETTEXT@
+XML2_CONFIG = @XML2_CONFIG@
+XML_CPPFLAGS = @XML_CPPFLAGS@
+XML_LIBS = @XML_LIBS@
YACC = @YACC@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
@@ -243,19 +248,22 @@ aria2c_SOURCES = AllTest.cc\
PieceMessageTest.cc\
RejectMessageTest.cc\
AllowedFastMessageTest.cc\
- SuggestPieceMessageTest.cc
+ SuggestPieceMessageTest.cc\
+ Xml2MetalinkProcessorTest.cc\
+ MetalinkerTest.cc\
+ MetalinkEntryTest.cc
#aria2c_CXXFLAGS = ${CPPUNIT_CFLAGS} -I../src -I../lib -Wall -D_FILE_OFFSET_BITS=64
#aria2c_LDFLAGS = ${CPPUNIT_LIBS}
aria2c_LDADD = ../src/libaria2c.a\
${CPPUNIT_LIBS} @LIBGNUTLS_LIBS@\
- @LIBGCRYPT_LIBS@ @OPENSSL_LIBS@
+ @LIBGCRYPT_LIBS@ @OPENSSL_LIBS@ @XML_LIBS@
AM_CPPFLAGS = -Wall\
${CPPUNIT_CFLAGS}\
-I ../src\
-I../lib -I../intl -I$(top_srcdir)/intl\
- @LIBGNUTLS_CFLAGS@ @LIBGCRYPT_CFLAGS@ @OPENSSL_CFLAGS@\
+ @LIBGNUTLS_CFLAGS@ @LIBGCRYPT_CFLAGS@ @OPENSSL_CFLAGS@ @XML_CPPFLAGS@\
-D_FILE_OFFSET_BITS=64 -DLOCALEDIR=\"$(localedir)\" @DEFS@
all: all-am
@@ -323,6 +331,8 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/InterestedMessageTest.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ListTest.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MetaFileUtilTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MetalinkEntryTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MetalinkerTest.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MultiDiskWriterTest.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NotInterestedMessageTest.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/OptionTest.Po@am__quote@
@@ -336,6 +346,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TorrentManTest.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UnchokeMessageTest.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UtilTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Xml2MetalinkProcessorTest.Po@am__quote@
.cc.o:
@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
diff --git a/test/UtilTest.cc b/test/UtilTest.cc
index 2081d0a7..150c8f68 100644
--- a/test/UtilTest.cc
+++ b/test/UtilTest.cc
@@ -17,6 +17,9 @@ class UtilTest:public CppUnit::TestFixture {
CPPUNIT_TEST(testGetContentDispositionFilename);
CPPUNIT_TEST(testComputeFastSet);
CPPUNIT_TEST(testRandomAlpha);
+ CPPUNIT_TEST(testFileChecksum);
+ CPPUNIT_TEST(testToUpper);
+ CPPUNIT_TEST(testToLower);
CPPUNIT_TEST_SUITE_END();
private:
@@ -34,6 +37,9 @@ public:
// may be moved to other helper class in the future.
void testGetContentDispositionFilename();
void testRandomAlpha();
+ void testFileChecksum();
+ void testToUpper();
+ void testToLower();
};
@@ -214,3 +220,31 @@ void UtilTest::testComputeFastSet() {
void UtilTest::testRandomAlpha() {
CPPUNIT_ASSERT_EQUAL(string("rUopvKRn"), Util::randomAlpha(8));
}
+
+void UtilTest::testFileChecksum() {
+ unsigned char buf[20];
+ string filename = "4096chunk.txt";
+ Util::fileChecksum(filename, buf, MessageDigestContext::ALGO_SHA1);
+ string sha1 = Util::toHex(buf, 20);
+ CPPUNIT_ASSERT_EQUAL(string("608cabc0f2fa18c260cafd974516865c772363d5"),
+ sha1);
+
+ Util::fileChecksum(filename, buf, MessageDigestContext::ALGO_MD5);
+ string md5 = Util::toHex(buf, 16);
+ CPPUNIT_ASSERT_EQUAL(string("82a7348c2e03731109d0cf45a7325b88"),
+ md5);
+}
+
+void UtilTest::testToUpper() {
+ string src = "608cabc0f2fa18c260cafd974516865c772363d5";
+ string upp = "608CABC0F2FA18C260CAFD974516865C772363D5";
+
+ CPPUNIT_ASSERT_EQUAL(upp, Util::toUpper(src));
+}
+
+void UtilTest::testToLower() {
+ string src = "608CABC0F2FA18C260CAFD974516865C772363D5";
+ string upp = "608cabc0f2fa18c260cafd974516865c772363d5";
+
+ CPPUNIT_ASSERT_EQUAL(upp, Util::toLower(src));
+}