PieceMessageTest.cc 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. #include "PieceMessage.h"
  2. #include "PeerMessageUtil.h"
  3. #include <cppunit/extensions/HelperMacros.h>
  4. using namespace std;
  5. class PieceMessageTest:public CppUnit::TestFixture {
  6. CPPUNIT_TEST_SUITE(PieceMessageTest);
  7. CPPUNIT_TEST(testCreate);
  8. CPPUNIT_TEST(testGetMessageHeader);
  9. CPPUNIT_TEST_SUITE_END();
  10. private:
  11. public:
  12. void setUp() {
  13. }
  14. void testCreate();
  15. void testGetMessageHeader();
  16. };
  17. CPPUNIT_TEST_SUITE_REGISTRATION(PieceMessageTest);
  18. void PieceMessageTest::testCreate() {
  19. char msg[13+2];
  20. char data[2];
  21. memset(data, 0xff, sizeof(data));
  22. PeerMessageUtil::createPeerMessageString(msg, sizeof(msg), 11, 7);
  23. PeerMessageUtil::setIntParam(&msg[5], 12345);
  24. PeerMessageUtil::setIntParam(&msg[9], 256);
  25. memcpy(&msg[13], data, sizeof(data));
  26. PieceMessage* pm = PieceMessage::create(&msg[4], 11);
  27. CPPUNIT_ASSERT_EQUAL(7, pm->getId());
  28. CPPUNIT_ASSERT_EQUAL(12345, pm->getIndex());
  29. CPPUNIT_ASSERT_EQUAL(256, pm->getBegin());
  30. CPPUNIT_ASSERT(memcmp(data, pm->getBlock(), sizeof(data)) == 0);
  31. CPPUNIT_ASSERT_EQUAL(2, pm->getBlockLength());
  32. // case: payload size is wrong
  33. try {
  34. char msg[13];
  35. PeerMessageUtil::createPeerMessageString(msg, sizeof(msg), 9, 7);
  36. PieceMessage::create(&msg[4], 9);
  37. CPPUNIT_FAIL("exception must be threw.");
  38. } catch(...) {
  39. }
  40. // case: id is wrong
  41. try {
  42. char msg[13+2];
  43. PeerMessageUtil::createPeerMessageString(msg, sizeof(msg), 11, 8);
  44. PieceMessage::create(&msg[4], 11);
  45. CPPUNIT_FAIL("exception must be threw.");
  46. } catch(...) {
  47. }
  48. }
  49. void PieceMessageTest::testGetMessageHeader() {
  50. PieceMessage msg;
  51. msg.setIndex(12345);
  52. msg.setBegin(256);
  53. msg.setBlockLength(1024);
  54. char data[13];
  55. PeerMessageUtil::createPeerMessageString(data, sizeof(data), 9+1024, 7);
  56. PeerMessageUtil::setIntParam(&data[5], 12345);
  57. PeerMessageUtil::setIntParam(&data[9], 256);
  58. CPPUNIT_ASSERT(memcmp(msg.getMessageHeader(), data, 13) == 0);
  59. }