MagnetTest.cc 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #include "magnet.h"
  2. #include <iostream>
  3. #include <cppunit/extensions/HelperMacros.h>
  4. namespace aria2 {
  5. namespace magnet {
  6. class MagnetTest:public CppUnit::TestFixture {
  7. CPPUNIT_TEST_SUITE(MagnetTest);
  8. CPPUNIT_TEST(testParse);
  9. CPPUNIT_TEST_SUITE_END();
  10. public:
  11. void testParse();
  12. };
  13. CPPUNIT_TEST_SUITE_REGISTRATION(MagnetTest);
  14. namespace {
  15. const std::string& nthStr(const SharedHandle<ValueBase>& v, size_t index)
  16. {
  17. return asString(asList(v)->get(index))->s();
  18. }
  19. } // namespace
  20. void MagnetTest::testParse()
  21. {
  22. SharedHandle<Dict> r = parse
  23. ("magnet:?xt=urn:btih:248d0a1cd08284299de78d5c1ed359bb46717d8c&dn=aria2"
  24. "&tr=http%3A%2F%2Ftracker1&tr=http://tracker2");
  25. CPPUNIT_ASSERT_EQUAL
  26. (std::string("urn:btih:248d0a1cd08284299de78d5c1ed359bb46717d8c"),
  27. nthStr(r->get("xt"), 0));
  28. CPPUNIT_ASSERT_EQUAL(std::string("aria2"), nthStr(r->get("dn"), 0));
  29. CPPUNIT_ASSERT_EQUAL(std::string("http://tracker1"), nthStr(r->get("tr"), 0));
  30. CPPUNIT_ASSERT_EQUAL(std::string("http://tracker2"), nthStr(r->get("tr"), 1));
  31. CPPUNIT_ASSERT(!parse("http://localhost"));
  32. }
  33. } // namespace magnet
  34. } // namespace aria2