DHTIDCloserTest.cc 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. #include "DHTIDCloser.h"
  2. #include <cstring>
  3. #include <algorithm>
  4. #include <cppunit/extensions/HelperMacros.h>
  5. #include "DHTNode.h"
  6. #include "DHTNodeLookupEntry.h"
  7. #include "Exception.h"
  8. #include "util.h"
  9. namespace aria2 {
  10. class DHTIDCloserTest:public CppUnit::TestFixture {
  11. CPPUNIT_TEST_SUITE(DHTIDCloserTest);
  12. CPPUNIT_TEST(testOperator);
  13. CPPUNIT_TEST_SUITE_END();
  14. public:
  15. void setUp() {}
  16. void tearDown() {}
  17. void testOperator();
  18. };
  19. CPPUNIT_TEST_SUITE_REGISTRATION(DHTIDCloserTest);
  20. void DHTIDCloserTest::testOperator()
  21. {
  22. unsigned char id[DHT_ID_LENGTH];
  23. memset(id, 0xf0, DHT_ID_LENGTH);
  24. auto e1 = make_unique<DHTNodeLookupEntry>(std::make_shared<DHTNode>(id));
  25. auto ep1 = e1.get();
  26. id[0] = 0xb0;
  27. auto e2 = make_unique<DHTNodeLookupEntry>(std::make_shared<DHTNode>(id));
  28. auto ep2 = e2.get();
  29. id[0] = 0xa0;
  30. auto e3 = make_unique<DHTNodeLookupEntry>(std::make_shared<DHTNode>(id));
  31. auto ep3 = e3.get();
  32. id[0] = 0x80;
  33. auto e4 = make_unique<DHTNodeLookupEntry>(std::make_shared<DHTNode>(id));
  34. auto ep4 = e4.get();
  35. id[0] = 0x00;
  36. auto e5 = make_unique<DHTNodeLookupEntry>(std::make_shared<DHTNode>(id));
  37. auto ep5 = e5.get();
  38. auto entries = std::vector<std::unique_ptr<DHTNodeLookupEntry>>{};
  39. entries.push_back(std::move(e1));
  40. entries.push_back(std::move(e2));
  41. entries.push_back(std::move(e3));
  42. entries.push_back(std::move(e4));
  43. entries.push_back(std::move(e5));
  44. std::sort(std::begin(entries), std::end(entries),
  45. DHTIDCloser(ep3->node->getID()));
  46. CPPUNIT_ASSERT(*ep3 == *entries[0]);
  47. CPPUNIT_ASSERT(*ep2 == *entries[1]);
  48. CPPUNIT_ASSERT(*ep4 == *entries[2]);
  49. CPPUNIT_ASSERT(*ep1 == *entries[3]);
  50. CPPUNIT_ASSERT(*ep5 == *entries[4]);
  51. }
  52. } // namespace aria2