summaryrefslogtreecommitdiff
path: root/test/BitfieldManTest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'test/BitfieldManTest.cc')
-rw-r--r--test/BitfieldManTest.cc76
1 files changed, 76 insertions, 0 deletions
diff --git a/test/BitfieldManTest.cc b/test/BitfieldManTest.cc
new file mode 100644
index 00000000..018b4e83
--- /dev/null
+++ b/test/BitfieldManTest.cc
@@ -0,0 +1,76 @@
+#include "BitfieldMan.h"
+#include <string>
+#include <cppunit/extensions/HelperMacros.h>
+
+using namespace std;
+
+class BitfieldManTest:public CppUnit::TestFixture {
+
+ CPPUNIT_TEST_SUITE(BitfieldManTest);
+ CPPUNIT_TEST(testGetBlockSize);
+ CPPUNIT_TEST(testGetFirstMissingUnusedIndex);
+ CPPUNIT_TEST(testIsAllBitSet);
+ CPPUNIT_TEST_SUITE_END();
+private:
+
+public:
+ void setUp() {
+ }
+
+ void testGetBlockSize();
+ void testGetFirstMissingUnusedIndex();
+ void testIsAllBitSet();
+};
+
+
+CPPUNIT_TEST_SUITE_REGISTRATION( BitfieldManTest );
+
+void BitfieldManTest::testGetBlockSize() {
+ BitfieldMan bt1(1024, 1024*10);
+ CPPUNIT_ASSERT_EQUAL(1024, bt1.getBlockSize(9));
+
+ BitfieldMan bt2(1024, 1024*10+1);
+ CPPUNIT_ASSERT_EQUAL(1024, bt2.getBlockSize(9));
+ CPPUNIT_ASSERT_EQUAL(1, bt2.getBlockSize(10));
+ CPPUNIT_ASSERT_EQUAL(0, bt2.getBlockSize(11));
+}
+
+void BitfieldManTest::testGetFirstMissingUnusedIndex() {
+ BitfieldMan bt1(1024, 1024*10);
+ unsigned char bitfield[2];
+ memset(bitfield, 0xff, sizeof(bitfield));
+
+ CPPUNIT_ASSERT_EQUAL(0, bt1.getFirstMissingUnusedIndex(bitfield, sizeof(bitfield)));
+ CPPUNIT_ASSERT(bt1.setUseBit(0));
+ CPPUNIT_ASSERT_EQUAL(1, bt1.getFirstMissingUnusedIndex(bitfield, sizeof(bitfield)));
+ CPPUNIT_ASSERT(bt1.unsetUseBit(0));
+ CPPUNIT_ASSERT_EQUAL(0, bt1.getFirstMissingUnusedIndex(bitfield, sizeof(bitfield)));
+ CPPUNIT_ASSERT(bt1.setBit(0));
+ CPPUNIT_ASSERT_EQUAL(1, bt1.getFirstMissingUnusedIndex(bitfield, sizeof(bitfield)));
+
+ for(int i = 0; i < 8; i++) {
+ CPPUNIT_ASSERT(bt1.setBit(i));
+ }
+ CPPUNIT_ASSERT_EQUAL(8, bt1.getFirstMissingUnusedIndex(bitfield, sizeof(bitfield)));
+
+ CPPUNIT_ASSERT_EQUAL(8, bt1.getFirstMissingUnusedIndex());
+ CPPUNIT_ASSERT(bt1.setUseBit(8));
+ CPPUNIT_ASSERT_EQUAL(9, bt1.getFirstMissingUnusedIndex());
+}
+
+void BitfieldManTest::testIsAllBitSet() {
+ BitfieldMan bt1(1024, 1024*10);
+ CPPUNIT_ASSERT(!bt1.isAllBitSet());
+ bt1.setBit(1);
+ CPPUNIT_ASSERT(!bt1.isAllBitSet());
+
+ for(int i = 0; i < 8; i++) {
+ CPPUNIT_ASSERT(bt1.setBit(i));
+ }
+ CPPUNIT_ASSERT(!bt1.isAllBitSet());
+
+ for(int i = 0; i < bt1.getBlocks(); i++) {
+ CPPUNIT_ASSERT(bt1.setBit(i));
+ }
+ CPPUNIT_ASSERT(bt1.isAllBitSet());
+}