UTMetadataRequestFactoryTest.cc 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  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::set<size_t> missingIndexes;
  23. virtual SharedHandle<Piece> getMissingPiece(size_t index)
  24. {
  25. if(missingIndexes.find(index) != missingIndexes.end()) {
  26. return SharedHandle<Piece>(new Piece(index, 0));
  27. } else {
  28. return SharedHandle<Piece>();
  29. }
  30. }
  31. };
  32. };
  33. CPPUNIT_TEST_SUITE_REGISTRATION(UTMetadataRequestFactoryTest);
  34. void UTMetadataRequestFactoryTest::testCreate()
  35. {
  36. UTMetadataRequestFactory factory;
  37. SharedHandle<DownloadContext> dctx
  38. (new DownloadContext(METADATA_PIECE_SIZE, METADATA_PIECE_SIZE*2));
  39. factory.setDownloadContext(dctx);
  40. SharedHandle<MockPieceStorage2> ps(new MockPieceStorage2());
  41. ps->missingIndexes.insert(0);
  42. ps->missingIndexes.insert(1);
  43. SharedHandle<WrapExtBtMessageFactory> messageFactory
  44. (new WrapExtBtMessageFactory());
  45. factory.setBtMessageFactory(messageFactory);
  46. SharedHandle<Peer> peer(new Peer("peer", 6880));
  47. peer->allocateSessionResource(0, 0);
  48. factory.setPeer(peer);
  49. SharedHandle<UTMetadataRequestTracker> tracker
  50. (new UTMetadataRequestTracker());
  51. factory.setUTMetadataRequestTracker(tracker);
  52. std::deque<SharedHandle<BtMessage> > msgs;
  53. factory.create(msgs, 1, ps);
  54. CPPUNIT_ASSERT_EQUAL((size_t)1, msgs.size());
  55. msgs.clear();
  56. ps->missingIndexes.clear();
  57. factory.create(msgs, 1, ps);
  58. CPPUNIT_ASSERT_EQUAL((size_t)0, msgs.size());
  59. }
  60. } // namespace aria2