diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2011-04-22 23:02:28 +0900 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2011-04-22 23:02:28 +0900 |
| commit | 211c4ea9f45db6482f76ccc9945ee19fc78f7e9d (patch) | |
| tree | f3e637f9f0af186e8114b95258d9e37d7c766b51 /test | |
| parent | 6ee58e28729f7332c353ea89271eb1e75e5bf0a4 (diff) | |
If no data type tag is used in XML-RPC, treat the data as string.
Diffstat (limited to 'test')
| -rw-r--r-- | test/XmlRpcRequestProcessorTest.cc | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/test/XmlRpcRequestProcessorTest.cc b/test/XmlRpcRequestProcessorTest.cc index c0f724e7..33c87984 100644 --- a/test/XmlRpcRequestProcessorTest.cc +++ b/test/XmlRpcRequestProcessorTest.cc @@ -14,6 +14,7 @@ class XmlRpcRequestProcessorTest:public CppUnit::TestFixture { CPPUNIT_TEST_SUITE(XmlRpcRequestProcessorTest); CPPUNIT_TEST(testParseMemory); CPPUNIT_TEST(testParseMemory_shouldFail); + CPPUNIT_TEST(testParseMemory_withoutStringTag); CPPUNIT_TEST_SUITE_END(); public: void setUp() {} @@ -22,6 +23,7 @@ public: void testParseMemory(); void testParseMemory_shouldFail(); + void testParseMemory_withoutStringTag(); }; @@ -114,6 +116,58 @@ void XmlRpcRequestProcessorTest::testParseMemory_shouldFail() } } +void XmlRpcRequestProcessorTest::testParseMemory_withoutStringTag() +{ + XmlRpcRequestProcessor proc; + RpcRequest req = + proc.parseMemory("<?xml version=\"1.0\"?>" + "<methodCall>" + " <methodName>aria2.addUri</methodName>" + " <params>" + " <param>" + " <value>http://aria2.sourceforge.net</value>" + " </param>" + " <param>" + " <value>http://aria2.<foo/>sourceforge.net</value>" + " </param>" + " <param>" + " <value>" + " <struct>" + " <member>" + " <name>hello</name>" + " <value>world</value>" + " </member>" + " </struct>" + " </value>" + " </param>" + " <param>" + " <value>" + " <array>" + " <data>" + " <value>apple</value>" + " <value>banana</value>" + " <value><string>lemon</string>peanuts</value>" + " </data>" + " </array>" + " </value>" + " </param>" + " </params>" + "</methodCall>"); + + CPPUNIT_ASSERT_EQUAL((size_t)4, req.params->size()); + CPPUNIT_ASSERT_EQUAL(std::string("http://aria2.sourceforge.net"), + asString(req.params->get(0))->s()); + CPPUNIT_ASSERT_EQUAL(std::string("http://aria2.sourceforge.net"), + asString(req.params->get(1))->s()); + const Dict* dict = asDict(req.params->get(2)); + CPPUNIT_ASSERT_EQUAL(std::string("world"), + asString(dict->get("hello"))->s()); + const List* list = asList(req.params->get(3)); + CPPUNIT_ASSERT_EQUAL(std::string("apple"), asString(list->get(0))->s()); + CPPUNIT_ASSERT_EQUAL(std::string("banana"), asString(list->get(1))->s()); + CPPUNIT_ASSERT_EQUAL(std::string("lemon"), asString(list->get(2))->s()); +} + } // namespace rpc } // namespace aria2 |
