UTMetadataRequestFactoryTest.cc 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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. const std::vector<size_t>& exlucdedIndexes)
  26. {
  27. if(missingIndexes.empty()) {
  28. return SharedHandle<Piece>();
  29. } else {
  30. size_t index = missingIndexes.front();
  31. missingIndexes.pop_front();
  32. return SharedHandle<Piece>(new Piece(index, 0));
  33. }
  34. }
  35. };
  36. };
  37. CPPUNIT_TEST_SUITE_REGISTRATION(UTMetadataRequestFactoryTest);
  38. void UTMetadataRequestFactoryTest::testCreate()
  39. {
  40. UTMetadataRequestFactory factory;
  41. SharedHandle<DownloadContext> dctx
  42. (new DownloadContext(METADATA_PIECE_SIZE, METADATA_PIECE_SIZE*2));
  43. factory.setDownloadContext(dctx);
  44. SharedHandle<MockPieceStorage2> ps(new MockPieceStorage2());
  45. ps->missingIndexes.push_back(0);
  46. ps->missingIndexes.push_back(1);
  47. SharedHandle<WrapExtBtMessageFactory> messageFactory
  48. (new WrapExtBtMessageFactory());
  49. factory.setBtMessageFactory(messageFactory);
  50. SharedHandle<Peer> peer(new Peer("peer", 6880));
  51. peer->allocateSessionResource(0, 0);
  52. factory.setPeer(peer);
  53. SharedHandle<UTMetadataRequestTracker> tracker
  54. (new UTMetadataRequestTracker());
  55. factory.setUTMetadataRequestTracker(tracker);
  56. std::vector<SharedHandle<BtMessage> > msgs;
  57. factory.create(msgs, 1, ps);
  58. CPPUNIT_ASSERT_EQUAL((size_t)1, msgs.size());
  59. factory.create(msgs, 1, ps);
  60. CPPUNIT_ASSERT_EQUAL((size_t)2, msgs.size());
  61. factory.create(msgs, 1, ps);
  62. CPPUNIT_ASSERT_EQUAL((size_t)2, msgs.size());
  63. }
  64. } // namespace aria2