|
@@ -34,6 +34,7 @@ class MetalinkProcessorTest:public CppUnit::TestFixture {
|
|
|
CPPUNIT_TEST(testBadPieceLength);
|
|
|
CPPUNIT_TEST(testUnsupportedType_piece);
|
|
|
#endif // ENABLE_MESSAGE_DIGEST
|
|
|
+ CPPUNIT_TEST(testLargeFileSize);
|
|
|
CPPUNIT_TEST_SUITE_END();
|
|
|
private:
|
|
|
|
|
@@ -54,6 +55,7 @@ public:
|
|
|
void testBadPieceLength();
|
|
|
void testUnsupportedType_piece();
|
|
|
#endif // ENABLE_MESSAGE_DIGEST
|
|
|
+ void testLargeFileSize();
|
|
|
};
|
|
|
|
|
|
|
|
@@ -519,4 +521,31 @@ void MetalinkProcessorTest::testUnsupportedType_piece()
|
|
|
}
|
|
|
#endif // ENABLE_MESSAGE_DIGEST
|
|
|
|
|
|
+void MetalinkProcessorTest::testLargeFileSize()
|
|
|
+{
|
|
|
+ SharedHandle<MetalinkProcessor> proc = MetalinkProcessorFactory::newInstance();
|
|
|
+ SharedHandle<ByteArrayDiskWriter> dw = new ByteArrayDiskWriter();
|
|
|
+ dw->setString("<metalink>"
|
|
|
+ "<files>"
|
|
|
+ "<file name=\"dvd.iso\">"
|
|
|
+ " <size>9223372036854775807</size>"
|
|
|
+ " <resources>"
|
|
|
+ " <url type=\"http\">ftp://mirror/</url>"
|
|
|
+ " </resources>"
|
|
|
+ "</file>"
|
|
|
+ "</files>"
|
|
|
+ "</metalink>");
|
|
|
+
|
|
|
+ try {
|
|
|
+ SharedHandle<Metalinker> m = proc->parseFromBinaryStream(dw);
|
|
|
+ SharedHandle<MetalinkEntry> e = m->entries[0];
|
|
|
+ CPPUNIT_ASSERT_EQUAL(9223372036854775807LL, e->getLength());
|
|
|
+ } catch(Exception* e) {
|
|
|
+ std::cerr << *e << std::endl;
|
|
|
+ std::string m = e->getMsg();
|
|
|
+ delete e;
|
|
|
+ CPPUNIT_FAIL(m);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
} // namespace aria2
|