ShaVisitorTest.cc 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #include "ShaVisitor.h"
  2. #include "MetaFileUtil.h"
  3. #include <string>
  4. #include <cppunit/extensions/HelperMacros.h>
  5. using namespace std;
  6. class ShaVisitorTest:public CppUnit::TestFixture {
  7. CPPUNIT_TEST_SUITE(ShaVisitorTest);
  8. CPPUNIT_TEST(testVisit);
  9. CPPUNIT_TEST(testVisitCompound);
  10. CPPUNIT_TEST_SUITE_END();
  11. private:
  12. public:
  13. void setUp() {
  14. }
  15. void testVisit();
  16. void testVisitCompound();
  17. };
  18. CPPUNIT_TEST_SUITE_REGISTRATION( ShaVisitorTest );
  19. string hexHash(unsigned char* md, int len) {
  20. char* temp = new char[len*2+1];
  21. for(int i = 0; i < len; i++) {
  22. sprintf(temp+i*2, "%02x", md[i]);
  23. }
  24. temp[len*2] = '\0';
  25. string h(temp);
  26. delete [] temp;
  27. return h;
  28. }
  29. void ShaVisitorTest::testVisit() {
  30. ShaVisitor v;
  31. Data d("test", 4);
  32. d.accept(&v);
  33. unsigned char md[20];
  34. int len = 0;
  35. v.getHash(md, len);
  36. string hashHex = hexHash(md, len);
  37. CPPUNIT_ASSERT_EQUAL(string("20482dadd856f5ac908848f731d9235d2891c41e"),
  38. hashHex);
  39. }
  40. void ShaVisitorTest::testVisitCompound() {
  41. ShaVisitor v;
  42. MetaEntry* e = MetaFileUtil::parseMetaFile("test.torrent");
  43. e->accept(&v);
  44. unsigned char md[20];
  45. int len = 0;
  46. v.getHash(md, len);
  47. string hashHex = hexHash(md, len);
  48. CPPUNIT_ASSERT_EQUAL(string("36a58c6ab3eb02caa952f4345f57fabb06a39511"),
  49. hashHex);
  50. }