mirror of https://github.com/aria2/aria2
Add aria2api unit tests
parent
a8ef703b89
commit
4e8742597a
|
@ -0,0 +1,129 @@
|
|||
#include "aria2api.h"
|
||||
|
||||
#include <cppunit/extensions/HelperMacros.h>
|
||||
|
||||
namespace aria2 {
|
||||
|
||||
class Aria2ApiTest:public CppUnit::TestFixture {
|
||||
|
||||
CPPUNIT_TEST_SUITE(Aria2ApiTest);
|
||||
CPPUNIT_TEST(testAddUri);
|
||||
CPPUNIT_TEST(testAddMetalink);
|
||||
CPPUNIT_TEST(testRemovePause);
|
||||
CPPUNIT_TEST(testChangePosition);
|
||||
CPPUNIT_TEST_SUITE_END();
|
||||
|
||||
Session* session_;
|
||||
public:
|
||||
void setUp()
|
||||
{
|
||||
SessionConfig config;
|
||||
KeyVals options;
|
||||
session_ = sessionNew(options, config);
|
||||
}
|
||||
|
||||
void tearDown()
|
||||
{
|
||||
sessionFinal(session_);
|
||||
}
|
||||
|
||||
void testAddUri();
|
||||
void testAddMetalink();
|
||||
void testRemovePause();
|
||||
void testChangePosition();
|
||||
};
|
||||
|
||||
CPPUNIT_TEST_SUITE_REGISTRATION(Aria2ApiTest);
|
||||
|
||||
void Aria2ApiTest::testAddUri()
|
||||
{
|
||||
A2Gid gid;
|
||||
std::vector<std::string> uris(1);
|
||||
KeyVals options;
|
||||
uris[0] = "http://localhost/1";
|
||||
CPPUNIT_ASSERT_EQUAL(0, addUri(session_, &gid, uris, options));
|
||||
CPPUNIT_ASSERT(!isNull(gid));
|
||||
|
||||
DownloadHandle* hd = getDownloadHandle(session_, gid);
|
||||
CPPUNIT_ASSERT(hd);
|
||||
CPPUNIT_ASSERT_EQUAL(1, hd->getNumFiles());
|
||||
FileData file = hd->getFile(1);
|
||||
CPPUNIT_ASSERT_EQUAL((size_t)1, file.uris.size());
|
||||
CPPUNIT_ASSERT_EQUAL(uris[0], file.uris[0].uri);
|
||||
deleteDownloadHandle(hd);
|
||||
|
||||
options.push_back(KeyVals::value_type("file-allocation", "foo"));
|
||||
CPPUNIT_ASSERT_EQUAL(-1, addUri(session_, &gid, uris, options));
|
||||
}
|
||||
|
||||
void Aria2ApiTest::testAddMetalink()
|
||||
{
|
||||
std::string metalinkPath = A2_TEST_DIR"/metalink4.xml";
|
||||
std::vector<A2Gid> gids;
|
||||
KeyVals options;
|
||||
CPPUNIT_ASSERT_EQUAL(0, addMetalink(session_, &gids, metalinkPath, options));
|
||||
CPPUNIT_ASSERT_EQUAL((size_t)2, gids.size());
|
||||
|
||||
gids.clear();
|
||||
options.push_back(KeyVals::value_type("file-allocation", "foo"));
|
||||
CPPUNIT_ASSERT_EQUAL(-1, addMetalink(session_, &gids, metalinkPath,
|
||||
options));
|
||||
}
|
||||
|
||||
void Aria2ApiTest::testRemovePause()
|
||||
{
|
||||
A2Gid gid;
|
||||
std::vector<std::string> uris(1);
|
||||
KeyVals options;
|
||||
uris[0] = "http://localhost/1";
|
||||
CPPUNIT_ASSERT_EQUAL(0, addUri(session_, &gid, uris, options));
|
||||
|
||||
DownloadHandle* hd = getDownloadHandle(session_, gid);
|
||||
CPPUNIT_ASSERT(hd);
|
||||
CPPUNIT_ASSERT_EQUAL(DOWNLOAD_WAITING, hd->getStatus());
|
||||
deleteDownloadHandle(hd);
|
||||
|
||||
CPPUNIT_ASSERT_EQUAL(-1, pauseDownload(session_, (A2Gid)0));
|
||||
CPPUNIT_ASSERT_EQUAL(0, pauseDownload(session_, gid));
|
||||
hd = getDownloadHandle(session_, gid);
|
||||
CPPUNIT_ASSERT(hd);
|
||||
CPPUNIT_ASSERT_EQUAL(DOWNLOAD_PAUSED, hd->getStatus());
|
||||
deleteDownloadHandle(hd);
|
||||
|
||||
CPPUNIT_ASSERT_EQUAL(-1, unpauseDownload(session_, (A2Gid)0));
|
||||
CPPUNIT_ASSERT_EQUAL(0, unpauseDownload(session_, gid));
|
||||
hd = getDownloadHandle(session_, gid);
|
||||
CPPUNIT_ASSERT(hd);
|
||||
CPPUNIT_ASSERT_EQUAL(DOWNLOAD_WAITING, hd->getStatus());
|
||||
deleteDownloadHandle(hd);
|
||||
|
||||
CPPUNIT_ASSERT_EQUAL(-1, removeDownload(session_, (A2Gid)0));
|
||||
CPPUNIT_ASSERT_EQUAL(0, removeDownload(session_, gid));
|
||||
hd = getDownloadHandle(session_, gid);
|
||||
CPPUNIT_ASSERT(!hd);
|
||||
}
|
||||
|
||||
void Aria2ApiTest::testChangePosition()
|
||||
{
|
||||
int N = 10;
|
||||
std::vector<A2Gid> gids(N);
|
||||
std::vector<std::string> uris(1);
|
||||
KeyVals options;
|
||||
uris[0] = "http://localhost/";
|
||||
for(int i = 0; i < N; ++i) {
|
||||
CPPUNIT_ASSERT_EQUAL(0, addUri(session_, &gids[i], uris, options));
|
||||
}
|
||||
CPPUNIT_ASSERT_EQUAL(-1, changePosition(session_, (A2Gid)0, -2,
|
||||
OFFSET_MODE_CUR));
|
||||
CPPUNIT_ASSERT_EQUAL(2, changePosition(session_, gids[4], -2,
|
||||
OFFSET_MODE_CUR));
|
||||
|
||||
CPPUNIT_ASSERT_EQUAL(5, changePosition(session_, gids[4], 5,
|
||||
OFFSET_MODE_SET));
|
||||
|
||||
CPPUNIT_ASSERT_EQUAL(7, changePosition(session_, gids[4], -2,
|
||||
OFFSET_MODE_END));
|
||||
|
||||
}
|
||||
|
||||
} // namespace aria2
|
|
@ -237,6 +237,10 @@ if !HAVE_TIMEGM
|
|||
aria2c_SOURCES += TimegmTest.cc
|
||||
endif # !HAVE_TIMEGM
|
||||
|
||||
if ENABLE_LIBARIA2
|
||||
aria2c_SOURCES += Aria2ApiTest.cc
|
||||
endif # ENABLE_LIBARIA2
|
||||
|
||||
aria2c_LDADD = ../src/libaria2.la @LIBINTL@ @CPPUNIT_LIBS@
|
||||
AM_CPPFLAGS = -Wall\
|
||||
-I$(top_srcdir)/src\
|
||||
|
|
Loading…
Reference in New Issue