2009-05-15 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>

Added tests for addTorrent and addMetalink command.
	* test/TestUtil.cc
	* test/TestUtil.h
	* test/XmlRpcMethodTest.cc
pull/1/head
Tatsuhiro Tsujikawa 2009-05-15 05:20:11 +00:00
parent 59c1a80888
commit 672b70f6c9
4 changed files with 104 additions and 4 deletions

View File

@ -1,3 +1,10 @@
2009-05-15 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Added tests for addTorrent and addMetalink command.
* test/TestUtil.cc
* test/TestUtil.h
* test/XmlRpcMethodTest.cc
2009-05-15 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Corrected the description of --file-allocation option.

View File

@ -1,13 +1,17 @@
#include "TestUtil.h"
#include "a2io.h"
#include "File.h"
#include "StringFormat.h"
#include "FatalException.h"
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <cerrno>
#include <cstring>
#include <sstream>
#include <fstream>
#include "a2io.h"
#include "File.h"
#include "StringFormat.h"
#include "FatalException.h"
namespace aria2 {
@ -26,4 +30,19 @@ void createFile(const std::string& path, size_t length)
close(fd);
}
std::string readFile(const std::string& path)
{
std::stringstream ss;
std::ifstream in(path.c_str(), std::ios::binary);
char buf[4096];
while(1) {
in.read(buf, sizeof(buf));
ss.write(buf, in.gcount());
if(in.gcount() != sizeof(buf)) {
break;
}
}
return ss.str();
}
};

View File

@ -5,4 +5,6 @@ namespace aria2 {
void createFile(const std::string& filename, size_t length);
std::string readFile(const std::string& path);
} // namespace aria2

View File

@ -15,6 +15,7 @@
#include "XmlRpcRequest.h"
#include "XmlRpcResponse.h"
#include "prefs.h"
#include "TestUtil.h"
namespace aria2 {
@ -24,6 +25,8 @@ class XmlRpcMethodTest:public CppUnit::TestFixture {
CPPUNIT_TEST_SUITE(XmlRpcMethodTest);
CPPUNIT_TEST(testAddUri);
CPPUNIT_TEST(testAddTorrent);
CPPUNIT_TEST(testAddMetalink);
CPPUNIT_TEST(testChangeOption);
CPPUNIT_TEST(testChangeGlobalOption);
CPPUNIT_TEST(testNoSuchMethod);
@ -36,6 +39,7 @@ public:
{
RequestGroup::resetGIDCounter();
_option.reset(new Option());
_option->put(PREF_DIR, "/tmp");
_e.reset(new DownloadEngine(SharedHandle<EventPoll>(new SelectEventPoll())));
_e->option = _option.get();
_e->_requestGroupMan.reset
@ -46,6 +50,8 @@ public:
void tearDown() {}
void testAddUri();
void testAddTorrent();
void testAddMetalink();
void testChangeOption();
void testChangeGlobalOption();
void testNoSuchMethod();
@ -69,6 +75,72 @@ void XmlRpcMethodTest::testAddUri()
rgs.front()->getRemainingUris().front());
}
void XmlRpcMethodTest::testAddTorrent()
{
AddTorrentXmlRpcMethod m;
XmlRpcRequest req("aria2.addTorrent", BDE::list());
req._params << BDE(readFile("single.torrent"));
BDE uris = BDE::list();
uris << BDE("http://localhost/aria2-0.8.2.tar.bz2");
req._params << uris;
{
XmlRpcResponse res = m.execute(req, _e.get());
CPPUNIT_ASSERT_EQUAL(0, res._code);
CPPUNIT_ASSERT_EQUAL(std::string("1"), res._param.s());
SharedHandle<RequestGroup> group = _e->_requestGroupMan->findReservedGroup(1);
CPPUNIT_ASSERT(!group.isNull());
CPPUNIT_ASSERT_EQUAL(std::string("/tmp/aria2-0.8.2.tar.bz2"),
group->getFilePath());
CPPUNIT_ASSERT_EQUAL((size_t)1, group->getRemainingUris().size());
CPPUNIT_ASSERT_EQUAL(std::string("http://localhost/aria2-0.8.2.tar.bz2"),
group->getRemainingUris()[0]);
}
// with options
BDE opt = BDE::dict();
opt[PREF_DIR] = BDE("/sink");
req._params << opt;
{
XmlRpcResponse res = m.execute(req, _e.get());
CPPUNIT_ASSERT_EQUAL(0, res._code);
CPPUNIT_ASSERT_EQUAL(std::string("/sink/aria2-0.8.2.tar.bz2"),
_e->_requestGroupMan->findReservedGroup(2)->getFilePath());
}
}
void XmlRpcMethodTest::testAddMetalink()
{
AddMetalinkXmlRpcMethod m;
XmlRpcRequest req("aria2.addMetalink", BDE::list());
req._params << BDE(readFile("2files.metalink"));
{
XmlRpcResponse res = m.execute(req, _e.get());
CPPUNIT_ASSERT_EQUAL(0, res._code);
CPPUNIT_ASSERT_EQUAL((size_t)2, res._param.size());
CPPUNIT_ASSERT_EQUAL(std::string("1"), res._param[0].s());
CPPUNIT_ASSERT_EQUAL(std::string("2"), res._param[1].s());
SharedHandle<RequestGroup> tar = _e->_requestGroupMan->findReservedGroup(1);
CPPUNIT_ASSERT(!tar.isNull());
CPPUNIT_ASSERT_EQUAL(std::string("/tmp/aria2-5.0.0.tar.bz2"),
tar->getFilePath());
SharedHandle<RequestGroup> deb = _e->_requestGroupMan->findReservedGroup(2);
CPPUNIT_ASSERT(!deb.isNull());
CPPUNIT_ASSERT_EQUAL(std::string("/tmp/aria2-5.0.0.deb"),
deb->getFilePath());
}
// with options
BDE opt = BDE::dict();
opt[PREF_DIR] = BDE("/sink");
req._params << opt;
{
XmlRpcResponse res = m.execute(req, _e.get());
CPPUNIT_ASSERT_EQUAL(0, res._code);
CPPUNIT_ASSERT_EQUAL(std::string("/sink/aria2-5.0.0.tar.bz2"),
_e->_requestGroupMan->findReservedGroup(3)->getFilePath());
}
}
void XmlRpcMethodTest::testChangeOption()
{
SharedHandle<RequestGroup> group