XmlRpcRequestProcessorTest.cc 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. #include "XmlRpcRequestProcessor.h"
  2. #include <cppunit/extensions/HelperMacros.h>
  3. #include "XmlRpcRequestParserStateMachine.h"
  4. namespace aria2 {
  5. namespace xmlrpc {
  6. class XmlRpcRequestProcessorTest:public CppUnit::TestFixture {
  7. CPPUNIT_TEST_SUITE(XmlRpcRequestProcessorTest);
  8. CPPUNIT_TEST(testParseMemory);
  9. CPPUNIT_TEST_SUITE_END();
  10. public:
  11. void setUp() {}
  12. void tearDown() {}
  13. void testParseMemory();
  14. };
  15. CPPUNIT_TEST_SUITE_REGISTRATION(XmlRpcRequestProcessorTest);
  16. void XmlRpcRequestProcessorTest::testParseMemory()
  17. {
  18. XmlRpcRequestProcessor proc;
  19. XmlRpcRequest req =
  20. proc.parseMemory("<?xml version=\"1.0\"?>"
  21. "<methodCall>"
  22. " <methodName>aria2.addURI</methodName>"
  23. " <params>"
  24. " <param>"
  25. " <value><i4>100</i4></value>"
  26. " </param>"
  27. " <param>"
  28. " <value>"
  29. " <struct>"
  30. " <member>"
  31. " <name>max-count</name>"
  32. " <value><i4>65535</i4></value>"
  33. " </member>"
  34. " <member>"
  35. " <name>seed-ratio</name>"
  36. " <value><double>0.99</double></value>"
  37. " </member>"
  38. " </struct>"
  39. " </value>"
  40. " </param>"
  41. " <param>"
  42. " <value>"
  43. " <array>"
  44. " <data>"
  45. " <value><string>pudding</string></value>"
  46. " <value><base64>aGVsbG8gd29ybGQ=</base64></value>"
  47. " </data>"
  48. " </array>"
  49. " </value>"
  50. " </param>"
  51. " </params>"
  52. "</methodCall>");
  53. CPPUNIT_ASSERT_EQUAL(std::string("aria2.addURI"), req._methodName);
  54. CPPUNIT_ASSERT_EQUAL((size_t)3, req._params.size());
  55. CPPUNIT_ASSERT_EQUAL((int64_t)100, req._params[0].i());
  56. CPPUNIT_ASSERT_EQUAL((int64_t)65535, req._params[1]["max-count"].i());
  57. // Current implementation handles double as string.
  58. CPPUNIT_ASSERT_EQUAL(std::string("0.99"), req._params[1]["seed-ratio"].s());
  59. CPPUNIT_ASSERT_EQUAL(std::string("pudding"), req._params[2][0].s());
  60. CPPUNIT_ASSERT_EQUAL(std::string("hello world"), req._params[2][1].s());
  61. }
  62. } // namespace xmlrpc
  63. } // namespace aria2