ShaVisitorTest.cc 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  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. string data = "d4:name5:aria24:listli123eee";
  43. MetaEntry* e = MetaFileUtil::bdecoding(data.c_str(), data.size());
  44. e->accept(&v);
  45. unsigned char md[20];
  46. int len = 0;
  47. v.getHash(md, len);
  48. string hashHex = hexHash(md, len);
  49. CPPUNIT_ASSERT_EQUAL(string("75538fbac9a074bb98c6a19b6bca3bc87ef9bf8e"),
  50. hashHex);
  51. }