BtHaveAllMessageTest.cc 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. #include "BtHaveAllMessage.h"
  2. #include "PeerMessageUtil.h"
  3. #include <cppunit/extensions/HelperMacros.h>
  4. using namespace std;
  5. class BtHaveAllMessageTest:public CppUnit::TestFixture {
  6. CPPUNIT_TEST_SUITE(BtHaveAllMessageTest);
  7. CPPUNIT_TEST(testCreate);
  8. CPPUNIT_TEST(testGetMessage);
  9. CPPUNIT_TEST(testDoReceivedAction);
  10. CPPUNIT_TEST_SUITE_END();
  11. private:
  12. public:
  13. void setUp() {
  14. }
  15. void testCreate();
  16. void testGetMessage();
  17. void testDoReceivedAction();
  18. };
  19. CPPUNIT_TEST_SUITE_REGISTRATION(BtHaveAllMessageTest);
  20. void BtHaveAllMessageTest::testCreate() {
  21. unsigned char msg[5];
  22. PeerMessageUtil::createPeerMessageString(msg, sizeof(msg), 1, 14);
  23. BtHaveAllMessageHandle pm = BtHaveAllMessage::create(&msg[4], 1);
  24. CPPUNIT_ASSERT_EQUAL((int8_t)14, pm->getId());
  25. // case: payload size is wrong
  26. try {
  27. unsigned char msg[6];
  28. PeerMessageUtil::createPeerMessageString(msg, sizeof(msg), 2, 14);
  29. BtHaveAllMessage::create(&msg[4], 2);
  30. CPPUNIT_FAIL("exception must be thrown.");
  31. } catch(...) {
  32. }
  33. // case: id is wrong
  34. try {
  35. unsigned char msg[5];
  36. PeerMessageUtil::createPeerMessageString(msg, sizeof(msg), 1, 15);
  37. BtHaveAllMessage::create(&msg[4], 1);
  38. CPPUNIT_FAIL("exception must be thrown.");
  39. } catch(...) {
  40. }
  41. }
  42. void BtHaveAllMessageTest::testGetMessage() {
  43. BtHaveAllMessage msg;
  44. unsigned char data[5];
  45. PeerMessageUtil::createPeerMessageString(data, sizeof(data), 1, 14);
  46. CPPUNIT_ASSERT(memcmp(msg.getMessage(), data, 5) == 0);
  47. }
  48. void BtHaveAllMessageTest::testDoReceivedAction() {
  49. BtHaveAllMessage msg;
  50. PeerHandle peer = new Peer("host", 6969);
  51. peer->allocateBitfield(16*1024, 256*1024);
  52. peer->setFastExtensionEnabled(true);
  53. msg.setPeer(peer);
  54. msg.doReceivedAction();
  55. CPPUNIT_ASSERT(peer->isSeeder());
  56. peer->setFastExtensionEnabled(false);
  57. try {
  58. msg.doReceivedAction();
  59. CPPUNIT_FAIL("exception must be thrown.");
  60. } catch(...) {}
  61. }