PeerListProcessorTest.cc 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. #include "PeerListProcessor.h"
  2. #include <cstdlib>
  3. #include <cppunit/extensions/HelperMacros.h>
  4. #include "Exception.h"
  5. #include "Peer.h"
  6. #include "bencode.h"
  7. #include "TimeA2.h"
  8. namespace aria2 {
  9. class PeerListProcessorTest:public CppUnit::TestFixture {
  10. CPPUNIT_TEST_SUITE(PeerListProcessorTest);
  11. CPPUNIT_TEST(testExtractPeerFromList);
  12. CPPUNIT_TEST(testExtract2PeersFromList);
  13. CPPUNIT_TEST_SUITE_END();
  14. private:
  15. public:
  16. void setUp() {
  17. }
  18. void testExtractPeerFromList();
  19. void testExtract2PeersFromList();
  20. };
  21. CPPUNIT_TEST_SUITE_REGISTRATION( PeerListProcessorTest );
  22. void PeerListProcessorTest::testExtractPeerFromList() {
  23. PeerListProcessor proc;
  24. std::string peersString =
  25. "d5:peersld2:ip11:192.168.0.17:peer id20:aria2-00000000000000"
  26. "4:porti2006eeee";
  27. const BDE dict = bencode::decode(peersString);
  28. std::deque<SharedHandle<Peer> > peers;
  29. proc.extractPeerFromList(dict["peers"], std::back_inserter(peers));
  30. CPPUNIT_ASSERT_EQUAL((size_t)1, peers.size());
  31. SharedHandle<Peer> peer = *peers.begin();
  32. CPPUNIT_ASSERT_EQUAL(std::string("192.168.0.1"), peer->getIPAddress());
  33. CPPUNIT_ASSERT_EQUAL((uint16_t)2006, peer->getPort());
  34. }
  35. void PeerListProcessorTest::testExtract2PeersFromList() {
  36. PeerListProcessor proc;
  37. std::string peersString =
  38. "d5:peersld2:ip11:192.168.0.17:peer id20:aria2-00000000000000"
  39. "4:porti65535eed2:ip11:192.168.0.27:peer id20:aria2-00000000000000"
  40. "4:porti2007eeee";
  41. const BDE dict = bencode::decode(peersString);
  42. std::deque<SharedHandle<Peer> > peers;
  43. proc.extractPeerFromList(dict["peers"], std::back_inserter(peers));
  44. CPPUNIT_ASSERT_EQUAL((size_t)2, peers.size());
  45. SharedHandle<Peer> peer = *peers.begin();
  46. CPPUNIT_ASSERT_EQUAL(std::string("192.168.0.1"), peer->getIPAddress());
  47. CPPUNIT_ASSERT_EQUAL((uint16_t)65535, peer->getPort());
  48. peer = *(peers.begin()+1);
  49. CPPUNIT_ASSERT_EQUAL(std::string("192.168.0.2"), peer->getIPAddress());
  50. CPPUNIT_ASSERT_EQUAL((uint16_t)2007, peer->getPort());
  51. }
  52. } // namespace aria2