ChunkChecksumValidatorTest.cc 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  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. BitfieldMan bitfieldMan(100, 250);
  30. bitfieldMan.setAllBit();
  31. Strings checksums(&csArray[0], &csArray[3]);
  32. DefaultDiskWriterHandle diskWriter = new DefaultDiskWriter();
  33. diskWriter->openExistingFile("chunkChecksumTestFile250.txt");
  34. ChunkChecksumValidator validator;
  35. validator.setDiskWriter(diskWriter);
  36. validator.validate(&bitfieldMan, checksums, 100);
  37. CPPUNIT_ASSERT(bitfieldMan.isAllBitSet());
  38. checksums[1] = "ffffffffffffffffffffffffffffffffffffffff";
  39. validator.validate(&bitfieldMan, checksums, 100);
  40. CPPUNIT_ASSERT(bitfieldMan.isBitSet(0));
  41. CPPUNIT_ASSERT(!bitfieldMan.isBitSet(1));
  42. CPPUNIT_ASSERT(bitfieldMan.isBitSet(2));
  43. }
  44. void ChunkChecksumValidatorTest::testValidate2() {
  45. BitfieldMan bitfieldMan(50, 250);
  46. bitfieldMan.setAllBit();
  47. Strings checksums(&csArray[0], &csArray[3]);
  48. DefaultDiskWriterHandle diskWriter = new DefaultDiskWriter();
  49. diskWriter->openExistingFile("chunkChecksumTestFile250.txt");
  50. ChunkChecksumValidator validator;
  51. validator.setDiskWriter(diskWriter);
  52. validator.validate(&bitfieldMan, checksums, 100);
  53. CPPUNIT_ASSERT(bitfieldMan.isAllBitSet());
  54. checksums[1] = "ffffffffffffffffffffffffffffffffffffffff";
  55. validator.validate(&bitfieldMan, checksums, 100);
  56. CPPUNIT_ASSERT(bitfieldMan.isBitSet(0));
  57. CPPUNIT_ASSERT(bitfieldMan.isBitSet(1));
  58. CPPUNIT_ASSERT(!bitfieldMan.isBitSet(2));
  59. CPPUNIT_ASSERT(!bitfieldMan.isBitSet(3));
  60. CPPUNIT_ASSERT(bitfieldMan.isBitSet(4));
  61. }
  62. void ChunkChecksumValidatorTest::testValidate3() {
  63. BitfieldMan bitfieldMan(50, 250);
  64. bitfieldMan.setAllBit();
  65. Strings checksums;
  66. checksums.push_back("898a81b8e0181280ae2ee1b81e269196d91e869a");
  67. DefaultDiskWriterHandle diskWriter = new DefaultDiskWriter();
  68. diskWriter->openExistingFile("chunkChecksumTestFile250.txt");
  69. ChunkChecksumValidator validator;
  70. validator.setDiskWriter(diskWriter);
  71. validator.validate(&bitfieldMan, checksums, 250);
  72. CPPUNIT_ASSERT(bitfieldMan.isAllBitSet());
  73. checksums[0] = "ffffffffffffffffffffffffffffffffffffffff";
  74. validator.validate(&bitfieldMan, checksums, 250);
  75. CPPUNIT_ASSERT(!bitfieldMan.isBitSet(0));
  76. CPPUNIT_ASSERT(!bitfieldMan.isBitSet(1));
  77. CPPUNIT_ASSERT(!bitfieldMan.isBitSet(2));
  78. CPPUNIT_ASSERT(!bitfieldMan.isBitSet(3));
  79. CPPUNIT_ASSERT(!bitfieldMan.isBitSet(4));
  80. }
  81. void ChunkChecksumValidatorTest::testValidate4() {
  82. BitfieldMan bitfieldMan(70, 250);
  83. bitfieldMan.setAllBit();
  84. Strings checksums(&csArray[0], &csArray[3]);
  85. DefaultDiskWriterHandle diskWriter = new DefaultDiskWriter();
  86. diskWriter->openExistingFile("chunkChecksumTestFile250.txt");
  87. ChunkChecksumValidator validator;
  88. validator.setDiskWriter(diskWriter);
  89. validator.validate(&bitfieldMan, checksums, 100);
  90. CPPUNIT_ASSERT(bitfieldMan.isAllBitSet());
  91. checksums[1] = "ffffffffffffffffffffffffffffffffffffffff";
  92. validator.validate(&bitfieldMan, checksums, 100);
  93. CPPUNIT_ASSERT(bitfieldMan.isBitSet(0));
  94. CPPUNIT_ASSERT(!bitfieldMan.isBitSet(1));
  95. CPPUNIT_ASSERT(!bitfieldMan.isBitSet(2));
  96. CPPUNIT_ASSERT(bitfieldMan.isBitSet(3));
  97. }