PeerMessageUtilTest.cc 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #include "common.h"
  2. #include "PeerMessageUtil.h"
  3. #include "a2netcompat.h"
  4. #include <cstring>
  5. #include <cppunit/extensions/HelperMacros.h>
  6. namespace aria2 {
  7. class PeerMessageUtilTest:public CppUnit::TestFixture {
  8. CPPUNIT_TEST_SUITE(PeerMessageUtilTest);
  9. CPPUNIT_TEST(testCreateCompact);
  10. CPPUNIT_TEST_SUITE_END();
  11. private:
  12. public:
  13. void setUp() {
  14. }
  15. void testCreateCompact();
  16. };
  17. CPPUNIT_TEST_SUITE_REGISTRATION( PeerMessageUtilTest );
  18. void setIntParam(char* dest, int param) {
  19. int nParam = htonl(param);
  20. memcpy(dest, &nParam, 4);
  21. }
  22. void setShortIntParam(char* dest, int param) {
  23. short int nParam = htons(param);
  24. memcpy(dest, &nParam, 2);
  25. }
  26. void createNLengthMessage(char* msg, int msgLen, int payloadLen, int id) {
  27. memset(msg, 0, msgLen);
  28. setIntParam(msg, payloadLen);
  29. msg[4] = (char)id;
  30. }
  31. void PeerMessageUtilTest::testCreateCompact()
  32. {
  33. unsigned char compact[6];
  34. // Note: PeerMessageUtil::createcompact() on linux can handle IPv4-mapped
  35. // addresses like `ffff::127.0.0.1', but on cygwin, it doesn't.
  36. CPPUNIT_ASSERT(PeerMessageUtil::createcompact(compact, "127.0.0.1", 6881));
  37. std::pair<std::string, uint16_t> p = PeerMessageUtil::unpackcompact(compact);
  38. CPPUNIT_ASSERT_EQUAL(std::string("127.0.0.1"), p.first);
  39. CPPUNIT_ASSERT_EQUAL((uint16_t)6881, p.second);
  40. }
  41. } // namespace aria2