ChunkChecksumValidatorTest.cc 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. #include "ChunkChecksumValidator.h"
  2. #include "DefaultDiskWriter.h"
  3. #include <cppunit/extensions/HelperMacros.h>
  4. using namespace std;
  5. class ChunkChecksumValidatorTest:public CppUnit::TestFixture {
  6. CPPUNIT_TEST_SUITE(ChunkChecksumValidatorTest);
  7. CPPUNIT_TEST(testValidate);
  8. CPPUNIT_TEST(testValidate2);
  9. CPPUNIT_TEST(testValidate3);
  10. CPPUNIT_TEST(testValidate4);
  11. CPPUNIT_TEST_SUITE_END();
  12. private:
  13. static const char* csArray[];// = { "29b0e7878271645fffb7eec7db4a7473a1c00bc1",
  14. // "4df75a661cb7eb2733d9cdaa7f772eae3a4e2976",
  15. // "0a4ea2f7dd7c52ddf2099a444ab2184b4d341bdb" };
  16. public:
  17. void setUp() {
  18. }
  19. void testValidate();
  20. void testValidate2();
  21. void testValidate3();
  22. void testValidate4();
  23. };
  24. CPPUNIT_TEST_SUITE_REGISTRATION( ChunkChecksumValidatorTest );
  25. const char* ChunkChecksumValidatorTest::csArray[] = { "29b0e7878271645fffb7eec7db4a7473a1c00bc1",
  26. "4df75a661cb7eb2733d9cdaa7f772eae3a4e2976",
  27. "0a4ea2f7dd7c52ddf2099a444ab2184b4d341bdb" };
  28. void ChunkChecksumValidatorTest::testValidate() {
  29. #ifdef ENABLE_MESSAGE_DIGEST
  30. BitfieldMan bitfieldMan(100, 250);
  31. bitfieldMan.setAllBit();
  32. Strings checksums(&csArray[0], &csArray[3]);
  33. DefaultDiskWriterHandle diskWriter = new DefaultDiskWriter();
  34. diskWriter->openExistingFile("chunkChecksumTestFile250.txt");
  35. ChunkChecksumValidator validator;
  36. validator.setDiskWriter(diskWriter);
  37. validator.validate(&bitfieldMan, checksums, 100);
  38. CPPUNIT_ASSERT(bitfieldMan.isAllBitSet());
  39. checksums[1] = "ffffffffffffffffffffffffffffffffffffffff";
  40. validator.validate(&bitfieldMan, checksums, 100);
  41. CPPUNIT_ASSERT(bitfieldMan.isBitSet(0));
  42. CPPUNIT_ASSERT(!bitfieldMan.isBitSet(1));
  43. CPPUNIT_ASSERT(bitfieldMan.isBitSet(2));
  44. #endif /* ENABLE_MESSAGE_DIGEST */
  45. }
  46. void ChunkChecksumValidatorTest::testValidate2() {
  47. #ifdef ENABLE_MESSAGE_DIGEST
  48. BitfieldMan bitfieldMan(50, 250);
  49. bitfieldMan.setAllBit();
  50. Strings checksums(&csArray[0], &csArray[3]);
  51. DefaultDiskWriterHandle diskWriter = new DefaultDiskWriter();
  52. diskWriter->openExistingFile("chunkChecksumTestFile250.txt");
  53. ChunkChecksumValidator validator;
  54. validator.setDiskWriter(diskWriter);
  55. validator.validate(&bitfieldMan, checksums, 100);
  56. CPPUNIT_ASSERT(bitfieldMan.isAllBitSet());
  57. checksums[1] = "ffffffffffffffffffffffffffffffffffffffff";
  58. validator.validate(&bitfieldMan, checksums, 100);
  59. CPPUNIT_ASSERT(bitfieldMan.isBitSet(0));
  60. CPPUNIT_ASSERT(bitfieldMan.isBitSet(1));
  61. CPPUNIT_ASSERT(!bitfieldMan.isBitSet(2));
  62. CPPUNIT_ASSERT(!bitfieldMan.isBitSet(3));
  63. CPPUNIT_ASSERT(bitfieldMan.isBitSet(4));
  64. #endif /* ENABLE_MESSAGE_DIGEST */
  65. }
  66. void ChunkChecksumValidatorTest::testValidate3() {
  67. #ifdef ENABLE_MESSAGE_DIGEST
  68. BitfieldMan bitfieldMan(50, 250);
  69. bitfieldMan.setAllBit();
  70. Strings checksums;
  71. checksums.push_back("898a81b8e0181280ae2ee1b81e269196d91e869a");
  72. DefaultDiskWriterHandle diskWriter = new DefaultDiskWriter();
  73. diskWriter->openExistingFile("chunkChecksumTestFile250.txt");
  74. ChunkChecksumValidator validator;
  75. validator.setDiskWriter(diskWriter);
  76. validator.validate(&bitfieldMan, checksums, 250);
  77. CPPUNIT_ASSERT(bitfieldMan.isAllBitSet());
  78. checksums[0] = "ffffffffffffffffffffffffffffffffffffffff";
  79. validator.validate(&bitfieldMan, checksums, 250);
  80. CPPUNIT_ASSERT(!bitfieldMan.isBitSet(0));
  81. CPPUNIT_ASSERT(!bitfieldMan.isBitSet(1));
  82. CPPUNIT_ASSERT(!bitfieldMan.isBitSet(2));
  83. CPPUNIT_ASSERT(!bitfieldMan.isBitSet(3));
  84. CPPUNIT_ASSERT(!bitfieldMan.isBitSet(4));
  85. #endif /* ENABLE_MESSAGE_DIGEST */
  86. }
  87. void ChunkChecksumValidatorTest::testValidate4() {
  88. #ifdef ENABLE_MESSAGE_DIGEST
  89. BitfieldMan bitfieldMan(70, 250);
  90. bitfieldMan.setAllBit();
  91. Strings checksums(&csArray[0], &csArray[3]);
  92. DefaultDiskWriterHandle diskWriter = new DefaultDiskWriter();
  93. diskWriter->openExistingFile("chunkChecksumTestFile250.txt");
  94. ChunkChecksumValidator validator;
  95. validator.setDiskWriter(diskWriter);
  96. validator.validate(&bitfieldMan, checksums, 100);
  97. CPPUNIT_ASSERT(bitfieldMan.isAllBitSet());
  98. checksums[1] = "ffffffffffffffffffffffffffffffffffffffff";
  99. validator.validate(&bitfieldMan, checksums, 100);
  100. CPPUNIT_ASSERT(bitfieldMan.isBitSet(0));
  101. CPPUNIT_ASSERT(!bitfieldMan.isBitSet(1));
  102. CPPUNIT_ASSERT(!bitfieldMan.isBitSet(2));
  103. CPPUNIT_ASSERT(bitfieldMan.isBitSet(3));
  104. #endif /* ENABLE_MESSAGE_DIGEST */
  105. }