BtSuggestPieceMessageTest.cc 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. #include "BtSuggestPieceMessage.h"
  2. #include "PeerMessageUtil.h"
  3. #include <cppunit/extensions/HelperMacros.h>
  4. using namespace std;
  5. class BtSuggestPieceMessageTest:public CppUnit::TestFixture {
  6. CPPUNIT_TEST_SUITE(BtSuggestPieceMessageTest);
  7. CPPUNIT_TEST(testCreate);
  8. CPPUNIT_TEST(testGetMessage);
  9. CPPUNIT_TEST(testToString);
  10. CPPUNIT_TEST_SUITE_END();
  11. private:
  12. public:
  13. void setUp() {
  14. }
  15. void testCreate();
  16. void testGetMessage();
  17. void testToString();
  18. };
  19. CPPUNIT_TEST_SUITE_REGISTRATION(BtSuggestPieceMessageTest);
  20. void BtSuggestPieceMessageTest::testCreate() {
  21. unsigned char msg[9];
  22. PeerMessageUtil::createPeerMessageString(msg, sizeof(msg), 5, 13);
  23. PeerMessageUtil::setIntParam(&msg[5], 12345);
  24. BtSuggestPieceMessageHandle pm = BtSuggestPieceMessage::create(&msg[4], 5);
  25. CPPUNIT_ASSERT_EQUAL((int8_t)13, pm->getId());
  26. CPPUNIT_ASSERT_EQUAL((int32_t)12345, pm->getIndex());
  27. // case: payload size is wrong
  28. try {
  29. unsigned char msg[10];
  30. PeerMessageUtil::createPeerMessageString(msg, sizeof(msg), 6, 13);
  31. BtSuggestPieceMessage::create(&msg[4], 2);
  32. CPPUNIT_FAIL("exception must be thrown.");
  33. } catch(...) {
  34. }
  35. // case: id is wrong
  36. try {
  37. unsigned char msg[9];
  38. PeerMessageUtil::createPeerMessageString(msg, sizeof(msg), 5, 14);
  39. BtSuggestPieceMessage::create(&msg[4], 1);
  40. CPPUNIT_FAIL("exception must be thrown.");
  41. } catch(...) {
  42. }
  43. }
  44. void BtSuggestPieceMessageTest::testGetMessage() {
  45. BtSuggestPieceMessage msg;
  46. msg.setIndex(12345);
  47. unsigned char data[9];
  48. PeerMessageUtil::createPeerMessageString(data, sizeof(data), 5, 13);
  49. PeerMessageUtil::setIntParam(&data[5], 12345);
  50. CPPUNIT_ASSERT(memcmp(msg.getMessage(), data, 9) == 0);
  51. }
  52. void BtSuggestPieceMessageTest::testToString() {
  53. BtSuggestPieceMessage msg;
  54. msg.setIndex(12345);
  55. CPPUNIT_ASSERT_EQUAL(string("suggest piece index=12345"),
  56. msg.toString());
  57. }