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)); } }
public override void WriteLiveDocs(MutableBits bits, Directory dir, SegmentCommitInfo info, int newDelCount, IOContext context) { string filename = IndexFileNames.FileNameFromGeneration(info.Info.Name, DELETES_EXTENSION, info.NextDelGen); BitVector liveDocs = (BitVector)bits; Debug.Assert(liveDocs.Count() == info.Info.DocCount - info.DelCount - newDelCount); Debug.Assert(liveDocs.Length() == info.Info.DocCount); liveDocs.Write(dir, filename, context); }
public virtual void TestClearedBitNearEnd() { Directory d = NewDirectory(); int numBits = TestUtil.NextInt(Random(), 7, 1000); BitVector bv = new BitVector(numBits); bv.InvertAll(); bv.Clear(numBits - TestUtil.NextInt(Random(), 1, 7)); bv.Write(d, "test", NewIOContext(Random())); Assert.AreEqual(numBits - 1, bv.Count()); d.Dispose(); }
public virtual void TestClearedBitNearEnd() { Directory d = NewDirectory(); int numBits = TestUtil.NextInt32(Random, 7, 1000); BitVector bv = new BitVector(numBits); bv.InvertAll(); bv.Clear(numBits - TestUtil.NextInt32(Random, 1, 7)); bv.Write(d, "test", NewIOContext(Random)); Assert.AreEqual(numBits - 1, bv.Count()); d.Dispose(); }
public virtual void TestSparseWrite() { Directory d = NewDirectory(); const int numBits = 10240; BitVector bv = new BitVector(numBits); bv.InvertAll(); int numToClear = Random.Next(5); for (int i = 0; i < numToClear; i++) { bv.Clear(Random.Next(numBits)); } bv.Write(d, "test", NewIOContext(Random)); long size = d.FileLength("test"); Assert.IsTrue(size < 100, "size=" + size); d.Dispose(); }
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.Length; i++) // LUCENENET NOTE: Length is the equivalent of size() { 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)); } }
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)); }
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)); }
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)); } }
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())); } }
public virtual void TestSparseWrite() { Directory d = NewDirectory(); const int numBits = 10240; BitVector bv = new BitVector(numBits); bv.InvertAll(); int numToClear = Random().Next(5); for (int i = 0; i < numToClear; i++) { bv.Clear(Random().Next(numBits)); } bv.Write(d, "test", NewIOContext(Random())); long size = d.FileLength("test"); Assert.IsTrue(size < 100, "size=" + size); d.Dispose(); }