diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2010-06-19 17:54:54 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2010-06-19 17:54:54 +0000 |
| commit | cb4e25e4b4a2cfa6349a25586a44c932022e6841 (patch) | |
| tree | 15c0713df0ca88784a0c95a466e3a846192f290b /test | |
| parent | 8ba97188ce42be38b5427e9bd70bb7f5ba8238f9 (diff) | |
2010-06-20 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Removed BDE and bencode
Diffstat (limited to 'test')
| -rw-r--r-- | test/BDETest.cc | 149 | ||||
| -rw-r--r-- | test/BencodeTest.cc | 202 | ||||
| -rw-r--r-- | test/DHTAnnouncePeerMessageTest.cc | 28 | ||||
| -rw-r--r-- | test/DHTAnnouncePeerReplyMessageTest.cc | 18 | ||||
| -rw-r--r-- | test/DHTFindNodeMessageTest.cc | 24 | ||||
| -rw-r--r-- | test/DHTFindNodeReplyMessageTest.cc | 20 | ||||
| -rw-r--r-- | test/DHTGetPeersMessageTest.cc | 24 | ||||
| -rw-r--r-- | test/DHTGetPeersReplyMessageTest.cc | 32 | ||||
| -rw-r--r-- | test/DHTMessageFactoryImplTest.cc | 176 | ||||
| -rw-r--r-- | test/DHTMessageTrackerTest.cc | 19 | ||||
| -rw-r--r-- | test/DHTPingMessageTest.cc | 20 | ||||
| -rw-r--r-- | test/DHTPingReplyMessageTest.cc | 18 | ||||
| -rw-r--r-- | test/Makefile.am | 8 | ||||
| -rw-r--r-- | test/Makefile.in | 33 | ||||
| -rw-r--r-- | test/MockDHTMessage.h | 5 | ||||
| -rw-r--r-- | test/MockDHTMessageFactory.h | 8 | ||||
| -rw-r--r-- | test/PeerListProcessorTest.cc | 10 | ||||
| -rw-r--r-- | test/UTMetadataDataExtensionMessageTest.cc | 1 | ||||
| -rw-r--r-- | test/XmlRpcMethodTest.cc | 595 | ||||
| -rw-r--r-- | test/XmlRpcRequestParserControllerTest.cc | 73 | ||||
| -rw-r--r-- | test/XmlRpcRequestProcessorTest.cc | 36 |
21 files changed, 616 insertions, 883 deletions
diff --git a/test/BDETest.cc b/test/BDETest.cc deleted file mode 100644 index 4c6b05b9..00000000 --- a/test/BDETest.cc +++ /dev/null @@ -1,149 +0,0 @@ -#include "BDE.h" - -#include <cstring> - -#include <cppunit/extensions/HelperMacros.h> - -#include "util.h" - -namespace aria2 { - -class BDETest:public CppUnit::TestFixture { - - CPPUNIT_TEST_SUITE(BDETest); - CPPUNIT_TEST(testString); - CPPUNIT_TEST(testInteger); - CPPUNIT_TEST(testDict); - CPPUNIT_TEST(testDictIter); - CPPUNIT_TEST(testList); - CPPUNIT_TEST(testListIter); - CPPUNIT_TEST_SUITE_END(); -private: - -public: - void testString(); - void testInteger(); - void testDict(); - void testDictIter(); - void testList(); - void testListIter(); - void testDecode(); - void testEncode(); -}; - -CPPUNIT_TEST_SUITE_REGISTRATION( BDETest ); - -void BDETest::testString() -{ - BDE s(std::string("aria2")); - CPPUNIT_ASSERT_EQUAL(std::string("aria2"), s.s()); - - unsigned char dataWithNull[] = { 0xf0, '\0', 0x0f }; - BDE sWithNull(dataWithNull, sizeof(dataWithNull)); - CPPUNIT_ASSERT(memcmp(dataWithNull, sWithNull.s().c_str(), - sizeof(dataWithNull)) == 0); - - BDE zero(""); - CPPUNIT_ASSERT_EQUAL(std::string(""), zero.s()); - - const unsigned char uc[] = { 0x08, 0x19, 0x2a, 0x3b }; - BDE data(uc, sizeof(uc)); - CPPUNIT_ASSERT_EQUAL(util::toHex(uc, sizeof(uc)), - util::toHex(data.uc(), data.s().size())); -} - -void BDETest::testInteger() -{ - BDE integer(INT64_MAX); - CPPUNIT_ASSERT_EQUAL(INT64_MAX, integer.i()); -} - -void BDETest::testDict() -{ - BDE dict = BDE::dict(); - CPPUNIT_ASSERT(dict.empty()); - - dict["ki"] = 7; - dict["ks"] = std::string("abc"); - - CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), dict.size()); - CPPUNIT_ASSERT(dict.containsKey("ki")); - CPPUNIT_ASSERT_EQUAL(static_cast<BDE::Integer>(7), dict["ki"].i()); - CPPUNIT_ASSERT(dict.containsKey("ks")); - CPPUNIT_ASSERT_EQUAL(std::string("abc"), dict["ks"].s()); - - CPPUNIT_ASSERT(dict["kn"].isNone()); // This adds kn key with default value. - CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(3), dict.size()); - CPPUNIT_ASSERT(dict.containsKey("kn")); - - const BDE& ref = dict; - ref["kn2"]; // This doesn't add kn2 key. - CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(3), ref.size()); - CPPUNIT_ASSERT(!ref.containsKey("kn2")); - - dict.removeKey("kn"); - CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), dict.size()); - CPPUNIT_ASSERT(!dict.containsKey("kn")); -} - -void BDETest::testDictIter() -{ - BDE dict = BDE::dict(); - dict["alpha2"] = std::string("alpha2"); - dict["charlie"] = std::string("charlie"); - dict["bravo"] = std::string("bravo"); - dict["alpha"] = std::string("alpha"); - - BDE::Dict::iterator i = dict.dictBegin(); - CPPUNIT_ASSERT_EQUAL(std::string("alpha"), (*i++).first); - CPPUNIT_ASSERT_EQUAL(std::string("alpha2"), (*i++).first); - CPPUNIT_ASSERT_EQUAL(std::string("bravo"), (*i++).first); - CPPUNIT_ASSERT_EQUAL(std::string("charlie"), (*i++).first); - CPPUNIT_ASSERT(dict.dictEnd() == i); - - const BDE& ref = dict; - BDE::Dict::const_iterator ci = ref.dictBegin(); - CPPUNIT_ASSERT_EQUAL(std::string("alpha"), (*ci++).first); - std::advance(ci, 3); - CPPUNIT_ASSERT(ref.dictEnd() == ci); -} - -void BDETest::testList() -{ - BDE list = BDE::list(); - CPPUNIT_ASSERT(list.empty()); - list << 7; - list << std::string("aria2"); - - CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), list.size()); - CPPUNIT_ASSERT_EQUAL(static_cast<BDE::Integer>(7), list[0].i()); - CPPUNIT_ASSERT_EQUAL(std::string("aria2"), list[1].s()); - - const BDE& ref = list; - CPPUNIT_ASSERT_EQUAL(static_cast<BDE::Integer>(7), ref[0].i()); - CPPUNIT_ASSERT_EQUAL(std::string("aria2"), ref[1].s()); -} - -void BDETest::testListIter() -{ - BDE list = BDE::list(); - list << std::string("alpha2"); - list << std::string("charlie"); - list << std::string("bravo"); - list << std::string("alpha"); - - BDE::List::iterator i = list.listBegin(); - CPPUNIT_ASSERT_EQUAL(std::string("alpha2"), (*i++).s()); - CPPUNIT_ASSERT_EQUAL(std::string("charlie"), (*i++).s()); - CPPUNIT_ASSERT_EQUAL(std::string("bravo"), (*i++).s()); - CPPUNIT_ASSERT_EQUAL(std::string("alpha"), (*i++).s()); - CPPUNIT_ASSERT(list.listEnd() == i); - - const BDE& ref = list; - BDE::List::const_iterator ci = ref.listBegin(); - CPPUNIT_ASSERT_EQUAL(std::string("alpha2"), (*ci++).s()); - std::advance(ci, 3); - CPPUNIT_ASSERT(ref.listEnd() == ci); -} - -} // namespace aria2 diff --git a/test/BencodeTest.cc b/test/BencodeTest.cc deleted file mode 100644 index 29a31b0e..00000000 --- a/test/BencodeTest.cc +++ /dev/null @@ -1,202 +0,0 @@ -#include "bencode.h" - -#include <cstdlib> - -#include <cppunit/extensions/HelperMacros.h> - -#include "RecoverableException.h" -#include "TimeA2.h" - -namespace aria2 { - -class BencodeTest:public CppUnit::TestFixture { - - CPPUNIT_TEST_SUITE(BencodeTest); - CPPUNIT_TEST(testDecode); - CPPUNIT_TEST(testDecode_overflow); - CPPUNIT_TEST(testEncode); - CPPUNIT_TEST_SUITE_END(); -private: - -public: - void testDecode(); - void testDecode_overflow(); - void testEncode(); -}; - -CPPUNIT_TEST_SUITE_REGISTRATION( BencodeTest ); - -void BencodeTest::testDecode() -{ - { - // string, integer and list in dict - BDE dict = - bencode::decode("d4:name5:aria24:sizei12345678900e5:filesl3:bin3:docee"); - CPPUNIT_ASSERT(dict.isDict()); - CPPUNIT_ASSERT_EQUAL(std::string("aria2"), dict["name"].s()); - CPPUNIT_ASSERT_EQUAL(static_cast<BDE::Integer>(12345678900LL), - dict["size"].i()); - BDE list = dict["files"]; - CPPUNIT_ASSERT(list.isList()); - CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), list.size()); - CPPUNIT_ASSERT_EQUAL(std::string("bin"), list[0].s()); - CPPUNIT_ASSERT_EQUAL(std::string("doc"), list[1].s()); - } - { - // dict in list - BDE list = bencode::decode("ld1:ki123eee"); - CPPUNIT_ASSERT(list.isList()); - CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), list.size()); - BDE dict = list[0]; - CPPUNIT_ASSERT(dict.isDict()); - CPPUNIT_ASSERT_EQUAL(static_cast<BDE::Integer>(123), - dict["k"].i()); - } - { - // empty key is allowed - BDE s = bencode::decode("d0:1:ve"); - } - { - // empty string - BDE s = bencode::decode("0:"); - CPPUNIT_ASSERT_EQUAL(std::string(""), s.s()); - } - { - // empty dict - BDE d = bencode::decode("de"); - CPPUNIT_ASSERT(d.empty()); - } - { - // empty list - BDE l = bencode::decode("le"); - CPPUNIT_ASSERT(l.empty()); - } - { - // integer, without ending 'e' - try { - bencode::decode("i3"); - CPPUNIT_FAIL("exception must be thrown."); - } catch(RecoverableException& e) { - CPPUNIT_ASSERT_EQUAL(std::string("Bencode decoding failed:" - " Delimiter 'e' not found."), - std::string(e.what())); - } - } - { - // dict, without ending 'e' - try { - bencode::decode("d"); - CPPUNIT_FAIL("exception must be thrown."); - } catch(RecoverableException& e) { - CPPUNIT_ASSERT_EQUAL(std::string("Bencode decoding failed:" - " Unexpected EOF in dict context." - " 'e' expected."), - std::string(e.what())); - } - } - { - // list, without ending 'e' - try { - bencode::decode("l"); - CPPUNIT_FAIL("exception must be thrown."); - } catch(RecoverableException& e) { - CPPUNIT_ASSERT_EQUAL(std::string("Bencode decoding failed:" - " Unexpected EOF in list context." - " 'e' expected."), - std::string(e.what())); - } - } - { - // string, less than the specified length. - try { - bencode::decode("3:ab"); - CPPUNIT_FAIL("exception must be thrown."); - } catch(RecoverableException& e) { - CPPUNIT_ASSERT_EQUAL(std::string("Bencode decoding failed:" - " Expected 3 bytes of data," - " but only 2 read."), - std::string(e.what())); - } - } - { - // string, but length is invalid - try { - bencode::decode("x:abc"); - CPPUNIT_FAIL("exception must be thrown."); - } catch(RecoverableException& e) { - CPPUNIT_ASSERT_EQUAL(std::string("Bencode decoding failed:" - " A positive integer expected" - " but none found."), - std::string(e.what())); - } - } - { - // string with minus length - try { - bencode::decode("-1:a"); - CPPUNIT_FAIL("exception must be thrown."); - } catch(RecoverableException& e) { - CPPUNIT_ASSERT_EQUAL(std::string("Bencode decoding failed:" - " A positive integer expected" - " but none found."), - std::string(e.what())); - } - } - { - // empty encoded data - CPPUNIT_ASSERT(bencode::decode("").isNone()); - } - { - // ignore trailing garbage at the end of the input. - BDE s = bencode::decode("5:aria2trail"); - CPPUNIT_ASSERT_EQUAL(std::string("aria2"), s.s()); - } - { - // Get trailing garbage position - size_t end; - BDE s = bencode::decode("5:aria2trail", end); - CPPUNIT_ASSERT_EQUAL(std::string("aria2"), s.s()); - CPPUNIT_ASSERT_EQUAL((size_t)7, end); - } -} - -void BencodeTest::testDecode_overflow() -{ - std::string s; - size_t depth = bencode::MAX_STRUCTURE_DEPTH+1; - for(size_t i = 0; i < depth; ++i) { - s += "l"; - } - for(size_t i = 0; i < depth; ++i) { - s += "e"; - } - try { - bencode::decode(s); - CPPUNIT_FAIL("exception must be thrown."); - } catch(RecoverableException& e) { - // success - } -} - -void BencodeTest::testEncode() -{ - { - BDE dict = BDE::dict(); - dict["name"] = std::string("aria2"); - dict["loc"] = 80000; - dict["files"] = BDE::list(); - dict["files"] << std::string("aria2c"); - dict["attrs"] = BDE::dict(); - dict["attrs"]["license"] = std::string("GPL"); - - CPPUNIT_ASSERT_EQUAL(std::string("d" - "5:attrsd7:license3:GPLe" - "5:filesl6:aria2ce" - "3:loci80000e" - "4:name5:aria2" - "e"), - bencode::encode(dict)); - } -} - -} // namespace aria2 diff --git a/test/DHTAnnouncePeerMessageTest.cc b/test/DHTAnnouncePeerMessageTest.cc index 81aa7336..8a25b11f 100644 --- a/test/DHTAnnouncePeerMessageTest.cc +++ b/test/DHTAnnouncePeerMessageTest.cc @@ -9,7 +9,7 @@ #include "MockDHTMessageDispatcher.h" #include "MockDHTMessage.h" #include "DHTPeerAnnounceStorage.h" -#include "bencode.h" +#include "bencode2.h" namespace aria2 { @@ -61,19 +61,19 @@ void DHTAnnouncePeerMessageTest::testGetBencodedMessage() msg.setVersion("A200"); std::string msgbody = msg.getBencodedMessage(); - BDE dict = BDE::dict(); - dict["t"] = transactionID; - dict["v"] = BDE("A200"); - dict["y"] = BDE("q"); - dict["q"] = BDE("announce_peer"); - BDE aDict = BDE::dict(); - aDict["id"] = BDE(localNode->getID(), DHT_ID_LENGTH); - aDict["info_hash"] = BDE(infoHash, DHT_ID_LENGTH); - aDict["port"] = port; - aDict["token"] = token; - dict["a"] = aDict; - - CPPUNIT_ASSERT_EQUAL(util::percentEncode(bencode::encode(dict)), + Dict dict; + dict.put("t", transactionID); + dict.put("v", "A200"); + dict.put("y", "q"); + dict.put("q", "announce_peer"); + SharedHandle<Dict> aDict = Dict::g(); + aDict->put("id", String::g(localNode->getID(), DHT_ID_LENGTH)); + aDict->put("info_hash", String::g(infoHash, DHT_ID_LENGTH)); + aDict->put("port", Integer::g(port)); + aDict->put("token", token); + dict.put("a", aDict); + + CPPUNIT_ASSERT_EQUAL(util::percentEncode(bencode2::encode(&dict)), util::percentEncode(msgbody)); } diff --git a/test/DHTAnnouncePeerReplyMessageTest.cc b/test/DHTAnnouncePeerReplyMessageTest.cc index 6ecfdd22..eb799c4f 100644 --- a/test/DHTAnnouncePeerReplyMessageTest.cc +++ b/test/DHTAnnouncePeerReplyMessageTest.cc @@ -5,7 +5,7 @@ #include "DHTNode.h" #include "Exception.h" #include "util.h" -#include "bencode.h" +#include "bencode2.h" namespace aria2 { @@ -38,15 +38,15 @@ void DHTAnnouncePeerReplyMessageTest::testGetBencodedMessage() msg.setVersion("A200"); std::string msgbody = msg.getBencodedMessage(); - BDE dict = BDE::dict(); - dict["t"] = transactionID; - dict["v"] = BDE("A200"); - dict["y"] = BDE("r"); - BDE rDict = BDE::dict(); - rDict["id"] = BDE(localNode->getID(), DHT_ID_LENGTH); - dict["r"] = rDict; + Dict dict; + dict.put("t", transactionID); + dict.put("v", "A200"); + dict.put("y", "r"); + SharedHandle<Dict> rDict = Dict::g(); + rDict->put("id", String::g(localNode->getID(), DHT_ID_LENGTH)); + dict.put("r", rDict); - CPPUNIT_ASSERT_EQUAL(bencode::encode(dict), msgbody); + CPPUNIT_ASSERT_EQUAL(bencode2::encode(&dict), msgbody); } } // namespace aria2 diff --git a/test/DHTFindNodeMessageTest.cc b/test/DHTFindNodeMessageTest.cc index 0fd9214d..9a049c2d 100644 --- a/test/DHTFindNodeMessageTest.cc +++ b/test/DHTFindNodeMessageTest.cc @@ -9,7 +9,7 @@ #include "MockDHTMessage.h" #include "MockDHTMessageDispatcher.h" #include "DHTRoutingTable.h" -#include "bencode.h" +#include "bencode2.h" namespace aria2 { @@ -62,17 +62,17 @@ void DHTFindNodeMessageTest::testGetBencodedMessage() msg.setVersion("A200"); std::string msgbody = msg.getBencodedMessage(); - BDE dict = BDE::dict(); - dict["t"] = transactionID; - dict["v"] = BDE("A200"); - dict["y"] = BDE("q"); - dict["q"] = BDE("find_node"); - BDE aDict = BDE::dict(); - aDict["id"] = BDE(localNode->getID(), DHT_ID_LENGTH); - aDict["target"] = BDE(targetNode->getID(), DHT_ID_LENGTH); - dict["a"] = aDict; - - CPPUNIT_ASSERT_EQUAL(bencode::encode(dict), msgbody); + Dict dict; + dict.put("t", transactionID); + dict.put("v", "A200"); + dict.put("y", "q"); + dict.put("q", "find_node"); + SharedHandle<Dict> aDict = Dict::g(); + aDict->put("id", String::g(localNode->getID(), DHT_ID_LENGTH)); + aDict->put("target", String::g(targetNode->getID(), DHT_ID_LENGTH)); + dict.put("a", aDict); + + CPPUNIT_ASSERT_EQUAL(bencode2::encode(&dict), msgbody); } void DHTFindNodeMessageTest::testDoReceivedAction() diff --git a/test/DHTFindNodeReplyMessageTest.cc b/test/DHTFindNodeReplyMessageTest.cc index db841aca..a0c8923e 100644 --- a/test/DHTFindNodeReplyMessageTest.cc +++ b/test/DHTFindNodeReplyMessageTest.cc @@ -7,7 +7,7 @@ #include "util.h" #include "DHTBucket.h" #include "bittorrent_helper.h" -#include "bencode.h" +#include "bencode2.h" namespace aria2 { @@ -57,16 +57,16 @@ void DHTFindNodeReplyMessageTest::testGetBencodedMessage() std::string msgbody = msg.getBencodedMessage(); - BDE dict = BDE::dict(); - dict["t"] = transactionID; - dict["v"] = BDE("A200"); - dict["y"] = BDE("r"); - BDE rDict = BDE::dict(); - rDict["id"] = BDE(localNode->getID(), DHT_ID_LENGTH); - rDict["nodes"] = compactNodeInfo; - dict["r"] = rDict; + Dict dict; + dict.put("t", transactionID); + dict.put("v", "A200"); + dict.put("y", "r"); + SharedHandle<Dict> rDict = Dict::g(); + rDict->put("id", String::g(localNode->getID(), DHT_ID_LENGTH)); + rDict->put("nodes", compactNodeInfo); + dict.put("r", rDict); - CPPUNIT_ASSERT_EQUAL(bencode::encode(dict), msgbody); + CPPUNIT_ASSERT_EQUAL(bencode2::encode(&dict), msgbody); } } // namespace aria2 diff --git a/test/DHTGetPeersMessageTest.cc b/test/DHTGetPeersMessageTest.cc index f867cc90..d5badc3f 100644 --- a/test/DHTGetPeersMessageTest.cc +++ b/test/DHTGetPeersMessageTest.cc @@ -11,7 +11,7 @@ #include "DHTTokenTracker.h" #include "DHTPeerAnnounceStorage.h" #include "DHTRoutingTable.h" -#include "bencode.h" +#include "bencode2.h" namespace aria2 { @@ -83,17 +83,17 @@ void DHTGetPeersMessageTest::testGetBencodedMessage() std::string msgbody = msg.getBencodedMessage(); - BDE dict = BDE::dict(); - dict["t"] = transactionID; - dict["v"] = BDE("A200"); - dict["y"] = BDE("q"); - dict["q"] = BDE("get_peers"); - BDE aDict = BDE::dict(); - aDict["id"] = BDE(localNode->getID(), DHT_ID_LENGTH); - aDict["info_hash"] = BDE(infoHash, DHT_ID_LENGTH); - dict["a"] = aDict; - - CPPUNIT_ASSERT_EQUAL(util::percentEncode(bencode::encode(dict)), + Dict dict; + dict.put("t", transactionID); + dict.put("v", "A200"); + dict.put("y", "q"); + dict.put("q", "get_peers"); + SharedHandle<Dict> aDict = Dict::g(); + aDict->put("id", String::g(localNode->getID(), DHT_ID_LENGTH)); + aDict->put("info_hash", String::g(infoHash, DHT_ID_LENGTH)); + dict.put("a", aDict); + + CPPUNIT_ASSERT_EQUAL(util::percentEncode(bencode2::encode(&dict)), util::percentEncode(msgbody)); } diff --git a/test/DHTGetPeersReplyMessageTest.cc b/test/DHTGetPeersReplyMessageTest.cc index c7ecef80..b85a9611 100644 --- a/test/DHTGetPeersReplyMessageTest.cc +++ b/test/DHTGetPeersReplyMessageTest.cc @@ -8,7 +8,7 @@ #include "DHTBucket.h" #include "bittorrent_helper.h" #include "Peer.h" -#include "bencode.h" +#include "bencode2.h" namespace aria2 { @@ -41,14 +41,14 @@ void DHTGetPeersReplyMessageTest::testGetBencodedMessage() DHTGetPeersReplyMessage msg(localNode, remoteNode, token, transactionID); msg.setVersion("A200"); - BDE dict = BDE::dict(); - dict["t"] = transactionID; - dict["v"] = BDE("A200"); - dict["y"] = BDE("r"); - BDE rDict = BDE::dict(); - rDict["id"] = BDE(localNode->getID(), DHT_ID_LENGTH); - rDict["token"] = token; - dict["r"] = rDict; + Dict dict; + dict.put("t", transactionID); + dict.put("v", "A200"); + dict.put("y", "r"); + SharedHandle<Dict> rDict = Dict::g(); + rDict->put("id", String::g(localNode->getID(), DHT_ID_LENGTH)); + rDict->put("token", token); + dict.put("r", rDict); { std::string compactNodeInfo; SharedHandle<DHTNode> nodes[8]; @@ -69,29 +69,29 @@ void DHTGetPeersReplyMessageTest::testGetBencodedMessage() std::string msgbody = msg.getBencodedMessage(); - rDict["nodes"] = compactNodeInfo; + rDict->put("nodes", compactNodeInfo); - CPPUNIT_ASSERT_EQUAL(util::percentEncode(bencode::encode(dict)), + CPPUNIT_ASSERT_EQUAL(util::percentEncode(bencode2::encode(&dict)), util::percentEncode(msgbody)); } - rDict.removeKey("nodes"); + rDict->removeKey("nodes"); { std::vector<SharedHandle<Peer> > peers; - BDE valuesList = BDE::list(); + SharedHandle<List> valuesList = List::g(); for(size_t i = 0; i < 4; ++i) { SharedHandle<Peer> peer(new Peer("192.168.0."+util::uitos(i+1), 6881+i)); unsigned char buffer[6]; CPPUNIT_ASSERT(bittorrent::createcompact (buffer, peer->getIPAddress(), peer->getPort())); - valuesList << BDE(buffer, sizeof(buffer)); + valuesList->append(String::g(buffer, sizeof(buffer))); peers.push_back(peer); } - rDict["values"] = valuesList; + rDict->put("values", valuesList); msg.setValues(peers); std::string msgbody = msg.getBencodedMessage(); - CPPUNIT_ASSERT_EQUAL(util::percentEncode(bencode::encode(dict)), + CPPUNIT_ASSERT_EQUAL(util::percentEncode(bencode2::encode(&dict)), util::percentEncode(msgbody)); } } diff --git a/test/DHTMessageFactoryImplTest.cc b/test/DHTMessageFactoryImplTest.cc index 081707a4..272c2d14 100644 --- a/test/DHTMessageFactoryImplTest.cc +++ b/test/DHTMessageFactoryImplTest.cc @@ -20,7 +20,7 @@ #include "DHTGetPeersReplyMessage.h" #include "DHTAnnouncePeerMessage.h" #include "DHTAnnouncePeerReplyMessage.h" -#include "bencode.h" +#include "bencode2.h" namespace aria2 { @@ -79,17 +79,17 @@ CPPUNIT_TEST_SUITE_REGISTRATION(DHTMessageFactoryImplTest); void DHTMessageFactoryImplTest::testCreatePingMessage() { - BDE dict = BDE::dict(); - dict["t"] = BDE(transactionID, DHT_TRANSACTION_ID_LENGTH); - dict["y"] = BDE("q"); - dict["q"] = BDE("ping"); - BDE aDict = BDE::dict(); - aDict["id"] = BDE(remoteNodeID, DHT_ID_LENGTH); - dict["a"] = aDict; + Dict dict; + dict.put("t", String::g(transactionID, DHT_TRANSACTION_ID_LENGTH)); + dict.put("y", "q"); + dict.put("q", "ping"); + SharedHandle<Dict> aDict = Dict::g(); + aDict->put("id", String::g(remoteNodeID, DHT_ID_LENGTH)); + dict.put("a", aDict); SharedHandle<DHTPingMessage> m (dynamic_pointer_cast<DHTPingMessage> - (factory->createQueryMessage(dict, "192.168.0.1", 6881))); + (factory->createQueryMessage(&dict, "192.168.0.1", 6881))); SharedHandle<DHTNode> remoteNode(new DHTNode(remoteNodeID)); remoteNode->setIPAddress("192.168.0.1"); remoteNode->setPort(6881); @@ -102,12 +102,12 @@ void DHTMessageFactoryImplTest::testCreatePingMessage() void DHTMessageFactoryImplTest::testCreatePingReplyMessage() { - BDE dict = BDE::dict(); - dict["t"] = BDE(transactionID, DHT_TRANSACTION_ID_LENGTH); - dict["y"] = BDE("r"); - BDE rDict = BDE::dict(); - rDict["id"] = BDE(remoteNodeID, DHT_ID_LENGTH); - dict["r"] = rDict; + Dict dict; + dict.put("t", String::g(transactionID, DHT_TRANSACTION_ID_LENGTH)); + dict.put("y", "r"); + SharedHandle<Dict> rDict = Dict::g(); + rDict->put("id", String::g(remoteNodeID, DHT_ID_LENGTH)); + dict.put("r", rDict); SharedHandle<DHTNode> remoteNode(new DHTNode(remoteNodeID)); remoteNode->setIPAddress("192.168.0.1"); @@ -115,7 +115,7 @@ void DHTMessageFactoryImplTest::testCreatePingReplyMessage() SharedHandle<DHTPingReplyMessage> m (dynamic_pointer_cast<DHTPingReplyMessage> - (factory->createResponseMessage("ping", dict, + (factory->createResponseMessage("ping", &dict, remoteNode->getIPAddress(), remoteNode->getPort()))); @@ -127,20 +127,20 @@ void DHTMessageFactoryImplTest::testCreatePingReplyMessage() void DHTMessageFactoryImplTest::testCreateFindNodeMessage() { - BDE dict = BDE::dict(); - dict["t"] = BDE(transactionID, DHT_TRANSACTION_ID_LENGTH); - dict["y"] = BDE("q"); - dict["q"] = BDE("find_node"); - BDE aDict = BDE::dict(); - aDict["id"] = BDE(remoteNodeID, DHT_ID_LENGTH); + Dict dict; + dict.put("t", String::g(transactionID, DHT_TRANSACTION_ID_LENGTH)); + dict.put("y", "q"); + dict.put("q", "find_node"); + SharedHandle<Dict> aDict = Dict::g(); + aDict->put("id", String::g(remoteNodeID, DHT_ID_LENGTH)); unsigned char targetNodeID[DHT_ID_LENGTH]; memset(targetNodeID, 0x11, DHT_ID_LENGTH); - aDict["target"] = BDE(targetNodeID, DHT_ID_LENGTH); - dict["a"] = aDict; + aDict->put("target", String::g(targetNodeID, DHT_ID_LENGTH)); + dict.put("a", aDict); SharedHandle<DHTFindNodeMessage> m (dynamic_pointer_cast<DHTFindNodeMessage> - (factory->createQueryMessage(dict, "192.168.0.1", 6881))); + (factory->createQueryMessage(&dict, "192.168.0.1", 6881))); SharedHandle<DHTNode> remoteNode(new DHTNode(remoteNodeID)); remoteNode->setIPAddress("192.168.0.1"); remoteNode->setPort(6881); @@ -156,11 +156,11 @@ void DHTMessageFactoryImplTest::testCreateFindNodeMessage() void DHTMessageFactoryImplTest::testCreateFindNodeReplyMessage() { try { - BDE dict = BDE::dict(); - dict["t"] = BDE(transactionID, DHT_TRANSACTION_ID_LENGTH); - dict["y"] = BDE("r"); - BDE rDict = BDE::dict(); - rDict["id"] = BDE(remoteNodeID, DHT_ID_LENGTH); + Dict dict; + dict.put("t", String::g(transactionID, DHT_TRANSACTION_ID_LENGTH)); + dict.put("y", "r"); + SharedHandle<Dict> rDict = Dict::g(); + rDict->put("id", String::g(remoteNodeID, DHT_ID_LENGTH)); std::string compactNodeInfo; SharedHandle<DHTNode> nodes[8]; for(size_t i = 0; i < DHTBucket::K; ++i) { @@ -175,8 +175,8 @@ void DHTMessageFactoryImplTest::testCreateFindNodeReplyMessage() std::string(&nodes[i]->getID()[0], &nodes[i]->getID()[DHT_ID_LENGTH])+ std::string(&buf[0], &buf[sizeof(buf)]); } - rDict["nodes"] = compactNodeInfo; - dict["r"] = rDict; + rDict->put("nodes", compactNodeInfo); + dict.put("r", rDict); SharedHandle<DHTNode> remoteNode(new DHTNode(remoteNodeID)); remoteNode->setIPAddress("192.168.0.1"); @@ -184,7 +184,7 @@ void DHTMessageFactoryImplTest::testCreateFindNodeReplyMessage() SharedHandle<DHTFindNodeReplyMessage> m (dynamic_pointer_cast<DHTFindNodeReplyMessage> - (factory->createResponseMessage("find_node", dict, + (factory->createResponseMessage("find_node", &dict, remoteNode->getIPAddress(), remoteNode->getPort()))); @@ -202,20 +202,20 @@ void DHTMessageFactoryImplTest::testCreateFindNodeReplyMessage() void DHTMessageFactoryImplTest::testCreateGetPeersMessage() { - BDE dict = BDE::dict(); - dict["t"] = BDE(transactionID, DHT_TRANSACTION_ID_LENGTH); - dict["y"] = BDE("q"); - dict["q"] = BDE("get_peers"); - BDE aDict = BDE::dict(); - aDict["id"] = BDE(remoteNodeID, DHT_ID_LENGTH); + Dict dict; + dict.put("t", String::g(transactionID, DHT_TRANSACTION_ID_LENGTH)); + dict.put("y", "q"); + dict.put("q", "get_peers"); + SharedHandle<Dict> aDict = Dict::g(); + aDict->put("id", String::g(remoteNodeID, DHT_ID_LENGTH)); unsigned char infoHash[DHT_ID_LENGTH]; memset(infoHash, 0x11, DHT_ID_LENGTH); - aDict["info_hash"] = BDE(infoHash, DHT_ID_LENGTH); - dict["a"] = aDict; + aDict->put("info_hash", String::g(infoHash, DHT_ID_LENGTH)); + dict.put("a", aDict); SharedHandle<DHTGetPeersMessage> m (dynamic_pointer_cast<DHTGetPeersMessage> - (factory->createQueryMessage(dict, "192.168.0.1", 6881))); + (factory->createQueryMessage(&dict, "192.168.0.1", 6881))); SharedHandle<DHTNode> remoteNode(new DHTNode(remoteNodeID)); remoteNode->setIPAddress("192.168.0.1"); remoteNode->setPort(6881); @@ -231,11 +231,11 @@ void DHTMessageFactoryImplTest::testCreateGetPeersMessage() void DHTMessageFactoryImplTest::testCreateGetPeersReplyMessage_nodes() { try { - BDE dict = BDE::dict(); - dict["t"] = BDE(transactionID, DHT_TRANSACTION_ID_LENGTH); - dict["y"] = BDE("r"); - BDE rDict = BDE::dict(); - rDict["id"] = BDE(remoteNodeID, DHT_ID_LENGTH); + Dict dict; + dict.put("t", String::g(transactionID, DHT_TRANSACTION_ID_LENGTH)); + dict.put("y", "r"); + SharedHandle<Dict> rDict = Dict::g(); + rDict->put("id", String::g(remoteNodeID, DHT_ID_LENGTH)); std::string compactNodeInfo; SharedHandle<DHTNode> nodes[8]; for(size_t i = 0; i < DHTBucket::K; ++i) { @@ -250,9 +250,9 @@ void DHTMessageFactoryImplTest::testCreateGetPeersReplyMessage_nodes() std::string(&nodes[i]->getID()[0], &nodes[i]->getID()[DHT_ID_LENGTH])+ std::string(&buf[0], &buf[sizeof(buf)]); } - rDict["nodes"] = compactNodeInfo; - rDict["token"] = BDE("token"); - dict["r"] = rDict; + rDict->put("nodes", compactNodeInfo); + rDict->put("token", "token"); + dict.put("r", rDict); SharedHandle<DHTNode> remoteNode(new DHTNode(remoteNodeID)); remoteNode->setIPAddress("192.168.0.1"); @@ -260,7 +260,7 @@ void DHTMessageFactoryImplTest::testCreateGetPeersReplyMessage_nodes() SharedHandle<DHTGetPeersReplyMessage> m (dynamic_pointer_cast<DHTGetPeersReplyMessage> - (factory->createResponseMessage("get_peers", dict, + (factory->createResponseMessage("get_peers", &dict, remoteNode->getIPAddress(), remoteNode->getPort()))); @@ -280,25 +280,25 @@ void DHTMessageFactoryImplTest::testCreateGetPeersReplyMessage_nodes() void DHTMessageFactoryImplTest::testCreateGetPeersReplyMessage_values() { try { - BDE dict = BDE::dict(); - dict["t"] = BDE(transactionID, DHT_TRANSACTION_ID_LENGTH); - dict["y"] = BDE("r"); - BDE rDict = BDE::dict(); - rDict["id"] = BDE(remoteNodeID, DHT_ID_LENGTH); + Dict dict; + dict.put("t", String::g(transactionID, DHT_TRANSACTION_ID_LENGTH)); + dict.put("y", "r"); + SharedHandle<Dict> rDict = Dict::g(); + rDict->put("id", String::g(remoteNodeID, DHT_ID_LENGTH)); std::deque<SharedHandle<Peer> > peers; - BDE valuesList = BDE::list(); + SharedHandle<List> valuesList = List::g(); for(size_t i = 0; i < 4; ++i) { SharedHandle<Peer> peer(new Peer("192.168.0."+util::uitos(i+1), 6881+i)); unsigned char buffer[6]; CPPUNIT_ASSERT(bittorrent::createcompact (buffer, peer->getIPAddress(), peer->getPort())); - valuesList << BDE(buffer, sizeof(buffer)); + valuesList->append(String::g(buffer, sizeof(buffer))); peers.push_back(peer); } - rDict["values"] = valuesList; - rDict["token"] = BDE("token"); - dict["r"] = rDict; + rDict->put("values", valuesList); + rDict->put("token", "token"); + dict.put("r", rDict); SharedHandle<DHTNode> remoteNode(new DHTNode(remoteNodeID)); remoteNode->setIPAddress("192.168.0.1"); @@ -306,7 +306,7 @@ void DHTMessageFactoryImplTest::testCreateGetPeersReplyMessage_values() SharedHandle<DHTGetPeersReplyMessage> m (dynamic_pointer_cast<DHTGetPeersReplyMessage> - (factory->createResponseMessage("get_peers", dict, + (factory->createResponseMessage("get_peers", &dict, remoteNode->getIPAddress(), remoteNode->getPort()))); @@ -326,24 +326,24 @@ void DHTMessageFactoryImplTest::testCreateGetPeersReplyMessage_values() void DHTMessageFactoryImplTest::testCreateAnnouncePeerMessage() { try { - BDE dict = BDE::dict(); - dict["t"] = BDE(transactionID, DHT_TRANSACTION_ID_LENGTH); - dict["y"] = BDE("q"); - dict["q"] = BDE("announce_peer"); - BDE aDict = BDE::dict(); - aDict["id"] = BDE(remoteNodeID, DHT_ID_LENGTH); + Dict dict; + dict.put("t", String::g(transactionID, DHT_TRANSACTION_ID_LENGTH)); + dict.put("y", "q"); + dict.put("q", "announce_peer"); + SharedHandle<Dict> aDict = Dict::g(); + aDict->put("id", String::g(remoteNodeID, DHT_ID_LENGTH)); unsigned char infoHash[DHT_ID_LENGTH]; memset(infoHash, 0x11, DHT_ID_LENGTH); - aDict["info_hash"] = BDE(infoHash, DHT_ID_LENGTH); + aDict->put("info_hash", String::g(infoHash, DHT_ID_LENGTH)); std::string token = "ffff"; uint16_t port = 6881; - aDict["port"] = port; - aDict["token"] = token; - dict["a"] = aDict; + aDict->put("port", Integer::g(port)); + aDict->put("token", token); + dict.put("a", aDict); SharedHandle<DHTAnnouncePeerMessage> m (dynamic_pointer_cast<DHTAnnouncePeerMessage> - (factory->createQueryMessage(dict, "192.168.0.1", 6882))); + (factory->createQueryMessage(&dict, "192.168.0.1", 6882))); SharedHandle<DHTNode> remoteNode(new DHTNode(remoteNodeID)); remoteNode->setIPAddress("192.168.0.1"); remoteNode->setPort(6882); @@ -363,12 +363,12 @@ void DHTMessageFactoryImplTest::testCreateAnnouncePeerMessage() void DHTMessageFactoryImplTest::testCreateAnnouncePeerReplyMessage() { - BDE dict = BDE::dict(); - dict["t"] = BDE(transactionID, DHT_TRANSACTION_ID_LENGTH); - dict["y"] = BDE("r"); - BDE rDict = BDE::dict(); - rDict["id"] = BDE(remoteNodeID, DHT_ID_LENGTH); - dict["r"] = rDict; + Dict dict; + dict.put("t", String::g(transactionID, DHT_TRANSACTION_ID_LENGTH)); + dict.put("y", "r"); + SharedHandle<Dict> rDict = Dict::g(); + rDict->put("id", String::g(remoteNodeID, DHT_ID_LENGTH)); + dict.put("r", rDict); SharedHandle<DHTNode> remoteNode(new DHTNode(remoteNodeID)); remoteNode->setIPAddress("192.168.0.1"); @@ -376,7 +376,7 @@ void DHTMessageFactoryImplTest::testCreateAnnouncePeerReplyMessage() SharedHandle<DHTAnnouncePeerReplyMessage> m (dynamic_pointer_cast<DHTAnnouncePeerReplyMessage> - (factory->createResponseMessage("announce_peer", dict, + (factory->createResponseMessage("announce_peer", &dict, remoteNode->getIPAddress(), remoteNode->getPort()))); @@ -388,20 +388,20 @@ void DHTMessageFactoryImplTest::testCreateAnnouncePeerReplyMessage() void DHTMessageFactoryImplTest::testReceivedErrorMessage() { - BDE dict = BDE::dict(); - dict["t"] = BDE(transactionID, DHT_TRANSACTION_ID_LENGTH); - dict["y"] = BDE("e"); - BDE list = BDE::list(); - list << 404; - list << BDE("Not found"); - dict["e"] = list; + Dict dict; + dict.put("t", String::g(transactionID, DHT_TRANSACTION_ID_LENGTH)); + dict.put("y", "e"); + SharedHandle<List> list = List::g(); + list->append(Integer::g(404)); + list->append("Not found"); + dict.put("e", list); SharedHandle<DHTNode> remoteNode(new DHTNode(remoteNodeID)); remoteNode->setIPAddress("192.168.0.1"); remoteNode->setPort(6881); try { - factory->createResponseMessage("announce_peer", dict, + factory->createResponseMessage("announce_peer", &dict, remoteNode->getIPAddress(), remoteNode->getPort()); CPPUNIT_FAIL("exception must be thrown."); diff --git a/test/DHTMessageTrackerTest.cc b/test/DHTMessageTrackerTest.cc index a4fed872..a2ebedb2 100644 --- a/test/DHTMessageTrackerTest.cc +++ b/test/DHTMessageTrackerTest.cc @@ -10,7 +10,6 @@ #include "DHTMessageTrackerEntry.h" #include "DHTRoutingTable.h" #include "MockDHTMessageFactory.h" -#include "bencode.h" namespace aria2 { @@ -62,11 +61,11 @@ void DHTMessageTrackerTest::testMessageArrived() tracker.addMessage(m3, DHT_MESSAGE_TIMEOUT); { - BDE resDict = BDE::dict(); - resDict["t"] = m2->getTransactionID(); + Dict resDict; + resDict.put("t", m2->getTransactionID()); std::pair<SharedHandle<DHTMessage>, SharedHandle<DHTMessageCallback> > p = - tracker.messageArrived(resDict, m2->getRemoteNode()->getIPAddress(), + tracker.messageArrived(&resDict, m2->getRemoteNode()->getIPAddress(), m2->getRemoteNode()->getPort()); SharedHandle<DHTMessage> reply = p.first; @@ -75,11 +74,11 @@ void DHTMessageTrackerTest::testMessageArrived() CPPUNIT_ASSERT_EQUAL((size_t)2, tracker.countEntry()); } { - BDE resDict = BDE::dict(); - resDict["t"] = m3->getTransactionID(); + Dict resDict; + resDict.put("t", m3->getTransactionID()); std::pair<SharedHandle<DHTMessage>, SharedHandle<DHTMessageCallback> > p = - tracker.messageArrived(resDict, m3->getRemoteNode()->getIPAddress(), + tracker.messageArrived(&resDict, m3->getRemoteNode()->getIPAddress(), m3->getRemoteNode()->getPort()); SharedHandle<DHTMessage> reply = p.first; @@ -88,11 +87,11 @@ void DHTMessageTrackerTest::testMessageArrived() CPPUNIT_ASSERT_EQUAL((size_t)1, tracker.countEntry()); } { - BDE resDict = BDE::dict(); - resDict["t"] = m1->getTransactionID(); + Dict resDict; + resDict.put("t", m1->getTransactionID()); std::pair<SharedHandle<DHTMessage>, SharedHandle<DHTMessageCallback> > p = - tracker.messageArrived(resDict, "192.168.1.100", 6889); + tracker.messageArrived(&resDict, "192.168.1.100", 6889); SharedHandle<DHTMessage> reply = p.first; CPPUNIT_ASSERT(reply.isNull()); diff --git a/test/DHTPingMessageTest.cc b/test/DHTPingMessageTest.cc index 95fa8924..b1070000 100644 --- a/test/DHTPingMessageTest.cc +++ b/test/DHTPingMessageTest.cc @@ -8,7 +8,7 @@ #include "MockDHTMessageFactory.h" #include "MockDHTMessageDispatcher.h" #include "MockDHTMessage.h" -#include "bencode.h" +#include "bencode2.h" namespace aria2 { @@ -57,16 +57,16 @@ void DHTPingMessageTest::testGetBencodedMessage() std::string msgbody = msg.getBencodedMessage(); - BDE dict = BDE::dict(); - dict["t"] = transactionID; - dict["v"] = BDE("A200"); - dict["y"] = BDE("q"); - dict["q"] = BDE("ping"); - BDE aDict = BDE::dict(); - aDict["id"] = BDE(localNode->getID(), DHT_ID_LENGTH); - dict["a"] = aDict; + Dict dict; + dict.put("t", transactionID); + dict.put("v", "A200"); + dict.put("y", "q"); + dict.put("q", "ping"); + SharedHandle<Dict> aDict = Dict::g(); + aDict->put("id", String::g(localNode->getID(), DHT_ID_LENGTH)); + dict.put("a", aDict); - CPPUNIT_ASSERT_EQUAL(bencode::encode(dict), msgbody); + CPPUNIT_ASSERT_EQUAL(bencode2::encode(&dict), msgbody); } void DHTPingMessageTest::testDoReceivedAction() diff --git a/test/DHTPingReplyMessageTest.cc b/test/DHTPingReplyMessageTest.cc index 321f43dc..064b6876 100644 --- a/test/DHTPingReplyMessageTest.cc +++ b/test/DHTPingReplyMessageTest.cc @@ -5,7 +5,7 @@ #include "DHTNode.h" #include "Exception.h" #include "util.h" -#include "bencode.h" +#include "bencode2.h" namespace aria2 { @@ -41,15 +41,15 @@ void DHTPingReplyMessageTest::testGetBencodedMessage() msg.setVersion("A200"); std::string msgbody = msg.getBencodedMessage(); - BDE dict = BDE::dict(); - dict["t"] = transactionID; - dict["v"] = BDE("A200"); - dict["y"] = BDE("r"); - BDE rDict = BDE::dict(); - rDict["id"] = BDE(id, DHT_ID_LENGTH); - dict["r"] = rDict; + Dict dict; + dict.put("t", transactionID); + dict.put("v", "A200"); + dict.put("y", "r"); + SharedHandle<Dict> rDict = Dict::g(); + rDict->put("id", String::g(id, DHT_ID_LENGTH)); + dict.put("r", rDict); - CPPUNIT_ASSERT_EQUAL(bencode::encode(dict), msgbody); + CPPUNIT_ASSERT_EQUAL(bencode2::encode(&dict), msgbody); } } // namespace aria2 diff --git a/test/Makefile.am b/test/Makefile.am index f9f26271..b916b6a2 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -70,11 +70,9 @@ aria2c_SOURCES = AllTest.cc\ LongestSequencePieceSelectorTest.cc\ a2algoTest.cc\ bitfieldTest.cc\ - BDETest.cc\ DownloadContextTest.cc\ SessionSerializerTest.cc\ - ValueBaseTest.cc\ - Bencode2Test.cc + ValueBaseTest.cc if ENABLE_XML_RPC aria2c_SOURCES += XmlRpcRequestParserControllerTest.cc\ @@ -190,13 +188,13 @@ aria2c_SOURCES += BtAllowedFastMessageTest.cc\ MockExtensionMessage.h\ MockExtensionMessageFactory.h\ MockPieceStorage.h\ - BencodeTest.cc\ BittorrentHelperTest.cc\ PriorityPieceSelectorTest.cc\ MockPieceSelector.h\ extension_message_test_helper.h\ LpdMessageDispatcherTest.cc\ - LpdMessageReceiverTest.cc + LpdMessageReceiverTest.cc\ + Bencode2Test.cc endif # ENABLE_BITTORRENT if ENABLE_METALINK diff --git a/test/Makefile.in b/test/Makefile.in index e0d510f5..8eac9720 100644 --- a/test/Makefile.in +++ b/test/Makefile.in @@ -137,13 +137,13 @@ check_PROGRAMS = $(am__EXEEXT_1) @ENABLE_BITTORRENT_TRUE@ MockExtensionMessage.h\ @ENABLE_BITTORRENT_TRUE@ MockExtensionMessageFactory.h\ @ENABLE_BITTORRENT_TRUE@ MockPieceStorage.h\ -@ENABLE_BITTORRENT_TRUE@ BencodeTest.cc\ @ENABLE_BITTORRENT_TRUE@ BittorrentHelperTest.cc\ @ENABLE_BITTORRENT_TRUE@ PriorityPieceSelectorTest.cc\ @ENABLE_BITTORRENT_TRUE@ MockPieceSelector.h\ @ENABLE_BITTORRENT_TRUE@ extension_message_test_helper.h\ @ENABLE_BITTORRENT_TRUE@ LpdMessageDispatcherTest.cc\ -@ENABLE_BITTORRENT_TRUE@ LpdMessageReceiverTest.cc +@ENABLE_BITTORRENT_TRUE@ LpdMessageReceiverTest.cc\ +@ENABLE_BITTORRENT_TRUE@ Bencode2Test.cc @ENABLE_METALINK_TRUE@am__append_7 = MetalinkerTest.cc\ @ENABLE_METALINK_TRUE@ MetalinkEntryTest.cc\ @@ -212,9 +212,8 @@ am__aria2c_SOURCES_DIST = AllTest.cc TestUtil.cc TestUtil.h \ DNSCacheTest.cc DownloadHelperTest.cc SequentialPickerTest.cc \ RarestPieceSelectorTest.cc PieceStatManTest.cc \ InOrderPieceSelector.h LongestSequencePieceSelectorTest.cc \ - a2algoTest.cc bitfieldTest.cc BDETest.cc \ - DownloadContextTest.cc SessionSerializerTest.cc \ - ValueBaseTest.cc Bencode2Test.cc \ + a2algoTest.cc bitfieldTest.cc DownloadContextTest.cc \ + SessionSerializerTest.cc ValueBaseTest.cc \ XmlRpcRequestParserControllerTest.cc \ XmlRpcRequestProcessorTest.cc XmlRpcMethodTest.cc \ FallocFileAllocationIteratorTest.cc GZipDecoderTest.cc \ @@ -268,10 +267,10 @@ am__aria2c_SOURCES_DIST = AllTest.cc TestUtil.cc TestUtil.h \ MockDHTMessageDispatcher.h MockDHTMessageFactory.h \ MockDHTTask.h MockDHTTaskFactory.h MockDHTTaskQueue.h \ MockExtensionMessage.h MockExtensionMessageFactory.h \ - MockPieceStorage.h BencodeTest.cc BittorrentHelperTest.cc \ + MockPieceStorage.h BittorrentHelperTest.cc \ PriorityPieceSelectorTest.cc MockPieceSelector.h \ extension_message_test_helper.h LpdMessageDispatcherTest.cc \ - LpdMessageReceiverTest.cc MetalinkerTest.cc \ + LpdMessageReceiverTest.cc Bencode2Test.cc MetalinkerTest.cc \ MetalinkEntryTest.cc Metalink2RequestGroupTest.cc \ MetalinkPostDownloadHandlerTest.cc MetalinkHelperTest.cc \ MetalinkParserControllerTest.cc MetalinkProcessorTest.cc @@ -359,11 +358,11 @@ am__aria2c_SOURCES_DIST = AllTest.cc TestUtil.cc TestUtil.h \ @ENABLE_BITTORRENT_TRUE@ DHKeyExchangeTest.$(OBJEXT) \ @ENABLE_BITTORRENT_TRUE@ ARC4Test.$(OBJEXT) \ @ENABLE_BITTORRENT_TRUE@ MSEHandshakeTest.$(OBJEXT) \ -@ENABLE_BITTORRENT_TRUE@ BencodeTest.$(OBJEXT) \ @ENABLE_BITTORRENT_TRUE@ BittorrentHelperTest.$(OBJEXT) \ @ENABLE_BITTORRENT_TRUE@ PriorityPieceSelectorTest.$(OBJEXT) \ @ENABLE_BITTORRENT_TRUE@ LpdMessageDispatcherTest.$(OBJEXT) \ -@ENABLE_BITTORRENT_TRUE@ LpdMessageReceiverTest.$(OBJEXT) +@ENABLE_BITTORRENT_TRUE@ LpdMessageReceiverTest.$(OBJEXT) \ +@ENABLE_BITTORRENT_TRUE@ Bencode2Test.$(OBJEXT) @ENABLE_METALINK_TRUE@am__objects_7 = MetalinkerTest.$(OBJEXT) \ @ENABLE_METALINK_TRUE@ MetalinkEntryTest.$(OBJEXT) \ @ENABLE_METALINK_TRUE@ Metalink2RequestGroupTest.$(OBJEXT) \ @@ -407,12 +406,11 @@ am_aria2c_OBJECTS = AllTest.$(OBJEXT) TestUtil.$(OBJEXT) \ DownloadHelperTest.$(OBJEXT) SequentialPickerTest.$(OBJEXT) \ RarestPieceSelectorTest.$(OBJEXT) PieceStatManTest.$(OBJEXT) \ LongestSequencePieceSelectorTest.$(OBJEXT) \ - a2algoTest.$(OBJEXT) bitfieldTest.$(OBJEXT) BDETest.$(OBJEXT) \ + a2algoTest.$(OBJEXT) bitfieldTest.$(OBJEXT) \ DownloadContextTest.$(OBJEXT) SessionSerializerTest.$(OBJEXT) \ - ValueBaseTest.$(OBJEXT) Bencode2Test.$(OBJEXT) \ - $(am__objects_1) $(am__objects_2) $(am__objects_3) \ - $(am__objects_4) $(am__objects_5) $(am__objects_6) \ - $(am__objects_7) + ValueBaseTest.$(OBJEXT) $(am__objects_1) $(am__objects_2) \ + $(am__objects_3) $(am__objects_4) $(am__objects_5) \ + $(am__objects_6) $(am__objects_7) aria2c_OBJECTS = $(am_aria2c_OBJECTS) am__DEPENDENCIES_1 = aria2c_DEPENDENCIES = ../src/libaria2c.a $(am__DEPENDENCIES_1) @@ -644,9 +642,8 @@ aria2c_SOURCES = AllTest.cc TestUtil.cc TestUtil.h SocketCoreTest.cc \ DNSCacheTest.cc DownloadHelperTest.cc SequentialPickerTest.cc \ RarestPieceSelectorTest.cc PieceStatManTest.cc \ InOrderPieceSelector.h LongestSequencePieceSelectorTest.cc \ - a2algoTest.cc bitfieldTest.cc BDETest.cc \ - DownloadContextTest.cc SessionSerializerTest.cc \ - ValueBaseTest.cc Bencode2Test.cc $(am__append_1) \ + a2algoTest.cc bitfieldTest.cc DownloadContextTest.cc \ + SessionSerializerTest.cc ValueBaseTest.cc $(am__append_1) \ $(am__append_2) $(am__append_3) $(am__append_4) \ $(am__append_5) $(am__append_6) $(am__append_7) @@ -750,12 +747,10 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/AlphaNumberDecoratorTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/AnnounceListTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/AuthConfigFactoryTest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BDETest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BNodeTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Base32Test.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Base64Test.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Bencode2Test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BencodeTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BitfieldManTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BittorrentHelperTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BtAllowedFastMessageTest.Po@am__quote@ diff --git a/test/MockDHTMessage.h b/test/MockDHTMessage.h index bbaf7332..d608bf2d 100644 --- a/test/MockDHTMessage.h +++ b/test/MockDHTMessage.h @@ -9,7 +9,6 @@ #include "DHTNode.h" #include "Peer.h" -#include "BDE.h" namespace aria2 { @@ -77,7 +76,7 @@ public: virtual std::string toString() const { return "MockDHTMessage"; } - virtual BDE getArgument() { return BDE::dict(); } + virtual SharedHandle<Dict> getArgument() { return Dict::g(); } }; class MockDHTResponseMessage:public DHTResponseMessage { @@ -109,7 +108,7 @@ public: virtual std::string toString() const { return "MockDHTMessage"; } - virtual BDE getResponse() { return BDE::dict(); } + virtual SharedHandle<Dict> getResponse() { return Dict::g(); } virtual void accept(DHTMessageCallback* callback) {} }; diff --git a/test/MockDHTMessageFactory.h b/test/MockDHTMessageFactory.h index 32eec7f6..80c5edf0 100644 --- a/test/MockDHTMessageFactory.h +++ b/test/MockDHTMessageFactory.h @@ -4,7 +4,6 @@ #include "DHTMessageFactory.h" #include "DHTNode.h" #include "MockDHTMessage.h" -#include "bencode.h" namespace aria2 { @@ -17,7 +16,7 @@ public: virtual ~MockDHTMessageFactory() {} virtual SharedHandle<DHTQueryMessage> - createQueryMessage(const BDE& dict, + createQueryMessage(const Dict* dict, const std::string& ipaddr, uint16_t port) { return SharedHandle<DHTQueryMessage>(); @@ -25,7 +24,7 @@ public: virtual SharedHandle<DHTResponseMessage> createResponseMessage(const std::string& messageType, - const BDE& dict, + const Dict* dict, const std::string& ipaddr, uint16_t port) { SharedHandle<DHTNode> remoteNode(new DHTNode()); @@ -33,7 +32,8 @@ public: remoteNode->setIPAddress(ipaddr); remoteNode->setPort(port); SharedHandle<MockDHTResponseMessage> m - (new MockDHTResponseMessage(_localNode, remoteNode, dict["t"].s())); + (new MockDHTResponseMessage(_localNode, remoteNode, + asString(dict->get("t"))->s())); return m; } diff --git a/test/PeerListProcessorTest.cc b/test/PeerListProcessorTest.cc index 060c5ed1..616aa9e9 100644 --- a/test/PeerListProcessorTest.cc +++ b/test/PeerListProcessorTest.cc @@ -6,8 +6,8 @@ #include "Exception.h" #include "Peer.h" -#include "bencode.h" #include "TimeA2.h" +#include "bencode2.h" namespace aria2 { @@ -36,10 +36,10 @@ void PeerListProcessorTest::testExtractPeerFromList() { "d5:peersld2:ip11:192.168.0.17:peer id20:aria2-00000000000000" "4:porti2006eeee"; - const BDE dict = bencode::decode(peersString); + SharedHandle<ValueBase> dict = bencode2::decode(peersString); std::deque<SharedHandle<Peer> > peers; - proc.extractPeerFromList(dict["peers"], std::back_inserter(peers)); + proc.extractPeer(asDict(dict)->get("peers"), std::back_inserter(peers)); CPPUNIT_ASSERT_EQUAL((size_t)1, peers.size()); SharedHandle<Peer> peer = *peers.begin(); CPPUNIT_ASSERT_EQUAL(std::string("192.168.0.1"), peer->getIPAddress()); @@ -53,10 +53,10 @@ void PeerListProcessorTest::testExtract2PeersFromList() { "4:porti65535eed2:ip11:192.168.0.27:peer id20:aria2-00000000000000" "4:porti2007eeee"; - const BDE dict = bencode::decode(peersString); + SharedHandle<ValueBase> dict = bencode2::decode(peersString); std::deque<SharedHandle<Peer> > peers; - proc.extractPeerFromList(dict["peers"], std::back_inserter(peers)); + proc.extractPeer(asDict(dict)->get("peers"), std::back_inserter(peers)); CPPUNIT_ASSERT_EQUAL((size_t)2, peers.size()); SharedHandle<Peer> peer = *peers.begin(); CPPUNIT_ASSERT_EQUAL(std::string("192.168.0.1"), peer->getIPAddress()); diff --git a/test/UTMetadataDataExtensionMessageTest.cc b/test/UTMetadataDataExtensionMessageTest.cc index 51372102..d80bfc7f 100644 --- a/test/UTMetadataDataExtensionMessageTest.cc +++ b/test/UTMetadataDataExtensionMessageTest.cc @@ -9,7 +9,6 @@ #include "DownloadContext.h" #include "DirectDiskAdaptor.h" #include "ByteArrayDiskWriter.h" -#include "BDE.h" #include "DownloadContext.h" #include "MockPieceStorage.h" #include "UTMetadataRequestTracker.h" diff --git a/test/XmlRpcMethodTest.cc b/test/XmlRpcMethodTest.cc index 1ee7db01..62bcd5c4 100644 --- a/test/XmlRpcMethodTest.cc +++ b/test/XmlRpcMethodTest.cc @@ -9,7 +9,6 @@ #include "ServerStatMan.h" #include "RequestGroup.h" #include "XmlRpcMethodImpl.h" -#include "BDE.h" #include "OptionParser.h" #include "OptionHandler.h" #include "XmlRpcRequest.h" @@ -151,12 +150,18 @@ public: CPPUNIT_TEST_SUITE_REGISTRATION(XmlRpcMethodTest); +static std::string getString(const Dict* dict, const std::string& key) +{ + return asString(dict->get(key))->s(); +} + void XmlRpcMethodTest::testAddUri() { AddUriXmlRpcMethod m; - XmlRpcRequest req(AddUriXmlRpcMethod::getMethodName(), BDE::list()); - req.params << BDE::list(); - req.params[0] << BDE("http://localhost/"); + XmlRpcRequest req(AddUriXmlRpcMethod::getMethodName(), List::g()); + SharedHandle<List> urisParam = List::g(); + urisParam->append("http://localhost/"); + req.params->append(urisParam); { XmlRpcResponse res = m.execute(req, _e.get()); CPPUNIT_ASSERT_EQUAL(0, res.code); @@ -168,9 +173,9 @@ void XmlRpcMethodTest::testAddUri() getFirstFileEntry()->getRemainingUris().front()); } // with options - BDE opt = BDE::dict(); - opt[PREF_DIR] = BDE("/sink"); - req.params << opt; + SharedHandle<Dict> opt = Dict::g(); + opt->put(PREF_DIR, "/sink"); + req.params->append(opt); { XmlRpcResponse res = m.execute(req, _e.get()); CPPUNIT_ASSERT_EQUAL(0, res.code); @@ -183,7 +188,7 @@ void XmlRpcMethodTest::testAddUri() void XmlRpcMethodTest::testAddUri_withoutUri() { AddUriXmlRpcMethod m; - XmlRpcRequest req(AddUriXmlRpcMethod::getMethodName(), BDE::list()); + XmlRpcRequest req(AddUriXmlRpcMethod::getMethodName(), List::g()); XmlRpcResponse res = m.execute(req, _e.get()); CPPUNIT_ASSERT_EQUAL(1, res.code); } @@ -191,9 +196,10 @@ void XmlRpcMethodTest::testAddUri_withoutUri() void XmlRpcMethodTest::testAddUri_notUri() { AddUriXmlRpcMethod m; - XmlRpcRequest req(AddUriXmlRpcMethod::getMethodName(), BDE::list()); - req.params << BDE::list(); - req.params[0] << BDE("not uri"); + XmlRpcRequest req(AddUriXmlRpcMethod::getMethodName(), List::g()); + SharedHandle<List> urisParam = List::g(); + urisParam->append("not uri"); + req.params->append(urisParam); XmlRpcResponse res = m.execute(req, _e.get()); CPPUNIT_ASSERT_EQUAL(1, res.code); } @@ -201,12 +207,13 @@ void XmlRpcMethodTest::testAddUri_notUri() void XmlRpcMethodTest::testAddUri_withBadOption() { AddUriXmlRpcMethod m; - XmlRpcRequest req(AddUriXmlRpcMethod::getMethodName(), BDE::list()); - req.params << BDE::list(); - req.params[0] << BDE("http://localhost"); - BDE opt = BDE::dict(); - opt[PREF_FILE_ALLOCATION] = BDE("badvalue"); - req.params << opt; + XmlRpcRequest req(AddUriXmlRpcMethod::getMethodName(), List::g()); + SharedHandle<List> urisParam = List::g(); + urisParam->append("http://localhost"); + req.params->append(urisParam); + SharedHandle<Dict> opt = Dict::g(); + opt->put(PREF_FILE_ALLOCATION, "badvalue"); + req.params->append(opt); XmlRpcResponse res = m.execute(req, _e.get()); CPPUNIT_ASSERT_EQUAL(1, res.code); } @@ -214,17 +221,19 @@ void XmlRpcMethodTest::testAddUri_withBadOption() void XmlRpcMethodTest::testAddUri_withPosition() { AddUriXmlRpcMethod m; - XmlRpcRequest req1(AddUriXmlRpcMethod::getMethodName(), BDE::list()); - req1.params << BDE::list(); - req1.params[0] << BDE("http://uri1"); + XmlRpcRequest req1(AddUriXmlRpcMethod::getMethodName(), List::g()); + SharedHandle<List> urisParam1 = List::g(); + urisParam1->append("http://uri1"); + req1.params->append(urisParam1); XmlRpcResponse res1 = m.execute(req1, _e.get()); CPPUNIT_ASSERT_EQUAL(0, res1.code); - XmlRpcRequest req2(AddUriXmlRpcMethod::getMethodName(), BDE::list()); - req2.params << BDE::list(); - req2.params[0] << BDE("http://uri2"); - req2.params << BDE::dict(); - req2.params << BDE((int64_t)0); + XmlRpcRequest req2(AddUriXmlRpcMethod::getMethodName(), List::g()); + SharedHandle<List> urisParam2 = List::g(); + urisParam2->append("http://uri2"); + req2.params->append(urisParam2); + req2.params->append(Dict::g()); + req2.params->append(Integer::g(0)); m.execute(req2, _e.get()); std::string uri = @@ -237,11 +246,12 @@ void XmlRpcMethodTest::testAddUri_withPosition() void XmlRpcMethodTest::testAddUri_withBadPosition() { AddUriXmlRpcMethod m; - XmlRpcRequest req(AddUriXmlRpcMethod::getMethodName(), BDE::list()); - req.params << BDE::list(); - req.params[0] << BDE("http://localhost/"); - req.params << BDE::dict(); - req.params << BDE((int64_t)-1); + XmlRpcRequest req(AddUriXmlRpcMethod::getMethodName(), List::g()); + SharedHandle<List> urisParam = List::g(); + urisParam->append("http://localhost/"); + req.params->append(urisParam); + req.params->append(Dict::g()); + req.params->append(Integer::g(-1)); XmlRpcResponse res = m.execute(req, _e.get()); CPPUNIT_ASSERT_EQUAL(1, res.code); } @@ -250,15 +260,15 @@ void XmlRpcMethodTest::testAddUri_withBadPosition() void XmlRpcMethodTest::testAddTorrent() { AddTorrentXmlRpcMethod m; - XmlRpcRequest req(AddTorrentXmlRpcMethod::getMethodName(), 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; + XmlRpcRequest req(AddTorrentXmlRpcMethod::getMethodName(), List::g()); + req.params->append(readFile("single.torrent")); + SharedHandle<List> uris = List::g(); + uris->append("http://localhost/aria2-0.8.2.tar.bz2"); + req.params->append(uris); { XmlRpcResponse res = m.execute(req, _e.get()); CPPUNIT_ASSERT_EQUAL(0, res.code); - CPPUNIT_ASSERT_EQUAL(std::string("1"), res.param.s()); + CPPUNIT_ASSERT_EQUAL(std::string("1"), asString(res.param)->s()); SharedHandle<RequestGroup> group = _e->getRequestGroupMan()->findReservedGroup(1); @@ -273,9 +283,9 @@ void XmlRpcMethodTest::testAddTorrent() getRemainingUris()[0]); } // with options - BDE opt = BDE::dict(); - opt[PREF_DIR] = BDE("/sink"); - req.params << opt; + SharedHandle<Dict> opt = Dict::g(); + opt->put(PREF_DIR, "/sink"); + req.params->append(opt); { XmlRpcResponse res = m.execute(req, _e.get()); CPPUNIT_ASSERT_EQUAL(0, res.code); @@ -288,7 +298,7 @@ void XmlRpcMethodTest::testAddTorrent() void XmlRpcMethodTest::testAddTorrent_withoutTorrent() { AddTorrentXmlRpcMethod m; - XmlRpcRequest req(AddTorrentXmlRpcMethod::getMethodName(), BDE::list()); + XmlRpcRequest req(AddTorrentXmlRpcMethod::getMethodName(), List::g()); XmlRpcResponse res = m.execute(req, _e.get()); CPPUNIT_ASSERT_EQUAL(1, res.code); } @@ -296,8 +306,8 @@ void XmlRpcMethodTest::testAddTorrent_withoutTorrent() void XmlRpcMethodTest::testAddTorrent_notBase64Torrent() { AddTorrentXmlRpcMethod m; - XmlRpcRequest req(AddTorrentXmlRpcMethod::getMethodName(), BDE::list()); - req.params << BDE("not torrent"); + XmlRpcRequest req(AddTorrentXmlRpcMethod::getMethodName(), List::g()); + req.params->append("not torrent"); XmlRpcResponse res = m.execute(req, _e.get()); CPPUNIT_ASSERT_EQUAL(1, res.code); } @@ -305,18 +315,18 @@ void XmlRpcMethodTest::testAddTorrent_notBase64Torrent() void XmlRpcMethodTest::testAddTorrent_withPosition() { AddTorrentXmlRpcMethod m; - XmlRpcRequest req1(AddTorrentXmlRpcMethod::getMethodName(), BDE::list()); - req1.params << BDE(readFile("test.torrent")); - req1.params << BDE::list(); - req1.params << BDE::dict(); + XmlRpcRequest req1(AddTorrentXmlRpcMethod::getMethodName(), List::g()); + req1.params->append(readFile("test.torrent")); + req1.params->append(List::g()); + req1.params->append(Dict::g()); XmlRpcResponse res1 = m.execute(req1, _e.get()); CPPUNIT_ASSERT_EQUAL(0, res1.code); - XmlRpcRequest req2(AddTorrentXmlRpcMethod::getMethodName(), BDE::list()); - req2.params << BDE(readFile("single.torrent")); - req2.params << BDE::list(); - req2.params << BDE::dict(); - req2.params << BDE((int64_t)0); + XmlRpcRequest req2(AddTorrentXmlRpcMethod::getMethodName(), List::g()); + req2.params->append(readFile("single.torrent")); + req2.params->append(List::g()); + req2.params->append(Dict::g()); + req2.params->append(Integer::g(0)); m.execute(req2, _e.get()); CPPUNIT_ASSERT_EQUAL((size_t)1, @@ -330,14 +340,15 @@ void XmlRpcMethodTest::testAddTorrent_withPosition() void XmlRpcMethodTest::testAddMetalink() { AddMetalinkXmlRpcMethod m; - XmlRpcRequest req(AddMetalinkXmlRpcMethod::getMethodName(), BDE::list()); - req.params << BDE(readFile("2files.metalink")); + XmlRpcRequest req(AddMetalinkXmlRpcMethod::getMethodName(), List::g()); + req.params->append(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()); + const List* resParams = asList(res.param); + CPPUNIT_ASSERT_EQUAL((size_t)2, resParams->size()); + CPPUNIT_ASSERT_EQUAL(std::string("1"), asString(resParams->get(0))->s()); + CPPUNIT_ASSERT_EQUAL(std::string("2"), asString(resParams->get(1))->s()); SharedHandle<RequestGroup> tar = _e->getRequestGroupMan()->findReservedGroup(1); @@ -351,9 +362,9 @@ void XmlRpcMethodTest::testAddMetalink() deb->getFirstFilePath()); } // with options - BDE opt = BDE::dict(); - opt[PREF_DIR] = BDE("/sink"); - req.params << opt; + SharedHandle<Dict> opt = Dict::g(); + opt->put(PREF_DIR, "/sink"); + req.params->append(opt); { XmlRpcResponse res = m.execute(req, _e.get()); CPPUNIT_ASSERT_EQUAL(0, res.code); @@ -366,7 +377,7 @@ void XmlRpcMethodTest::testAddMetalink() void XmlRpcMethodTest::testAddMetalink_withoutMetalink() { AddMetalinkXmlRpcMethod m; - XmlRpcRequest req(AddMetalinkXmlRpcMethod::getMethodName(), BDE::list()); + XmlRpcRequest req(AddMetalinkXmlRpcMethod::getMethodName(), List::g()); XmlRpcResponse res = m.execute(req, _e.get()); CPPUNIT_ASSERT_EQUAL(1, res.code); } @@ -374,8 +385,8 @@ void XmlRpcMethodTest::testAddMetalink_withoutMetalink() void XmlRpcMethodTest::testAddMetalink_notBase64Metalink() { AddMetalinkXmlRpcMethod m; - XmlRpcRequest req(AddMetalinkXmlRpcMethod::getMethodName(), BDE::list()); - req.params << BDE("not metalink"); + XmlRpcRequest req(AddMetalinkXmlRpcMethod::getMethodName(), List::g()); + req.params->append("not metalink"); XmlRpcResponse res = m.execute(req, _e.get()); CPPUNIT_ASSERT_EQUAL(1, res.code); } @@ -383,17 +394,18 @@ void XmlRpcMethodTest::testAddMetalink_notBase64Metalink() void XmlRpcMethodTest::testAddMetalink_withPosition() { AddUriXmlRpcMethod m1; - XmlRpcRequest req1(AddUriXmlRpcMethod::getMethodName(), BDE::list()); - req1.params << BDE::list(); - req1.params[0] << BDE("http://uri"); + XmlRpcRequest req1(AddUriXmlRpcMethod::getMethodName(), List::g()); + SharedHandle<List> urisParam1 = List::g(); + urisParam1->append("http://uri"); + req1.params->append(urisParam1); XmlRpcResponse res1 = m1.execute(req1, _e.get()); CPPUNIT_ASSERT_EQUAL(0, res1.code); AddMetalinkXmlRpcMethod m2; - XmlRpcRequest req2("ari2.addMetalink", BDE::list()); - req2.params << BDE(readFile("2files.metalink")); - req2.params << BDE::dict(); - req2.params << BDE((int64_t)0); + XmlRpcRequest req2("ari2.addMetalink", List::g()); + req2.params->append(readFile("2files.metalink")); + req2.params->append(Dict::g()); + req2.params->append(Integer::g(0)); XmlRpcResponse res2 = m2.execute(req2, _e.get()); CPPUNIT_ASSERT_EQUAL(0, res2.code); @@ -410,20 +422,20 @@ void XmlRpcMethodTest::testChangeOption() _e->getRequestGroupMan()->addReservedGroup(group); ChangeOptionXmlRpcMethod m; - XmlRpcRequest req(ChangeOptionXmlRpcMethod::getMethodName(), BDE::list()); - req.params << BDE("1"); - BDE opt = BDE::dict(); - opt[PREF_MAX_DOWNLOAD_LIMIT] = BDE("100K"); + XmlRpcRequest req(ChangeOptionXmlRpcMethod::getMethodName(), List::g()); + req.params->append("1"); + SharedHandle<Dict> opt = Dict::g(); + opt->put(PREF_MAX_DOWNLOAD_LIMIT, "100K"); #ifdef ENABLE_BITTORRENT - opt[PREF_BT_MAX_PEERS] = BDE("100"); - opt[PREF_BT_REQUEST_PEER_SPEED_LIMIT] = BDE("300K"); - opt[PREF_MAX_UPLOAD_LIMIT] = BDE("50K"); + opt->put(PREF_BT_MAX_PEERS, "100"); + opt->put(PREF_BT_REQUEST_PEER_SPEED_LIMIT, "300K"); + opt->put(PREF_MAX_UPLOAD_LIMIT, "50K"); BtObject btObject; btObject._btRuntime = SharedHandle<BtRuntime>(new BtRuntime()); _e->getBtRegistry()->put(group->getGID(), btObject); #endif // ENABLE_BITTORRENT - req.params << opt; + req.params->append(opt); XmlRpcResponse res = m.execute(req, _e.get()); SharedHandle<Option> option = group->getOption(); @@ -453,11 +465,11 @@ void XmlRpcMethodTest::testChangeOption_withBadOption() _e->getRequestGroupMan()->addReservedGroup(group); ChangeOptionXmlRpcMethod m; - XmlRpcRequest req(ChangeOptionXmlRpcMethod::getMethodName(), BDE::list()); - req.params << BDE("1"); - BDE opt = BDE::dict(); - opt[PREF_MAX_DOWNLOAD_LIMIT] = BDE("badvalue"); - req.params << opt; + XmlRpcRequest req(ChangeOptionXmlRpcMethod::getMethodName(), List::g()); + req.params->append("1"); + SharedHandle<Dict> opt = Dict::g(); + opt->put(PREF_MAX_DOWNLOAD_LIMIT, "badvalue"); + req.params->append(opt); XmlRpcResponse res = m.execute(req, _e.get()); CPPUNIT_ASSERT_EQUAL(1, res.code); } @@ -468,11 +480,11 @@ void XmlRpcMethodTest::testChangeOption_withNotAllowedOption() _e->getRequestGroupMan()->addReservedGroup(group); ChangeOptionXmlRpcMethod m; - XmlRpcRequest req(ChangeOptionXmlRpcMethod::getMethodName(), BDE::list()); - req.params << BDE("1"); - BDE opt = BDE::dict(); - opt[PREF_MAX_OVERALL_DOWNLOAD_LIMIT] = BDE("100K"); - req.params << opt; + XmlRpcRequest req(ChangeOptionXmlRpcMethod::getMethodName(), List::g()); + req.params->append("1"); + SharedHandle<Dict> opt = Dict::g(); + opt->put(PREF_MAX_OVERALL_DOWNLOAD_LIMIT, "100K"); + req.params->append(opt); XmlRpcResponse res = m.execute(req, _e.get()); CPPUNIT_ASSERT_EQUAL(1, res.code); } @@ -480,7 +492,7 @@ void XmlRpcMethodTest::testChangeOption_withNotAllowedOption() void XmlRpcMethodTest::testChangeOption_withoutGid() { ChangeOptionXmlRpcMethod m; - XmlRpcRequest req(ChangeOptionXmlRpcMethod::getMethodName(), BDE::list()); + XmlRpcRequest req(ChangeOptionXmlRpcMethod::getMethodName(), List::g()); XmlRpcResponse res = m.execute(req, _e.get()); CPPUNIT_ASSERT_EQUAL(1, res.code); } @@ -489,13 +501,13 @@ void XmlRpcMethodTest::testChangeGlobalOption() { ChangeGlobalOptionXmlRpcMethod m; XmlRpcRequest req - (ChangeGlobalOptionXmlRpcMethod::getMethodName(), BDE::list()); - BDE opt = BDE::dict(); - opt[PREF_MAX_OVERALL_DOWNLOAD_LIMIT] = BDE("100K"); + (ChangeGlobalOptionXmlRpcMethod::getMethodName(), List::g()); + SharedHandle<Dict> opt = Dict::g(); + opt->put(PREF_MAX_OVERALL_DOWNLOAD_LIMIT, "100K"); #ifdef ENABLE_BITTORRENT - opt[PREF_MAX_OVERALL_UPLOAD_LIMIT] = BDE("50K"); + opt->put(PREF_MAX_OVERALL_UPLOAD_LIMIT, "50K"); #endif // ENABLE_BITTORRENT - req.params << opt; + req.params->append(opt); XmlRpcResponse res = m.execute(req, _e.get()); CPPUNIT_ASSERT_EQUAL(0, res.code); @@ -517,10 +529,10 @@ void XmlRpcMethodTest::testChangeGlobalOption_withBadOption() { ChangeGlobalOptionXmlRpcMethod m; XmlRpcRequest req - (ChangeGlobalOptionXmlRpcMethod::getMethodName(), BDE::list()); - BDE opt = BDE::dict(); - opt[PREF_MAX_OVERALL_DOWNLOAD_LIMIT] = BDE("badvalue"); - req.params << opt; + (ChangeGlobalOptionXmlRpcMethod::getMethodName(), List::g()); + SharedHandle<Dict> opt = Dict::g(); + opt->put(PREF_MAX_OVERALL_DOWNLOAD_LIMIT, "badvalue"); + req.params->append(opt); XmlRpcResponse res = m.execute(req, _e.get()); CPPUNIT_ASSERT_EQUAL(1, res.code); } @@ -529,10 +541,10 @@ void XmlRpcMethodTest::testChangeGlobalOption_withNotAllowedOption() { ChangeGlobalOptionXmlRpcMethod m; XmlRpcRequest req - (ChangeGlobalOptionXmlRpcMethod::getMethodName(), BDE::list()); - BDE opt = BDE::dict(); - opt[PREF_MAX_DOWNLOAD_LIMIT] = BDE("100K"); - req.params << opt; + (ChangeGlobalOptionXmlRpcMethod::getMethodName(), List::g()); + SharedHandle<Dict> opt = Dict::g(); + opt->put(PREF_MAX_DOWNLOAD_LIMIT, "100K"); + req.params->append(opt); XmlRpcResponse res = m.execute(req, _e.get()); CPPUNIT_ASSERT_EQUAL(1, res.code); } @@ -540,11 +552,11 @@ void XmlRpcMethodTest::testChangeGlobalOption_withNotAllowedOption() void XmlRpcMethodTest::testNoSuchMethod() { NoSuchMethodXmlRpcMethod m; - XmlRpcRequest req("make.hamburger", BDE::none); + XmlRpcRequest req("make.hamburger", List::g()); XmlRpcResponse res = m.execute(req, 0); CPPUNIT_ASSERT_EQUAL(1, res.code); CPPUNIT_ASSERT_EQUAL(std::string("No such method: make.hamburger"), - res.param["faultString"].s()); + getString(asDict(res.param), "faultString")); CPPUNIT_ASSERT_EQUAL (std::string("<?xml version=\"1.0\"?>" "<methodResponse>" @@ -570,7 +582,7 @@ void XmlRpcMethodTest::testNoSuchMethod() void XmlRpcMethodTest::testTellStatus_withoutGid() { TellStatusXmlRpcMethod m; - XmlRpcRequest req(TellStatusXmlRpcMethod::getMethodName(), BDE::list()); + XmlRpcRequest req(TellStatusXmlRpcMethod::getMethodName(), List::g()); XmlRpcResponse res = m.execute(req, _e.get()); CPPUNIT_ASSERT_EQUAL(1, res.code); } @@ -579,9 +591,10 @@ static void addUri(const std::string& uri, const SharedHandle<DownloadEngine>& e) { AddUriXmlRpcMethod m; - XmlRpcRequest req(AddUriXmlRpcMethod::getMethodName(), BDE::list()); - req.params << BDE::list(); - req.params[0] << BDE(uri); + XmlRpcRequest req(AddUriXmlRpcMethod::getMethodName(), List::g()); + SharedHandle<List> urisParam = List::g(); + urisParam->append(uri); + req.params->append(urisParam); CPPUNIT_ASSERT_EQUAL(0, m.execute(req, e.get()).code); } @@ -591,8 +604,8 @@ static void addTorrent (const std::string& torrentFile, const SharedHandle<DownloadEngine>& e) { AddTorrentXmlRpcMethod m; - XmlRpcRequest req(AddTorrentXmlRpcMethod::getMethodName(), BDE::list()); - req.params << BDE(readFile(torrentFile)); + XmlRpcRequest req(AddTorrentXmlRpcMethod::getMethodName(), List::g()); + req.params->append(readFile(torrentFile)); XmlRpcResponse res = m.execute(req, e.get()); } @@ -610,58 +623,69 @@ void XmlRpcMethodTest::testTellWaiting() #endif // !ENABLE_BITTORRENT TellWaitingXmlRpcMethod m; - XmlRpcRequest req(TellWaitingXmlRpcMethod::getMethodName(), BDE::list()); - req.params << BDE((int64_t)1); - req.params << BDE((int64_t)2); + XmlRpcRequest req(TellWaitingXmlRpcMethod::getMethodName(), List::g()); + req.params->append(Integer::g(1)); + req.params->append(Integer::g(2)); 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("2"), res.param[0]["gid"].s()); - CPPUNIT_ASSERT_EQUAL(std::string("3"), res.param[1]["gid"].s()); + const List* resParams = asList(res.param); + CPPUNIT_ASSERT_EQUAL((size_t)2, resParams->size()); + CPPUNIT_ASSERT_EQUAL(std::string("2"), + getString(asDict(resParams->get(0)), "gid")); + CPPUNIT_ASSERT_EQUAL(std::string("3"), + getString(asDict(resParams->get(1)), "gid")); // waiting.size() == offset+num - req = XmlRpcRequest(TellWaitingXmlRpcMethod::getMethodName(), BDE::list()); - req.params << BDE((int64_t)1); - req.params << BDE((int64_t)3); + req = XmlRpcRequest(TellWaitingXmlRpcMethod::getMethodName(), List::g()); + req.params->append(Integer::g(1)); + req.params->append(Integer::g(3)); res = m.execute(req, _e.get()); CPPUNIT_ASSERT_EQUAL(0, res.code); - CPPUNIT_ASSERT_EQUAL((size_t)3, res.param.size()); + resParams = asList(res.param); + CPPUNIT_ASSERT_EQUAL((size_t)3, resParams->size()); // waiting.size() < offset+num - req = XmlRpcRequest(TellWaitingXmlRpcMethod::getMethodName(), BDE::list()); - req.params << BDE((int64_t)1); - req.params << BDE((int64_t)4); + req = XmlRpcRequest(TellWaitingXmlRpcMethod::getMethodName(), List::g()); + req.params->append(Integer::g(1)); + req.params->append(Integer::g(4)); res = m.execute(req, _e.get()); CPPUNIT_ASSERT_EQUAL(0, res.code); - CPPUNIT_ASSERT_EQUAL((size_t)3, res.param.size()); + resParams = asList(res.param); + CPPUNIT_ASSERT_EQUAL((size_t)3, resParams->size()); // negative offset - req = XmlRpcRequest(TellWaitingXmlRpcMethod::getMethodName(), BDE::list()); - req.params << BDE((int64_t)-1); - req.params << BDE((int64_t)2); + req = XmlRpcRequest(TellWaitingXmlRpcMethod::getMethodName(), List::g()); + req.params->append(Integer::g(-1)); + req.params->append(Integer::g(2)); 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("4"), res.param[0]["gid"].s()); - CPPUNIT_ASSERT_EQUAL(std::string("3"), res.param[1]["gid"].s()); + resParams = asList(res.param); + CPPUNIT_ASSERT_EQUAL((size_t)2, resParams->size()); + CPPUNIT_ASSERT_EQUAL(std::string("4"), + getString(asDict(resParams->get(0)), "gid")); + CPPUNIT_ASSERT_EQUAL(std::string("3"), + getString(asDict(resParams->get(1)), "gid")); // negative offset and size < num - req.params[1] = BDE((int64_t)100); + req.params->set(1, Integer::g(100)); res = m.execute(req, _e.get()); CPPUNIT_ASSERT_EQUAL(0, res.code); - CPPUNIT_ASSERT_EQUAL((size_t)4, res.param.size()); + resParams = asList(res.param); + CPPUNIT_ASSERT_EQUAL((size_t)4, resParams->size()); // nagative offset and normalized offset < 0 - req.params[0] = BDE((int64_t)-5); + req.params->set(0, Integer::g(-5)); res = m.execute(req, _e.get()); CPPUNIT_ASSERT_EQUAL(0, res.code); - CPPUNIT_ASSERT_EQUAL((size_t)0, res.param.size()); + resParams = asList(res.param); + CPPUNIT_ASSERT_EQUAL((size_t)0, resParams->size()); // nagative offset and normalized offset == 0 - req.params[0] = BDE((int64_t)-4); + req.params->set(0, Integer::g(-4)); res = m.execute(req, _e.get()); CPPUNIT_ASSERT_EQUAL(0, res.code); - CPPUNIT_ASSERT_EQUAL((size_t)1, res.param.size()); + resParams = asList(res.param); + CPPUNIT_ASSERT_EQUAL((size_t)1, resParams->size()); } void XmlRpcMethodTest::testTellWaiting_fail() { TellWaitingXmlRpcMethod m; - XmlRpcRequest req(TellWaitingXmlRpcMethod::getMethodName(), BDE::list()); + XmlRpcRequest req(TellWaitingXmlRpcMethod::getMethodName(), List::g()); XmlRpcResponse res = m.execute(req, _e.get()); CPPUNIT_ASSERT_EQUAL(1, res.code); } @@ -669,15 +693,18 @@ void XmlRpcMethodTest::testTellWaiting_fail() void XmlRpcMethodTest::testGetVersion() { GetVersionXmlRpcMethod m; - XmlRpcRequest req(GetVersionXmlRpcMethod::getMethodName(), BDE::none); + XmlRpcRequest req(GetVersionXmlRpcMethod::getMethodName(), List::g()); XmlRpcResponse res = m.execute(req, _e.get()); CPPUNIT_ASSERT_EQUAL(0, res.code); - CPPUNIT_ASSERT_EQUAL(std::string(PACKAGE_VERSION), res.param["version"].s()); - const BDE& featureList = res.param["enabledFeatures"]; + const Dict* resParams = asDict(res.param); + CPPUNIT_ASSERT_EQUAL(std::string(PACKAGE_VERSION), + getString(resParams, "version")); + const List* featureList = asList(resParams->get("enabledFeatures")); std::string features; - for(BDE::List::const_iterator i = featureList.listBegin(); - i != featureList.listEnd(); ++i) { - features += (*i).s(); + for(List::ValueType::const_iterator i = featureList->begin(); + i != featureList->end(); ++i) { + const String* s = asString(*i); + features += s->s(); features += ", "; } @@ -700,12 +727,14 @@ void XmlRpcMethodTest::testGatherStoppedDownload() d->result = downloadresultcode::FINISHED; d->followedBy = followedBy; d->belongsTo = 2; - BDE entry = BDE::dict(); + SharedHandle<Dict> entry = Dict::g(); gatherStoppedDownload(entry, d); - CPPUNIT_ASSERT_EQUAL(std::string("3"), entry["followedBy"][0].s()); - CPPUNIT_ASSERT_EQUAL(std::string("4"), entry["followedBy"][1].s()); - CPPUNIT_ASSERT_EQUAL(std::string("2"), entry["belongsTo"].s()); + const List* followedByRes = asList(entry->get("followedBy")); + CPPUNIT_ASSERT_EQUAL(std::string("3"), asString(followedByRes->get(0))->s()); + CPPUNIT_ASSERT_EQUAL(std::string("4"), asString(followedByRes->get(1))->s()); + CPPUNIT_ASSERT_EQUAL(std::string("2"), + asString(entry->get("belongsTo"))->s()); } void XmlRpcMethodTest::testGatherProgressCommon() @@ -724,19 +753,28 @@ void XmlRpcMethodTest::testGatherProgressCommon() group->followedBy(followedBy.begin(), followedBy.end()); group->belongsTo(2); - BDE entry = BDE::dict(); + SharedHandle<Dict> entry = Dict::g(); gatherProgressCommon(entry, group); + const List* followedByRes = asList(entry->get("followedBy")); CPPUNIT_ASSERT_EQUAL(util::itos(followedBy[0]->getGID()), - entry["followedBy"][0].s()); + asString(followedByRes->get(0))->s()); CPPUNIT_ASSERT_EQUAL(util::itos(followedBy[1]->getGID()), - entry["followedBy"][1].s()); - CPPUNIT_ASSERT_EQUAL(std::string("2"), entry["belongsTo"].s()); - CPPUNIT_ASSERT_EQUAL((size_t)1, entry["files"].size()); + asString(followedByRes->get(1))->s()); + CPPUNIT_ASSERT_EQUAL(std::string("2"), + asString(entry->get("belongsTo"))->s()); + const List* files = asList(entry->get("files")); + CPPUNIT_ASSERT_EQUAL((size_t)1, files->size()); + const Dict* file = asDict(files->get(0)); CPPUNIT_ASSERT_EQUAL(std::string("aria2.tar.bz2"), - entry["files"][0]["path"].s()); - CPPUNIT_ASSERT_EQUAL(uris[0], entry["files"][0]["uris"][0]["uri"].s()); - CPPUNIT_ASSERT_EQUAL(std::string("/tmp"), entry["dir"].s()); + asString(file->get("path"))->s()); + CPPUNIT_ASSERT_EQUAL(uris[0], + asString + (asDict + (asList(file->get("uris"))->get(0)) + ->get("uri")) + ->s()); + CPPUNIT_ASSERT_EQUAL(std::string("/tmp"), asString(entry->get("dir"))->s()); } #ifdef ENABLE_BITTORRENT @@ -744,30 +782,41 @@ void XmlRpcMethodTest::testGatherBitTorrentMetadata() { SharedHandle<DownloadContext> dctx(new DownloadContext()); bittorrent::load("test.torrent", dctx); - BDE btDict = BDE::dict(); + SharedHandle<Dict> btDict = Dict::g(); gatherBitTorrentMetadata(btDict, bittorrent::getTorrentAttrs(dctx)); - CPPUNIT_ASSERT_EQUAL(std::string("REDNOAH.COM RULES"), btDict["comment"].s()); - CPPUNIT_ASSERT_EQUAL((int64_t)1123456789, btDict["creationDate"].i()); - CPPUNIT_ASSERT_EQUAL(std::string("multi"), btDict["mode"].s()); - CPPUNIT_ASSERT_EQUAL(std::string("aria2-test"), btDict["info"]["name"].s()); - const BDE& announceList = btDict["announceList"]; - CPPUNIT_ASSERT_EQUAL((size_t)3, announceList.size()); - CPPUNIT_ASSERT_EQUAL(std::string("http://tracker1"), announceList[0][0].s()); - CPPUNIT_ASSERT_EQUAL(std::string("http://tracker2"), announceList[1][0].s()); - CPPUNIT_ASSERT_EQUAL(std::string("http://tracker3"), announceList[2][0].s()); + CPPUNIT_ASSERT_EQUAL(std::string("REDNOAH.COM RULES"), + asString(btDict->get("comment"))->s()); + CPPUNIT_ASSERT_EQUAL((int64_t)1123456789, + asInteger(btDict->get("creationDate"))->i()); + CPPUNIT_ASSERT_EQUAL(std::string("multi"), + asString(btDict->get("mode"))->s()); + CPPUNIT_ASSERT_EQUAL(std::string("aria2-test"), + asString + (asDict + (btDict->get("info")) + ->get("name")) + ->s()); + const List* announceList = asList(btDict->get("announceList")); + CPPUNIT_ASSERT_EQUAL((size_t)3, announceList->size()); + CPPUNIT_ASSERT_EQUAL(std::string("http://tracker1"), + asString(asList(announceList->get(0))->get(0))->s()); + CPPUNIT_ASSERT_EQUAL(std::string("http://tracker2"), + asString(asList(announceList->get(1))->get(0))->s()); + CPPUNIT_ASSERT_EQUAL(std::string("http://tracker3"), + asString(asList(announceList->get(2))->get(0))->s()); // Remove some keys SharedHandle<TorrentAttribute> modBtAttrs = bittorrent::getTorrentAttrs(dctx); modBtAttrs->comment.clear(); modBtAttrs->creationDate = 0; modBtAttrs->mode.clear(); modBtAttrs->metadata.clear(); - btDict = BDE::dict(); + btDict = Dict::g(); gatherBitTorrentMetadata(btDict, modBtAttrs); - CPPUNIT_ASSERT(!btDict.containsKey("comment")); - CPPUNIT_ASSERT(!btDict.containsKey("creationDate")); - CPPUNIT_ASSERT(!btDict.containsKey("mode")); - CPPUNIT_ASSERT(!btDict.containsKey("info")); - CPPUNIT_ASSERT(btDict.containsKey("announceList")); + CPPUNIT_ASSERT(!btDict->containsKey("comment")); + CPPUNIT_ASSERT(!btDict->containsKey("creationDate")); + CPPUNIT_ASSERT(!btDict->containsKey("mode")); + CPPUNIT_ASSERT(!btDict->containsKey("info")); + CPPUNIT_ASSERT(btDict->containsKey("announceList")); } #endif // ENABLE_BITTORRENT @@ -779,13 +828,13 @@ void XmlRpcMethodTest::testChangePosition() (SharedHandle<RequestGroup>(new RequestGroup(_option))); ChangePositionXmlRpcMethod m; - XmlRpcRequest req(ChangePositionXmlRpcMethod::getMethodName(), BDE::list()); - req.params << std::string("1"); - req.params << BDE((int64_t)1); - req.params << std::string("POS_SET"); + XmlRpcRequest req(ChangePositionXmlRpcMethod::getMethodName(), List::g()); + req.params->append("1"); + req.params->append(Integer::g(1)); + req.params->append("POS_SET"); XmlRpcResponse res = m.execute(req, _e.get()); CPPUNIT_ASSERT_EQUAL(0, res.code); - CPPUNIT_ASSERT_EQUAL((int64_t)1, res.param.i()); + CPPUNIT_ASSERT_EQUAL((int64_t)1, asInteger(res.param)->i()); CPPUNIT_ASSERT_EQUAL ((gid_t)1, _e->getRequestGroupMan()->getReservedGroups()[1]->getGID()); } @@ -793,13 +842,13 @@ void XmlRpcMethodTest::testChangePosition() void XmlRpcMethodTest::testChangePosition_fail() { ChangePositionXmlRpcMethod m; - XmlRpcRequest req(ChangePositionXmlRpcMethod::getMethodName(), BDE::list()); + XmlRpcRequest req(ChangePositionXmlRpcMethod::getMethodName(), List::g()); XmlRpcResponse res = m.execute(req, _e.get()); CPPUNIT_ASSERT_EQUAL(1, res.code); - req.params << std::string("1"); - req.params << BDE((int64_t)2); - req.params << std::string("bad keyword"); + req.params->append("1"); + req.params->append(Integer::g(2)); + req.params->append("bad keyword"); CPPUNIT_ASSERT_EQUAL(1, res.code); } @@ -819,24 +868,24 @@ void XmlRpcMethodTest::testChangeUri() _e->getRequestGroupMan()->addReservedGroup(group); ChangeUriXmlRpcMethod m; - XmlRpcRequest req(ChangeUriXmlRpcMethod::getMethodName(), BDE::list()); - req.params << std::string("1"); // GID - req.params << 2; // index of FileEntry - BDE removeuris = BDE::list(); - removeuris << std::string("http://example.org/mustremove1"); - removeuris << std::string("http://example.org/mustremove2"); - removeuris << std::string("http://example.org/notexist"); - req.params << removeuris; - BDE adduris = BDE::list(); - adduris << std::string("http://example.org/added1"); - adduris << std::string("http://example.org/added2"); - adduris << std::string("baduri"); - adduris << std::string("http://example.org/added3"); - req.params << adduris; + XmlRpcRequest req(ChangeUriXmlRpcMethod::getMethodName(), List::g()); + req.params->append("1"); // GID + req.params->append(Integer::g(2)); // index of FileEntry + SharedHandle<List> removeuris = List::g(); + removeuris->append("http://example.org/mustremove1"); + removeuris->append("http://example.org/mustremove2"); + removeuris->append("http://example.org/notexist"); + req.params->append(removeuris); + SharedHandle<List> adduris = List::g(); + adduris->append("http://example.org/added1"); + adduris->append("http://example.org/added2"); + adduris->append("baduri"); + adduris->append("http://example.org/added3"); + req.params->append(adduris); XmlRpcResponse res = m.execute(req, _e.get()); CPPUNIT_ASSERT_EQUAL(0, res.code); - CPPUNIT_ASSERT_EQUAL((int64_t)2, res.param[0].i()); - CPPUNIT_ASSERT_EQUAL((int64_t)3, res.param[1].i()); + CPPUNIT_ASSERT_EQUAL((int64_t)2, asInteger(asList(res.param)->get(0))->i()); + CPPUNIT_ASSERT_EQUAL((int64_t)3, asInteger(asList(res.param)->get(1))->i()); CPPUNIT_ASSERT_EQUAL((size_t)0, files[0]->getRemainingUris().size()); CPPUNIT_ASSERT_EQUAL((size_t)0, files[2]->getRemainingUris().size()); std::deque<std::string> uris = files[1]->getRemainingUris(); @@ -847,29 +896,29 @@ void XmlRpcMethodTest::testChangeUri() CPPUNIT_ASSERT_EQUAL(std::string("http://example.org/added3"), uris[3]); // Change adduris - adduris = BDE::list(); - adduris << std::string("http://example.org/added1-1"); - adduris << std::string("http://example.org/added1-2"); - req.params[3] = adduris; + adduris = List::g(); + adduris->append("http://example.org/added1-1"); + adduris->append("http://example.org/added1-2"); + req.params->set(3, adduris); // Set position parameter - req.params << 2; + req.params->append(Integer::g(2)); res = m.execute(req, _e.get()); CPPUNIT_ASSERT_EQUAL(0, res.code); - CPPUNIT_ASSERT_EQUAL((int64_t)0, res.param[0].i()); - CPPUNIT_ASSERT_EQUAL((int64_t)2, res.param[1].i()); + CPPUNIT_ASSERT_EQUAL((int64_t)0, asInteger(asList(res.param)->get(0))->i()); + CPPUNIT_ASSERT_EQUAL((int64_t)2, asInteger(asList(res.param)->get(1))->i()); uris = files[1]->getRemainingUris(); CPPUNIT_ASSERT_EQUAL((size_t)6, uris.size()); CPPUNIT_ASSERT_EQUAL(std::string("http://example.org/added1-1"), uris[2]); CPPUNIT_ASSERT_EQUAL(std::string("http://example.org/added1-2"), uris[3]); // Change index of FileEntry - req.params[1] = 1; + req.params->set(1, Integer::g(1)); // Set position far beyond the size of uris in FileEntry. - req.params[4] = 1000; + req.params->set(4, Integer::g(1000)); res = m.execute(req, _e.get()); CPPUNIT_ASSERT_EQUAL(0, res.code); - CPPUNIT_ASSERT_EQUAL((int64_t)0, res.param[0].i()); - CPPUNIT_ASSERT_EQUAL((int64_t)2, res.param[1].i()); + CPPUNIT_ASSERT_EQUAL((int64_t)0, asInteger(asList(res.param)->get(0))->i()); + CPPUNIT_ASSERT_EQUAL((int64_t)2, asInteger(asList(res.param)->get(1))->i()); uris = files[0]->getRemainingUris(); CPPUNIT_ASSERT_EQUAL((size_t)2, uris.size()); CPPUNIT_ASSERT_EQUAL(std::string("http://example.org/added1-1"), uris[0]); @@ -889,40 +938,40 @@ void XmlRpcMethodTest::testChangeUri_fail() _e->getRequestGroupMan()->addReservedGroup(group); ChangeUriXmlRpcMethod m; - XmlRpcRequest req(ChangeUriXmlRpcMethod::getMethodName(), BDE::list()); - req.params << std::string("1"); // GID - req.params << 1; // index of FileEntry - BDE removeuris = BDE::list(); - req.params << removeuris; - BDE adduris = BDE::list(); - req.params << adduris; + XmlRpcRequest req(ChangeUriXmlRpcMethod::getMethodName(), List::g()); + req.params->append("1"); // GID + req.params->append(Integer::g(1)); // index of FileEntry + SharedHandle<List> removeuris = List::g(); + req.params->append(removeuris); + SharedHandle<List> adduris = List::g(); + req.params->append(adduris); XmlRpcResponse res = m.execute(req, _e.get()); CPPUNIT_ASSERT_EQUAL(0, res.code); - req.params[0] = std::string("2"); + req.params->set(0, String::g("2")); res = m.execute(req, _e.get()); // RPC request fails because GID#2 does not exist. CPPUNIT_ASSERT_EQUAL(1, res.code); - req.params[0] = std::string("1"); - req.params[1] = 4; + req.params->set(0, String::g("1")); + req.params->set(1, Integer::g(4)); res = m.execute(req, _e.get()); // RPC request fails because FileEntry#3 does not exist. CPPUNIT_ASSERT_EQUAL(1, res.code); - req.params[1] = std::string("0"); + req.params->set(1, String::g("0")); res = m.execute(req, _e.get()); // RPC request fails because index of FileEntry is string. CPPUNIT_ASSERT_EQUAL(1, res.code); - req.params[1] = 1; - req.params[2] = std::string("http://url"); + req.params->set(1, Integer::g(1)); + req.params->set(2, String::g("http://url")); res = m.execute(req, _e.get()); // RPC request fails because 3rd param is not list. CPPUNIT_ASSERT_EQUAL(1, res.code); - req.params[2] = BDE::list(); - req.params[3] = std::string("http://url"); + req.params->set(2, List::g()); + req.params->set(3, String::g("http://url")); res = m.execute(req, _e.get()); // RPC request fails because 4th param is not list. CPPUNIT_ASSERT_EQUAL(1, res.code); @@ -931,11 +980,11 @@ void XmlRpcMethodTest::testChangeUri_fail() void XmlRpcMethodTest::testGetSessionInfo() { GetSessionInfoXmlRpcMethod m; - XmlRpcRequest req(GetSessionInfoXmlRpcMethod::getMethodName(), BDE::list()); + XmlRpcRequest req(GetSessionInfoXmlRpcMethod::getMethodName(), List::g()); XmlRpcResponse res = m.execute(req, _e.get()); CPPUNIT_ASSERT_EQUAL(0, res.code); CPPUNIT_ASSERT_EQUAL(util::toHex(_e->getSessionId()), - res.param["sessionId"].s()); + getString(asDict(res.param), "sessionId")); } void XmlRpcMethodTest::testPause() @@ -953,23 +1002,23 @@ void XmlRpcMethodTest::testPause() _e->getRequestGroupMan()->addReservedGroup(groups); { PauseXmlRpcMethod m; - XmlRpcRequest req(PauseXmlRpcMethod::getMethodName(), BDE::list()); - req.params << std::string("1"); + XmlRpcRequest req(PauseXmlRpcMethod::getMethodName(), List::g()); + req.params->append("1"); XmlRpcResponse res = m.execute(req, _e.get()); CPPUNIT_ASSERT_EQUAL(0, res.code); } CPPUNIT_ASSERT(groups[0]->isPauseRequested()); { UnpauseXmlRpcMethod m; - XmlRpcRequest req(UnpauseXmlRpcMethod::getMethodName(), BDE::list()); - req.params << std::string("1"); + XmlRpcRequest req(UnpauseXmlRpcMethod::getMethodName(), List::g()); + req.params->append("1"); XmlRpcResponse res = m.execute(req, _e.get()); CPPUNIT_ASSERT_EQUAL(0, res.code); } CPPUNIT_ASSERT(!groups[0]->isPauseRequested()); { PauseAllXmlRpcMethod m; - XmlRpcRequest req(PauseAllXmlRpcMethod::getMethodName(), BDE::list()); + XmlRpcRequest req(PauseAllXmlRpcMethod::getMethodName(), List::g()); XmlRpcResponse res = m.execute(req, _e.get()); CPPUNIT_ASSERT_EQUAL(0, res.code); } @@ -978,7 +1027,7 @@ void XmlRpcMethodTest::testPause() } { UnpauseAllXmlRpcMethod m; - XmlRpcRequest req(UnpauseAllXmlRpcMethod::getMethodName(), BDE::list()); + XmlRpcRequest req(UnpauseAllXmlRpcMethod::getMethodName(), List::g()); XmlRpcResponse res = m.execute(req, _e.get()); CPPUNIT_ASSERT_EQUAL(0, res.code); } @@ -987,7 +1036,7 @@ void XmlRpcMethodTest::testPause() } { ForcePauseAllXmlRpcMethod m; - XmlRpcRequest req(ForcePauseAllXmlRpcMethod::getMethodName(), BDE::list()); + XmlRpcRequest req(ForcePauseAllXmlRpcMethod::getMethodName(), List::g()); XmlRpcResponse res = m.execute(req, _e.get()); CPPUNIT_ASSERT_EQUAL(0, res.code); } @@ -999,61 +1048,77 @@ void XmlRpcMethodTest::testPause() void XmlRpcMethodTest::testSystemMulticall() { SystemMulticallXmlRpcMethod m; - XmlRpcRequest req("system.multicall", BDE::list()); - BDE reqparams = BDE::list(); - req.params << reqparams; + XmlRpcRequest req("system.multicall", List::g()); + SharedHandle<List> reqparams = List::g(); + req.params->append(reqparams); for(int i = 0; i < 2; ++i) { - BDE dict = BDE::dict(); - dict["methodName"] = std::string(AddUriXmlRpcMethod::getMethodName()); - BDE params = BDE::list(); - params << BDE::list(); - params[0] << BDE("http://localhost/"+util::itos(i)); - dict["params"] = params; - reqparams << dict; + SharedHandle<Dict> dict = Dict::g(); + dict->put("methodName", AddUriXmlRpcMethod::getMethodName()); + SharedHandle<List> params = List::g(); + SharedHandle<List> urisParam = List::g(); + urisParam->append("http://localhost/"+util::itos(i)); + params->append(urisParam); + dict->put("params", params); + reqparams->append(dict); } { - BDE dict = BDE::dict(); - dict["methodName"] = std::string("not exists"); - dict["params"] = BDE::list(); - reqparams << dict; + SharedHandle<Dict> dict = Dict::g(); + dict->put("methodName", "not exists"); + dict->put("params", List::g()); + reqparams->append(dict); } { - reqparams << std::string("not struct"); + reqparams->append("not struct"); } { - BDE dict = BDE::dict(); - dict["methodName"] = std::string("system.multicall"); - dict["params"] = BDE::list(); - reqparams << dict; + SharedHandle<Dict> dict = Dict::g(); + dict->put("methodName", "system.multicall"); + dict->put("params", List::g()); + reqparams->append(dict); } { // missing params - BDE dict = BDE::dict(); - dict["methodName"] = std::string(GetVersionXmlRpcMethod::getMethodName()); - reqparams << dict; + SharedHandle<Dict> dict = Dict::g(); + dict->put("methodName", GetVersionXmlRpcMethod::getMethodName()); + reqparams->append(dict); } { - BDE dict = BDE::dict(); - dict["methodName"] = std::string(GetVersionXmlRpcMethod::getMethodName()); - dict["params"] = BDE::list(); - reqparams << dict; + SharedHandle<Dict> dict = Dict::g(); + dict->put("methodName", GetVersionXmlRpcMethod::getMethodName()); + dict->put("params", List::g()); + reqparams->append(dict); } XmlRpcResponse res = m.execute(req, _e.get()); CPPUNIT_ASSERT_EQUAL(0, res.code); - CPPUNIT_ASSERT_EQUAL((size_t)7, res.param.size()); - CPPUNIT_ASSERT_EQUAL(std::string("1"), res.param[0][0].s()); - CPPUNIT_ASSERT_EQUAL(std::string("2"), res.param[1][0].s()); - CPPUNIT_ASSERT_EQUAL((int64_t)1, res.param[2]["faultCode"].i()); - CPPUNIT_ASSERT_EQUAL((int64_t)1, res.param[3]["faultCode"].i()); - CPPUNIT_ASSERT_EQUAL((int64_t)1, res.param[4]["faultCode"].i()); - CPPUNIT_ASSERT_EQUAL((int64_t)1, res.param[5]["faultCode"].i()); - CPPUNIT_ASSERT(res.param[6].isList()); + const List* resParams = asList(res.param); + CPPUNIT_ASSERT_EQUAL((size_t)7, resParams->size()); + CPPUNIT_ASSERT_EQUAL(std::string("1"), + asString(asList(resParams->get(0))->get(0))->s()); + CPPUNIT_ASSERT_EQUAL(std::string("2"), + asString(asList(resParams->get(1))->get(0))->s()); + CPPUNIT_ASSERT_EQUAL((int64_t)1, + asInteger + (asDict(resParams->get(2))->get("faultCode")) + ->i()); + CPPUNIT_ASSERT_EQUAL((int64_t)1, + asInteger + (asDict(resParams->get(3))->get("faultCode")) + ->i()); + CPPUNIT_ASSERT_EQUAL((int64_t)1, + asInteger + (asDict(resParams->get(4))->get("faultCode")) + ->i()); + CPPUNIT_ASSERT_EQUAL((int64_t)1, + asInteger + (asDict(resParams->get(5))->get("faultCode")) + ->i()); + CPPUNIT_ASSERT(asList(resParams->get(6))); } void XmlRpcMethodTest::testSystemMulticall_fail() { SystemMulticallXmlRpcMethod m; - XmlRpcRequest req("system.multicall", BDE::list()); + XmlRpcRequest req("system.multicall", List::g()); XmlRpcResponse res = m.execute(req, _e.get()); CPPUNIT_ASSERT_EQUAL(1, res.code); } diff --git a/test/XmlRpcRequestParserControllerTest.cc b/test/XmlRpcRequestParserControllerTest.cc index 6595bd25..ebe2d458 100644 --- a/test/XmlRpcRequestParserControllerTest.cc +++ b/test/XmlRpcRequestParserControllerTest.cc @@ -35,59 +35,59 @@ CPPUNIT_TEST_SUITE_REGISTRATION(XmlRpcRequestParserControllerTest); void XmlRpcRequestParserControllerTest::testPopStructFrame() { XmlRpcRequestParserController controller; - controller.setCurrentFrameValue(BDE::dict()); + controller.setCurrentFrameValue(Dict::g()); controller.pushFrame(); - controller.setCurrentFrameValue(BDE("Hello, aria2")); + controller.setCurrentFrameValue(String::g("Hello, aria2")); controller.setCurrentFrameName("greeting"); controller.popStructFrame(); - const BDE& structValue = controller.getCurrentFrameValue(); - CPPUNIT_ASSERT_EQUAL((size_t)1, structValue.size()); + const Dict* structValue = asDict(controller.getCurrentFrameValue()); + CPPUNIT_ASSERT_EQUAL((size_t)1, structValue->size()); CPPUNIT_ASSERT_EQUAL(std::string("Hello, aria2"), - structValue["greeting"].s()); + asString(structValue->get("greeting"))->s()); } void XmlRpcRequestParserControllerTest::testPopStructFrame_noName() { XmlRpcRequestParserController controller; - controller.setCurrentFrameValue(BDE::dict()); + controller.setCurrentFrameValue(Dict::g()); controller.pushFrame(); - controller.setCurrentFrameValue(BDE("Hello, aria2")); + controller.setCurrentFrameValue(String::g("Hello, aria2")); controller.popStructFrame(); - const BDE& structValue = controller.getCurrentFrameValue(); - CPPUNIT_ASSERT(structValue.empty()); + const Dict* structValue = asDict(controller.getCurrentFrameValue()); + CPPUNIT_ASSERT(structValue->empty()); } void XmlRpcRequestParserControllerTest::testPopStructFrame_noValue() { XmlRpcRequestParserController controller; - controller.setCurrentFrameValue(BDE::dict()); + controller.setCurrentFrameValue(Dict::g()); controller.pushFrame(); controller.setCurrentFrameName("greeting"); controller.popStructFrame(); - const BDE& structValue = controller.getCurrentFrameValue(); - CPPUNIT_ASSERT(structValue.empty()); + const Dict* structValue = asDict(controller.getCurrentFrameValue()); + CPPUNIT_ASSERT(structValue->empty()); } void XmlRpcRequestParserControllerTest::testPopArrayFrame() { XmlRpcRequestParserController controller; - controller.setCurrentFrameValue(BDE::list()); + controller.setCurrentFrameValue(List::g()); controller.pushFrame(); - controller.setCurrentFrameValue(BDE(100)); + controller.setCurrentFrameValue(Integer::g(100)); controller.popArrayFrame(); - const BDE& array = controller.getCurrentFrameValue(); - CPPUNIT_ASSERT_EQUAL((size_t)1, array.size()); - CPPUNIT_ASSERT_EQUAL((BDE::Integer)100, array[0].i()); + const List* array = asList(controller.getCurrentFrameValue()); + CPPUNIT_ASSERT_EQUAL((size_t)1, array->size()); + CPPUNIT_ASSERT_EQUAL((Integer::ValueType)100, asInteger(array->get(0))->i()); } void XmlRpcRequestParserControllerTest::testPopArrayFrame_noValue() { XmlRpcRequestParserController controller; - controller.setCurrentFrameValue(BDE::list()); + controller.setCurrentFrameValue(List::g()); controller.pushFrame(); controller.popArrayFrame(); - const BDE& array = controller.getCurrentFrameValue(); - CPPUNIT_ASSERT(array.empty()); + const List* array = asList(controller.getCurrentFrameValue()); + CPPUNIT_ASSERT(array->empty()); } void XmlRpcRequestParserControllerTest::testPopArrayFrame_compound() @@ -100,32 +100,32 @@ void XmlRpcRequestParserControllerTest::testPopArrayFrame_compound() // "options":{ "timeout":120 } }, // [ "jp","us" ] ] - controller.setCurrentFrameValue(BDE::list()); + controller.setCurrentFrameValue(List::g()); controller.pushFrame(); - controller.setCurrentFrameValue(BDE::dict()); + controller.setCurrentFrameValue(Dict::g()); controller.pushFrame(); controller.setCurrentFrameName("uris"); - controller.setCurrentFrameValue(BDE::list()); + controller.setCurrentFrameValue(List::g()); controller.pushFrame(); - controller.setCurrentFrameValue(BDE("http://example.org/aria2")); + controller.setCurrentFrameValue(String::g("http://example.org/aria2")); controller.popArrayFrame(); controller.pushFrame(); - controller.setCurrentFrameValue(BDE("http://aria2.sf.net/")); + controller.setCurrentFrameValue(String::g("http://aria2.sf.net/")); controller.popArrayFrame(); controller.popStructFrame(); controller.pushFrame(); controller.setCurrentFrameName("options"); - controller.setCurrentFrameValue(BDE::dict()); + controller.setCurrentFrameValue(Dict::g()); controller.pushFrame(); controller.setCurrentFrameName("timeout"); - controller.setCurrentFrameValue(BDE(120)); + controller.setCurrentFrameValue(Integer::g(120)); controller.popStructFrame(); controller.popStructFrame(); @@ -133,23 +133,28 @@ void XmlRpcRequestParserControllerTest::testPopArrayFrame_compound() controller.popArrayFrame(); controller.pushFrame(); - controller.setCurrentFrameValue(BDE::list()); + controller.setCurrentFrameValue(List::g()); controller.pushFrame(); - controller.setCurrentFrameValue(BDE("jp")); + controller.setCurrentFrameValue(String::g("jp")); controller.popArrayFrame(); controller.pushFrame(); - controller.setCurrentFrameValue(BDE("us")); + controller.setCurrentFrameValue(String::g("us")); controller.popArrayFrame(); controller.popArrayFrame(); - const BDE& result = controller.getCurrentFrameValue(); + const List* result = asList(controller.getCurrentFrameValue()); + const Dict* dict = asDict(result->get(0)); + const List* uris = asList(dict->get("uris")); + const Dict* options = asDict(dict->get("options")); + const List* countryList = asList(result->get(1)); CPPUNIT_ASSERT_EQUAL(std::string("http://aria2.sf.net/"), - result[0]["uris"][1].s()); - CPPUNIT_ASSERT_EQUAL((BDE::Integer)120, result[0]["options"]["timeout"].i()); - CPPUNIT_ASSERT_EQUAL(std::string("jp"), result[1][0].s()); + asString(uris->get(1))->s()); + CPPUNIT_ASSERT_EQUAL((Integer::ValueType)120, + asInteger(options->get("timeout"))->i()); + CPPUNIT_ASSERT_EQUAL(std::string("jp"), asString(countryList->get(0))->s()); } } // namespace xmlrpc diff --git a/test/XmlRpcRequestProcessorTest.cc b/test/XmlRpcRequestProcessorTest.cc index c5545895..69956fff 100644 --- a/test/XmlRpcRequestProcessorTest.cc +++ b/test/XmlRpcRequestProcessorTest.cc @@ -3,6 +3,7 @@ #include <cppunit/extensions/HelperMacros.h> #include "XmlRpcRequestParserStateMachine.h" +#include "RecoverableException.h" namespace aria2 { @@ -65,13 +66,18 @@ void XmlRpcRequestProcessorTest::testParseMemory() "</methodCall>"); CPPUNIT_ASSERT_EQUAL(std::string("aria2.addURI"), req.methodName); - CPPUNIT_ASSERT_EQUAL((size_t)3, req.params.size()); - CPPUNIT_ASSERT_EQUAL((int64_t)100, req.params[0].i()); - CPPUNIT_ASSERT_EQUAL((int64_t)65535, req.params[1]["max-count"].i()); + CPPUNIT_ASSERT_EQUAL((size_t)3, req.params->size()); + CPPUNIT_ASSERT_EQUAL((Integer::ValueType)100, + asInteger(req.params->get(0))->i()); + const Dict* dict = asDict(req.params->get(1)); + CPPUNIT_ASSERT_EQUAL((Integer::ValueType)65535, + asInteger(dict->get("max-count"))->i()); // Current implementation handles double as string. - CPPUNIT_ASSERT_EQUAL(std::string("0.99"), req.params[1]["seed-ratio"].s()); - CPPUNIT_ASSERT_EQUAL(std::string("pudding"), req.params[2][0].s()); - CPPUNIT_ASSERT_EQUAL(std::string("hello world"), req.params[2][1].s()); + CPPUNIT_ASSERT_EQUAL(std::string("0.99"), + asString(dict->get("seed-ratio"))->s()); + const List* list = asList(req.params->get(2)); + CPPUNIT_ASSERT_EQUAL(std::string("pudding"), asString(list->get(0))->s()); + CPPUNIT_ASSERT_EQUAL(std::string("hello world"), asString(list->get(1))->s()); } void XmlRpcRequestProcessorTest::testParseMemory_shouldFail() @@ -88,6 +94,24 @@ void XmlRpcRequestProcessorTest::testParseMemory_shouldFail() } catch(RecoverableException& e) { // success } + { + XmlRpcRequest req = + proc.parseMemory("<methodCall>" + " <methodName>aria2.addURI</methodName>" + " <params>" + " </params>" + "</methodCall>"); + CPPUNIT_ASSERT(!req.params.isNull()); + } + try { + XmlRpcRequest req = + proc.parseMemory("<methodCall>" + " <methodName>aria2.addURI</methodName>" + "</methodCall>"); + CPPUNIT_FAIL("exception must be thrown."); + } catch(RecoverableException& e) { + // success + } } } // namespace xmlrpc |
