BtAllowedFastMessageTest.cc 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. #include "BtAllowedFastMessage.h"
  2. #include "PeerMessageUtil.h"
  3. #include "Util.h"
  4. #include <cppunit/extensions/HelperMacros.h>
  5. using namespace std;
  6. class BtAllowedFastMessageTest:public CppUnit::TestFixture {
  7. CPPUNIT_TEST_SUITE(BtAllowedFastMessageTest);
  8. CPPUNIT_TEST(testCreate);
  9. CPPUNIT_TEST(testGetMessage);
  10. CPPUNIT_TEST(testDoReceivedAction);
  11. CPPUNIT_TEST(testOnSendComplete);
  12. CPPUNIT_TEST(testToString);
  13. CPPUNIT_TEST_SUITE_END();
  14. private:
  15. public:
  16. void setUp() {
  17. }
  18. void testCreate();
  19. void testGetMessage();
  20. void testDoReceivedAction();
  21. void testOnSendComplete();
  22. void testToString();
  23. };
  24. CPPUNIT_TEST_SUITE_REGISTRATION(BtAllowedFastMessageTest);
  25. void BtAllowedFastMessageTest::testCreate() {
  26. unsigned char msg[9];
  27. PeerMessageUtil::createPeerMessageString(msg, sizeof(msg), 5, 17);
  28. PeerMessageUtil::setIntParam(&msg[5], 12345);
  29. BtAllowedFastMessageHandle pm = BtAllowedFastMessage::create(&msg[4], 5);
  30. CPPUNIT_ASSERT_EQUAL((uint8_t)17, pm->getId());
  31. CPPUNIT_ASSERT_EQUAL(12345, pm->getIndex());
  32. // case: payload size is wrong
  33. try {
  34. unsigned char msg[10];
  35. PeerMessageUtil::createPeerMessageString(msg, sizeof(msg), 6, 17);
  36. BtAllowedFastMessage::create(&msg[4], 6);
  37. CPPUNIT_FAIL("exception must be threw.");
  38. } catch(...) {
  39. }
  40. // case: id is wrong
  41. try {
  42. unsigned char msg[9];
  43. PeerMessageUtil::createPeerMessageString(msg, sizeof(msg), 5, 18);
  44. BtAllowedFastMessage::create(&msg[4], 5);
  45. CPPUNIT_FAIL("exception must be threw.");
  46. } catch(...) {
  47. }
  48. }
  49. void BtAllowedFastMessageTest::testGetMessage() {
  50. BtAllowedFastMessage msg;
  51. msg.setIndex(12345);
  52. unsigned char data[9];
  53. PeerMessageUtil::createPeerMessageString(data, sizeof(data), 5, 17);
  54. PeerMessageUtil::setIntParam(&data[5], 12345);
  55. CPPUNIT_ASSERT(memcmp(msg.getMessage(), data, 9) == 0);
  56. }
  57. void BtAllowedFastMessageTest::testDoReceivedAction() {
  58. BtAllowedFastMessage msg;
  59. msg.setIndex(1);
  60. PeerHandle peer = new Peer("localhost", 6969, 16*1024, 256*1024*1024);
  61. peer->setFastExtensionEnabled(true);
  62. msg.setPeer(peer);
  63. CPPUNIT_ASSERT(!peer->isInPeerAllowedIndexSet(1));
  64. msg.doReceivedAction();
  65. CPPUNIT_ASSERT(peer->isInPeerAllowedIndexSet(1));
  66. peer->setFastExtensionEnabled(false);
  67. try {
  68. msg.doReceivedAction();
  69. CPPUNIT_FAIL("exception must be threw.");
  70. } catch(...) {}
  71. }
  72. void BtAllowedFastMessageTest::testOnSendComplete() {
  73. BtAllowedFastMessage msg;
  74. msg.setIndex(1);
  75. PeerHandle peer = new Peer("localhost", 6969, 16*1024, 256*1024*1024);
  76. peer->setFastExtensionEnabled(true);
  77. msg.setPeer(peer);
  78. CPPUNIT_ASSERT(!peer->isInAmAllowedIndexSet(1));
  79. msg.onSendComplete();
  80. CPPUNIT_ASSERT(peer->isInAmAllowedIndexSet(1));
  81. }
  82. void BtAllowedFastMessageTest::testToString() {
  83. BtAllowedFastMessage msg;
  84. msg.setIndex(1);
  85. CPPUNIT_ASSERT_EQUAL(string("allowed fast index=1"), msg.toString());
  86. }