UTMetadataRequestFactoryTest.cc 2.0 KB

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