UTMetadataRequestFactoryTest.cc 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. #include "UTMetadataRequestFactory.h"
  2. #include <vector>
  3. #include <deque>
  4. #include <cppunit/extensions/HelperMacros.h>
  5. #include "MockPieceStorage.h"
  6. #include "DownloadContext.h"
  7. #include "Peer.h"
  8. #include "BtMessage.h"
  9. #include "extension_message_test_helper.h"
  10. #include "BtHandshakeMessage.h"
  11. #include "ExtensionMessage.h"
  12. #include "UTMetadataRequestTracker.h"
  13. namespace aria2 {
  14. class UTMetadataRequestFactoryTest:public CppUnit::TestFixture {
  15. CPPUNIT_TEST_SUITE(UTMetadataRequestFactoryTest);
  16. CPPUNIT_TEST(testCreate);
  17. CPPUNIT_TEST_SUITE_END();
  18. public:
  19. void testCreate();
  20. class MockPieceStorage2:public MockPieceStorage {
  21. public:
  22. std::deque<size_t> missingIndexes;
  23. virtual SharedHandle<Piece> getMissingPiece
  24. (const SharedHandle<Peer>& peer)
  25. {
  26. if(missingIndexes.empty()) {
  27. return SharedHandle<Piece>();
  28. } else {
  29. size_t index = missingIndexes.front();
  30. missingIndexes.pop_front();
  31. return SharedHandle<Piece>(new Piece(index, 0));
  32. }
  33. }
  34. };
  35. };
  36. CPPUNIT_TEST_SUITE_REGISTRATION(UTMetadataRequestFactoryTest);
  37. void UTMetadataRequestFactoryTest::testCreate()
  38. {
  39. UTMetadataRequestFactory factory;
  40. SharedHandle<DownloadContext> dctx
  41. (new DownloadContext(METADATA_PIECE_SIZE, METADATA_PIECE_SIZE*2));
  42. factory.setDownloadContext(dctx);
  43. SharedHandle<MockPieceStorage2> ps(new MockPieceStorage2());
  44. ps->missingIndexes.push_back(0);
  45. ps->missingIndexes.push_back(1);
  46. SharedHandle<WrapExtBtMessageFactory> messageFactory
  47. (new WrapExtBtMessageFactory());
  48. factory.setBtMessageFactory(messageFactory);
  49. SharedHandle<Peer> peer(new Peer("peer", 6880));
  50. peer->allocateSessionResource(0, 0);
  51. factory.setPeer(peer);
  52. SharedHandle<UTMetadataRequestTracker> tracker
  53. (new UTMetadataRequestTracker());
  54. factory.setUTMetadataRequestTracker(tracker);
  55. std::vector<SharedHandle<BtMessage> > msgs;
  56. factory.create(msgs, 1, ps);
  57. CPPUNIT_ASSERT_EQUAL((size_t)1, msgs.size());
  58. factory.create(msgs, 1, ps);
  59. CPPUNIT_ASSERT_EQUAL((size_t)2, msgs.size());
  60. factory.create(msgs, 1, ps);
  61. CPPUNIT_ASSERT_EQUAL((size_t)2, msgs.size());
  62. }
  63. } // namespace aria2