コード例 #1
0
 public virtual void TestDgaps()
 {
     DoTestDgaps(1, 0, 1);
     DoTestDgaps(10, 0, 1);
     DoTestDgaps(100, 0, 1);
     DoTestDgaps(1000, 4, 7);
     DoTestDgaps(10000, 40, 43);
     DoTestDgaps(100000, 415, 418);
     DoTestDgaps(1000000, 3123, 3126);
     // now exercise skipping of fully populated byte in the bitset (they are omitted if bitset is sparse)
     MockDirectoryWrapper d = new MockDirectoryWrapper(Random(), new RAMDirectory());
     d.PreventDoubleWrite = false;
     BitVector bv = new BitVector(10000);
     bv.Set(0);
     for (int i = 8; i < 16; i++)
     {
         bv.Set(i);
     } // make sure we have once byte full of set bits
     for (int i = 32; i < 40; i++)
     {
         bv.Set(i);
     } // get a second byte full of set bits
     // add some more bits here
     for (int i = 40; i < 10000; i++)
     {
         if (Random().Next(1000) == 0)
         {
             bv.Set(i);
         }
     }
     bv.Write(d, "TESTBV", NewIOContext(Random()));
     BitVector compare = new BitVector(d, "TESTBV", NewIOContext(Random()));
     Assert.IsTrue(DoCompare(bv, compare));
 }
コード例 #2
0
 private void DoTestWriteRead(int n)
 {
     MockDirectoryWrapper d = new MockDirectoryWrapper(Random(), new RAMDirectory());
     d.PreventDoubleWrite = false;
     BitVector bv = new BitVector(n);
     // test count when incrementally setting bits
     for (int i = 0; i < bv.Size(); i++)
     {
         Assert.IsFalse(bv.Get(i));
         Assert.AreEqual(i, bv.Count());
         bv.Set(i);
         Assert.IsTrue(bv.Get(i));
         Assert.AreEqual(i + 1, bv.Count());
         bv.Write(d, "TESTBV", NewIOContext(Random()));
         BitVector compare = new BitVector(d, "TESTBV", NewIOContext(Random()));
         // compare bit vectors with bits set incrementally
         Assert.IsTrue(DoCompare(bv, compare));
     }
 }
コード例 #3
0
 private void DoTestGetSetVectorOfSize(int n)
 {
     BitVector bv = new BitVector(n);
     for (int i = 0; i < bv.Size(); i++)
     {
         // ensure a set bit can be git'
         Assert.IsFalse(bv.Get(i));
         bv.Set(i);
         Assert.IsTrue(bv.Get(i));
     }
 }
コード例 #4
0
 private void DoTestDgaps(int size, int count1, int count2)
 {
     MockDirectoryWrapper d = new MockDirectoryWrapper(Random(), new RAMDirectory());
     d.PreventDoubleWrite = false;
     BitVector bv = new BitVector(size);
     bv.InvertAll();
     for (int i = 0; i < count1; i++)
     {
         bv.Clear(i);
         Assert.AreEqual(i + 1, size - bv.Count());
     }
     bv.Write(d, "TESTBV", NewIOContext(Random()));
     // gradually increase number of set bits
     for (int i = count1; i < count2; i++)
     {
         BitVector bv2 = new BitVector(d, "TESTBV", NewIOContext(Random()));
         Assert.IsTrue(DoCompare(bv, bv2));
         bv = bv2;
         bv.Clear(i);
         Assert.AreEqual(i + 1, size - bv.Count());
         bv.Write(d, "TESTBV", NewIOContext(Random()));
     }
     // now start decreasing number of set bits
     for (int i = count2 - 1; i >= count1; i--)
     {
         BitVector bv2 = new BitVector(d, "TESTBV", NewIOContext(Random()));
         Assert.IsTrue(DoCompare(bv, bv2));
         bv = bv2;
         bv.Set(i);
         Assert.AreEqual(i, size - bv.Count());
         bv.Write(d, "TESTBV", NewIOContext(Random()));
     }
 }
コード例 #5
0
        private void DoTestCountVectorOfSize(int n)
        {
            BitVector bv = new BitVector(n);
            // test count when incrementally setting bits
            for (int i = 0; i < bv.Size(); i++)
            {
                Assert.IsFalse(bv.Get(i));
                Assert.AreEqual(i, bv.Count());
                bv.Set(i);
                Assert.IsTrue(bv.Get(i));
                Assert.AreEqual(i + 1, bv.Count());
            }

            bv = new BitVector(n);
            // test count when setting then clearing bits
            for (int i = 0; i < bv.Size(); i++)
            {
                Assert.IsFalse(bv.Get(i));
                Assert.AreEqual(0, bv.Count());
                bv.Set(i);
                Assert.IsTrue(bv.Get(i));
                Assert.AreEqual(1, bv.Count());
                bv.Clear(i);
                Assert.IsFalse(bv.Get(i));
                Assert.AreEqual(0, bv.Count());
            }
        }
コード例 #6
0
 private void DoTestClearVectorOfSize(int n)
 {
     BitVector bv = new BitVector(n);
     for (int i = 0; i < bv.Size(); i++)
     {
         // ensure a set bit is cleared
         Assert.IsFalse(bv.Get(i));
         bv.Set(i);
         Assert.IsTrue(bv.Get(i));
         bv.Clear(i);
         Assert.IsFalse(bv.Get(i));
     }
 }