mirror of
https://github.com/aria2/aria2.git
synced 2025-04-05 05:27:38 +03:00
Use std::unique_ptr for Metalink objects
This commit is contained in:
parent
59e63d956e
commit
41121e09f7
24 changed files with 504 additions and 597 deletions
|
@ -63,10 +63,12 @@ void MetalinkParserControllerTest::testEntryTransaction()
|
|||
ctrl.setLanguageOfEntry("ja_JP");
|
||||
ctrl.setOSOfEntry("Linux");
|
||||
ctrl.commitEntryTransaction();
|
||||
ctrl.newEntryTransaction();
|
||||
ctrl.cancelEntryTransaction();
|
||||
{
|
||||
std::shared_ptr<Metalinker> m = ctrl.getResult();
|
||||
auto m = ctrl.getResult();
|
||||
CPPUNIT_ASSERT_EQUAL((size_t)1, m->getEntries().size());
|
||||
std::shared_ptr<MetalinkEntry> e = m->getEntries().front();
|
||||
auto& e = m->getEntries()[0];
|
||||
CPPUNIT_ASSERT_EQUAL(std::string("aria2.tar.bz2"), e->file->getPath());
|
||||
CPPUNIT_ASSERT_EQUAL((int64_t)(1024*1024LL), e->file->getLength());
|
||||
CPPUNIT_ASSERT_EQUAL((int64_t)0, e->file->getOffset());
|
||||
|
@ -74,9 +76,6 @@ void MetalinkParserControllerTest::testEntryTransaction()
|
|||
CPPUNIT_ASSERT_EQUAL(std::string("ja_JP"), e->languages[0]);
|
||||
CPPUNIT_ASSERT_EQUAL(std::string("Linux"), e->oses[0]);
|
||||
}
|
||||
ctrl.newEntryTransaction();
|
||||
ctrl.cancelEntryTransaction();
|
||||
CPPUNIT_ASSERT_EQUAL((size_t)1, ctrl.getResult()->getEntries().size());
|
||||
}
|
||||
|
||||
void MetalinkParserControllerTest::testResourceTransaction()
|
||||
|
@ -90,25 +89,22 @@ void MetalinkParserControllerTest::testResourceTransaction()
|
|||
ctrl.setPriorityOfResource(100);
|
||||
ctrl.setMaxConnectionsOfResource(1);
|
||||
ctrl.commitEntryTransaction();
|
||||
{
|
||||
std::shared_ptr<Metalinker> m = ctrl.getResult();
|
||||
CPPUNIT_ASSERT_EQUAL((size_t)1, m->getEntries().front()->resources.size());
|
||||
std::shared_ptr<MetalinkResource> res = m->getEntries().front()->resources[0];
|
||||
CPPUNIT_ASSERT_EQUAL(std::string("http://mirror/aria2.tar.bz2"), res->url);
|
||||
CPPUNIT_ASSERT_EQUAL(MetalinkResource::TYPE_HTTP, res->type);
|
||||
CPPUNIT_ASSERT_EQUAL(std::string("US"), res->location);
|
||||
CPPUNIT_ASSERT_EQUAL(100, res->priority);
|
||||
CPPUNIT_ASSERT_EQUAL(1, res->maxConnections);
|
||||
}
|
||||
ctrl.newEntryTransaction();
|
||||
ctrl.newResourceTransaction();
|
||||
ctrl.cancelResourceTransaction();
|
||||
ctrl.commitEntryTransaction();
|
||||
{
|
||||
std::shared_ptr<Metalinker> m = ctrl.getResult();
|
||||
auto m = ctrl.getResult();
|
||||
CPPUNIT_ASSERT_EQUAL((size_t)2, m->getEntries().size());
|
||||
CPPUNIT_ASSERT_EQUAL((size_t)1, m->getEntries()[0]->resources.size());
|
||||
CPPUNIT_ASSERT_EQUAL((size_t)0, m->getEntries()[1]->resources.size());
|
||||
|
||||
auto& res = m->getEntries()[0]->resources[0];
|
||||
CPPUNIT_ASSERT_EQUAL(std::string("http://mirror/aria2.tar.bz2"), res->url);
|
||||
CPPUNIT_ASSERT_EQUAL(MetalinkResource::TYPE_HTTP, res->type);
|
||||
CPPUNIT_ASSERT_EQUAL(std::string("US"), res->location);
|
||||
CPPUNIT_ASSERT_EQUAL(100, res->priority);
|
||||
CPPUNIT_ASSERT_EQUAL(1, res->maxConnections);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -132,22 +128,20 @@ void MetalinkParserControllerTest::testResourceTransaction_withBaseUri()
|
|||
#endif // ENABLE_BITTORRENT
|
||||
ctrl.commitEntryTransaction();
|
||||
{
|
||||
std::shared_ptr<Metalinker> m = ctrl.getResult();
|
||||
auto m = ctrl.getResult();
|
||||
CPPUNIT_ASSERT_EQUAL((size_t)1, m->getEntries()[0]->resources.size());
|
||||
std::shared_ptr<MetalinkResource> res = m->getEntries()[0]->resources[0];
|
||||
auto& res = m->getEntries()[0]->resources[0];
|
||||
CPPUNIT_ASSERT_EQUAL(std::string("http://base/dir/aria2.tar.bz2"),
|
||||
res->url);
|
||||
CPPUNIT_ASSERT_EQUAL(MetalinkResource::TYPE_HTTP, res->type);
|
||||
|
||||
#ifdef ENABLE_BITTORRENT
|
||||
CPPUNIT_ASSERT_EQUAL((size_t)2, m->getEntries()[0]->metaurls.size());
|
||||
std::shared_ptr<MetalinkMetaurl> metaurl = m->getEntries()[0]->metaurls[0];
|
||||
CPPUNIT_ASSERT_EQUAL(std::string("http://base/meta/aria2.tar.bz2.torrent"),
|
||||
metaurl->url);
|
||||
m->getEntries()[0]->metaurls[0]->url);
|
||||
|
||||
metaurl = m->getEntries()[0]->metaurls[1];
|
||||
CPPUNIT_ASSERT_EQUAL(std::string("magnet:?xt=urn:btih:248d0a1cd08284299de78d5c1ed359bb46717d8c"),
|
||||
metaurl->url);
|
||||
m->getEntries()[0]->metaurls[1]->url);
|
||||
#endif // ENABLE_BITTORRENT
|
||||
}
|
||||
}
|
||||
|
@ -163,30 +157,26 @@ void MetalinkParserControllerTest::testMetaurlTransaction()
|
|||
ctrl.setNameOfMetaurl("mybirthdaycake");
|
||||
ctrl.commitEntryTransaction();
|
||||
#ifdef ENABLE_BITTORRENT
|
||||
ctrl.newEntryTransaction();
|
||||
ctrl.newMetaurlTransaction();
|
||||
ctrl.cancelMetaurlTransaction();
|
||||
ctrl.commitEntryTransaction();
|
||||
{
|
||||
std::shared_ptr<Metalinker> m = ctrl.getResult();
|
||||
CPPUNIT_ASSERT_EQUAL((size_t)1, m->getEntries().size());
|
||||
auto m = ctrl.getResult();
|
||||
CPPUNIT_ASSERT_EQUAL((size_t)2, m->getEntries().size());
|
||||
CPPUNIT_ASSERT_EQUAL((size_t)1, m->getEntries()[0]->metaurls.size());
|
||||
std::shared_ptr<MetalinkMetaurl> metaurl = m->getEntries()[0]->metaurls[0];
|
||||
CPPUNIT_ASSERT_EQUAL((size_t)0, m->getEntries()[1]->metaurls.size());
|
||||
|
||||
auto& metaurl = m->getEntries()[0]->metaurls[0];
|
||||
CPPUNIT_ASSERT_EQUAL(std::string("http://example.org/chocolate.torrent"),
|
||||
metaurl->url);
|
||||
CPPUNIT_ASSERT_EQUAL(std::string("torrent"), metaurl->mediatype);
|
||||
CPPUNIT_ASSERT_EQUAL(std::string("mybirthdaycake"), metaurl->name);
|
||||
CPPUNIT_ASSERT_EQUAL(999, metaurl->priority);
|
||||
}
|
||||
ctrl.newEntryTransaction();
|
||||
ctrl.newMetaurlTransaction();
|
||||
ctrl.cancelMetaurlTransaction();
|
||||
ctrl.commitEntryTransaction();
|
||||
{
|
||||
std::shared_ptr<Metalinker> m = ctrl.getResult();
|
||||
CPPUNIT_ASSERT_EQUAL((size_t)2, ctrl.getResult()->getEntries().size());
|
||||
CPPUNIT_ASSERT_EQUAL((size_t)1, m->getEntries()[0]->metaurls.size());
|
||||
CPPUNIT_ASSERT_EQUAL((size_t)0, m->getEntries()[1]->metaurls.size());
|
||||
}
|
||||
#else // !ENABLE_BITTORRENT
|
||||
{
|
||||
std::shared_ptr<Metalinker> m = ctrl.getResult();
|
||||
auto m = ctrl.getResult();
|
||||
CPPUNIT_ASSERT_EQUAL((size_t)1, m->getEntries().size());
|
||||
CPPUNIT_ASSERT_EQUAL((size_t)0, m->getEntries()[0]->metaurls.size());
|
||||
}
|
||||
|
@ -202,25 +192,28 @@ void MetalinkParserControllerTest::testChecksumTransaction()
|
|||
ctrl.setTypeOfChecksum("md5");
|
||||
ctrl.setHashOfChecksum("acbd18db4cc2f85cedef654fccc4a4d8");
|
||||
ctrl.commitEntryTransaction();
|
||||
{
|
||||
std::shared_ptr<Metalinker> m = ctrl.getResult();
|
||||
std::shared_ptr<Checksum> md = m->getEntries().front()->checksum;
|
||||
CPPUNIT_ASSERT_EQUAL(std::string("md5"), md->getHashType());
|
||||
CPPUNIT_ASSERT_EQUAL(std::string("acbd18db4cc2f85cedef654fccc4a4d8"),
|
||||
util::toHex(md->getDigest()));
|
||||
}
|
||||
|
||||
ctrl.newEntryTransaction();
|
||||
ctrl.newChecksumTransaction();
|
||||
ctrl.setTypeOfChecksum("md5");
|
||||
ctrl.setHashOfChecksum("badhash");
|
||||
ctrl.commitEntryTransaction();
|
||||
CPPUNIT_ASSERT(!ctrl.getResult()->getEntries()[1]->checksum);
|
||||
|
||||
ctrl.newEntryTransaction();
|
||||
ctrl.newChecksumTransaction();
|
||||
ctrl.cancelChecksumTransaction();
|
||||
ctrl.commitEntryTransaction();
|
||||
CPPUNIT_ASSERT(!ctrl.getResult()->getEntries()[2]->checksum);
|
||||
{
|
||||
auto m = ctrl.getResult();
|
||||
auto& md = m->getEntries()[0]->checksum;
|
||||
CPPUNIT_ASSERT_EQUAL(std::string("md5"), md->getHashType());
|
||||
CPPUNIT_ASSERT_EQUAL(std::string("acbd18db4cc2f85cedef654fccc4a4d8"),
|
||||
util::toHex(md->getDigest()));
|
||||
|
||||
CPPUNIT_ASSERT(!m->getEntries()[1]->checksum);
|
||||
|
||||
CPPUNIT_ASSERT(!m->getEntries()[2]->checksum);
|
||||
}
|
||||
}
|
||||
|
||||
void MetalinkParserControllerTest::testChunkChecksumTransaction()
|
||||
|
@ -236,9 +229,21 @@ void MetalinkParserControllerTest::testChunkChecksumTransaction()
|
|||
ctrl.addHashOfChunkChecksum(2, "2cbd18db4cc2f85cedef654fccc4a4d8");
|
||||
ctrl.addHashOfChunkChecksum(5, "5cbd18db4cc2f85cedef654fccc4a4d8");
|
||||
ctrl.commitEntryTransaction();
|
||||
|
||||
ctrl.newEntryTransaction();
|
||||
ctrl.newChunkChecksumTransaction();
|
||||
ctrl.setTypeOfChunkChecksum("md5");
|
||||
ctrl.setLengthOfChunkChecksum(256*1024);
|
||||
ctrl.addHashOfChunkChecksum(1, "badhash");
|
||||
ctrl.commitEntryTransaction();
|
||||
|
||||
ctrl.newEntryTransaction();
|
||||
ctrl.newChunkChecksumTransaction();
|
||||
ctrl.cancelChunkChecksumTransaction();
|
||||
ctrl.commitEntryTransaction();
|
||||
{
|
||||
std::shared_ptr<Metalinker> m = ctrl.getResult();
|
||||
std::shared_ptr<ChunkChecksum> md = m->getEntries().front()->chunkChecksum;
|
||||
auto m = ctrl.getResult();
|
||||
auto& md = m->getEntries()[0]->chunkChecksum;
|
||||
CPPUNIT_ASSERT_EQUAL(std::string("md5"), md->getHashType());
|
||||
CPPUNIT_ASSERT_EQUAL(256*1024, md->getPieceLength());
|
||||
CPPUNIT_ASSERT_EQUAL((size_t)5, md->countPieceHash());
|
||||
|
@ -252,20 +257,11 @@ void MetalinkParserControllerTest::testChunkChecksumTransaction()
|
|||
md->getPieceHashes()[3]);
|
||||
CPPUNIT_ASSERT_EQUAL(std::string("5cbd18db4cc2f85cedef654fccc4a4d8"),
|
||||
md->getPieceHashes()[4]);
|
||||
}
|
||||
ctrl.newEntryTransaction();
|
||||
ctrl.newChunkChecksumTransaction();
|
||||
ctrl.setTypeOfChunkChecksum("md5");
|
||||
ctrl.setLengthOfChunkChecksum(256*1024);
|
||||
ctrl.addHashOfChunkChecksum(1, "badhash");
|
||||
ctrl.commitEntryTransaction();
|
||||
CPPUNIT_ASSERT(!ctrl.getResult()->getEntries()[1]->chunkChecksum);
|
||||
|
||||
ctrl.newEntryTransaction();
|
||||
ctrl.newChunkChecksumTransaction();
|
||||
ctrl.cancelChunkChecksumTransaction();
|
||||
ctrl.commitEntryTransaction();
|
||||
CPPUNIT_ASSERT(!ctrl.getResult()->getEntries()[2]->chunkChecksum);
|
||||
CPPUNIT_ASSERT(!m->getEntries()[1]->chunkChecksum);
|
||||
|
||||
CPPUNIT_ASSERT(!m->getEntries()[2]->chunkChecksum);
|
||||
}
|
||||
}
|
||||
|
||||
void MetalinkParserControllerTest::testChunkChecksumTransactionV4()
|
||||
|
@ -280,9 +276,22 @@ void MetalinkParserControllerTest::testChunkChecksumTransactionV4()
|
|||
ctrl.addHashOfChunkChecksumV4("9413ee70957a09d55704123687478e07f18c7b29");
|
||||
ctrl.addHashOfChunkChecksumV4("44213f9f4d59b557314fadcd233232eebcac8012");
|
||||
ctrl.commitEntryTransaction();
|
||||
|
||||
ctrl.newEntryTransaction();
|
||||
ctrl.newChunkChecksumTransactionV4();
|
||||
ctrl.setTypeOfChunkChecksumV4("sha-1");
|
||||
ctrl.setLengthOfChunkChecksumV4(256*1024);
|
||||
ctrl.addHashOfChunkChecksumV4("5bd9f7248df0f3a6a86ab6c95f48787d546efa14");
|
||||
ctrl.addHashOfChunkChecksumV4("badhash");
|
||||
ctrl.commitEntryTransaction();
|
||||
|
||||
ctrl.newEntryTransaction();
|
||||
ctrl.newChunkChecksumTransactionV4();
|
||||
ctrl.cancelChunkChecksumTransactionV4();
|
||||
ctrl.commitEntryTransaction();
|
||||
{
|
||||
std::shared_ptr<Metalinker> m = ctrl.getResult();
|
||||
std::shared_ptr<ChunkChecksum> md = m->getEntries().front()->chunkChecksum;
|
||||
auto m = ctrl.getResult();
|
||||
auto& md = m->getEntries()[0]->chunkChecksum;
|
||||
CPPUNIT_ASSERT_EQUAL(std::string("sha-1"), md->getHashType());
|
||||
CPPUNIT_ASSERT_EQUAL(256*1024, md->getPieceLength());
|
||||
CPPUNIT_ASSERT_EQUAL((size_t)3, md->countPieceHash());
|
||||
|
@ -295,21 +304,11 @@ void MetalinkParserControllerTest::testChunkChecksumTransactionV4()
|
|||
CPPUNIT_ASSERT_EQUAL
|
||||
(std::string("44213f9f4d59b557314fadcd233232eebcac8012"),
|
||||
util::toHex(md->getPieceHashes()[2]));
|
||||
}
|
||||
ctrl.newEntryTransaction();
|
||||
ctrl.newChunkChecksumTransactionV4();
|
||||
ctrl.setTypeOfChunkChecksumV4("sha-1");
|
||||
ctrl.setLengthOfChunkChecksumV4(256*1024);
|
||||
ctrl.addHashOfChunkChecksumV4("5bd9f7248df0f3a6a86ab6c95f48787d546efa14");
|
||||
ctrl.addHashOfChunkChecksumV4("badhash");
|
||||
ctrl.commitEntryTransaction();
|
||||
CPPUNIT_ASSERT(!ctrl.getResult()->getEntries()[1]->chunkChecksum);
|
||||
|
||||
ctrl.newEntryTransaction();
|
||||
ctrl.newChunkChecksumTransactionV4();
|
||||
ctrl.cancelChunkChecksumTransactionV4();
|
||||
ctrl.commitEntryTransaction();
|
||||
CPPUNIT_ASSERT(!ctrl.getResult()->getEntries()[2]->chunkChecksum);
|
||||
CPPUNIT_ASSERT(!m->getEntries()[1]->chunkChecksum);
|
||||
|
||||
CPPUNIT_ASSERT(!m->getEntries()[2]->chunkChecksum);
|
||||
}
|
||||
}
|
||||
#endif // ENABLE_MESSAGE_DIGEST
|
||||
|
||||
|
@ -334,19 +333,20 @@ void MetalinkParserControllerTest::testSignatureTransaction()
|
|||
// commitEntryTransaction also commits signature transaction.
|
||||
ctrl.commitEntryTransaction();
|
||||
|
||||
std::shared_ptr<Metalinker> m = ctrl.getResult();
|
||||
CPPUNIT_ASSERT_EQUAL((size_t)1, m->getEntries().size());
|
||||
std::shared_ptr<Signature> sig = m->getEntries().front()->getSignature();
|
||||
CPPUNIT_ASSERT_EQUAL(std::string("pgp"), sig->getType());
|
||||
CPPUNIT_ASSERT_EQUAL(std::string("aria2.sig"), sig->getFile());
|
||||
CPPUNIT_ASSERT_EQUAL(pgpSignature, sig->getBody());
|
||||
|
||||
// See when signature transaction is canceled:
|
||||
ctrl.newEntryTransaction();
|
||||
ctrl.newSignatureTransaction();
|
||||
ctrl.cancelSignatureTransaction();
|
||||
ctrl.commitEntryTransaction();
|
||||
CPPUNIT_ASSERT(!ctrl.getResult()->getEntries()[1]->getSignature());
|
||||
|
||||
auto m = ctrl.getResult();
|
||||
CPPUNIT_ASSERT_EQUAL((size_t)2, m->getEntries().size());
|
||||
auto& sig = m->getEntries()[0]->getSignature();
|
||||
CPPUNIT_ASSERT_EQUAL(std::string("pgp"), sig->getType());
|
||||
CPPUNIT_ASSERT_EQUAL(std::string("aria2.sig"), sig->getFile());
|
||||
CPPUNIT_ASSERT_EQUAL(pgpSignature, sig->getBody());
|
||||
|
||||
CPPUNIT_ASSERT(!m->getEntries()[1]->getSignature());
|
||||
}
|
||||
|
||||
} // namespace aria2
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue