BtHaveAllMessageTest.cc 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  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 threw.");
  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 threw.");
  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, 16*1024, 256*1024);
  51. peer->setFastExtensionEnabled(true);
  52. msg.setPeer(peer);
  53. msg.doReceivedAction();
  54. CPPUNIT_ASSERT(peer->isSeeder());
  55. peer->setFastExtensionEnabled(false);
  56. try {
  57. msg.doReceivedAction();
  58. CPPUNIT_FAIL("exception must be threw.");
  59. } catch(...) {}
  60. }