DHTIDCloserTest.cc 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. #include "DHTNode.h"
  2. #include "DHTNodeLookupEntry.h"
  3. #include "DHTIDCloser.h"
  4. #include "Exception.h"
  5. #include "util.h"
  6. #include <cstring>
  7. #include <algorithm>
  8. #include <cppunit/extensions/HelperMacros.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. SharedHandle<DHTNodeLookupEntry> e1
  25. (new DHTNodeLookupEntry(SharedHandle<DHTNode>(new DHTNode(id))));
  26. id[0] = 0xb0;
  27. SharedHandle<DHTNodeLookupEntry> e2
  28. (new DHTNodeLookupEntry(SharedHandle<DHTNode>(new DHTNode(id))));
  29. id[0] = 0xa0;
  30. SharedHandle<DHTNodeLookupEntry> e3
  31. (new DHTNodeLookupEntry(SharedHandle<DHTNode>(new DHTNode(id))));
  32. id[0] = 0x80;
  33. SharedHandle<DHTNodeLookupEntry> e4
  34. (new DHTNodeLookupEntry(SharedHandle<DHTNode>(new DHTNode(id))));
  35. id[0] = 0x00;
  36. SharedHandle<DHTNodeLookupEntry> e5
  37. (new DHTNodeLookupEntry(SharedHandle<DHTNode>(new DHTNode(id))));
  38. std::deque<SharedHandle<DHTNodeLookupEntry> > entries;
  39. entries.push_back(e1);
  40. entries.push_back(e2);
  41. entries.push_back(e3);
  42. entries.push_back(e4);
  43. entries.push_back(e5);
  44. std::sort(entries.begin(), entries.end(), DHTIDCloser(e3->node->getID()));
  45. CPPUNIT_ASSERT(*e3 == *entries[0]);
  46. CPPUNIT_ASSERT(*e2 == *entries[1]);
  47. CPPUNIT_ASSERT(*e4 == *entries[2]);
  48. CPPUNIT_ASSERT(*e1 == *entries[3]);
  49. CPPUNIT_ASSERT(*e5 == *entries[4]);
  50. }
  51. } // namespace aria2