Skip to content

Commit

Permalink
Lucene.Net.Support: Factored out BitArrayExtensions and replaced all …
Browse files Browse the repository at this point in the history
…occurrences of BitArray with BitSet. Removed FEATURE_BITARRAY_COPYTO.
  • Loading branch information
NightOwl888 committed May 2, 2021
1 parent 2b1fff5 commit 807ce0b
Show file tree
Hide file tree
Showing 5 changed files with 58 additions and 392 deletions.
1 change: 0 additions & 1 deletion Directory.Build.targets
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,6 @@
<DefineConstants>$(DefineConstants);FEATURE_APPDOMAIN_GETASSEMBLIES</DefineConstants>
<DefineConstants>$(DefineConstants);FEATURE_APPDOMAIN_ISFULLYTRUSTED</DefineConstants>
<DefineConstants>$(DefineConstants);FEATURE_ASSEMBLY_GETCALLINGASSEMBLY</DefineConstants>
<DefineConstants>$(DefineConstants);FEATURE_BITARRAY_COPYTO</DefineConstants>
<DefineConstants>$(DefineConstants);FEATURE_CULTUREINFO_GETCULTURES</DefineConstants>
<DefineConstants>$(DefineConstants);FEATURE_DTD_PROCESSING</DefineConstants>
<DefineConstants>$(DefineConstants);FEATURE_FILESTREAM_LOCK</DefineConstants>
Expand Down
14 changes: 6 additions & 8 deletions src/Lucene.Net.Tests/Search/TestScorerPerf.cs
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
using Lucene.Net.Documents;
using Lucene.Net.Index.Extensions;
using Lucene.Net.Support;
using NUnit.Framework;
using System;
using System.Collections;
using Assert = Lucene.Net.TestFramework.Assert;
using BitSet = J2N.Collections.BitSet;
using Console = Lucene.Net.Util.SystemConsole;
Expand Down Expand Up @@ -275,21 +273,21 @@ public virtual int DoTermConjunctions(IndexSearcher s, int termsInIndex, int max
{
int nClauses = Random.Next(maxClauses - 1) + 2; // min 2 clauses
BooleanQuery bq = new BooleanQuery();
BitArray termflag = new BitArray(termsInIndex);
BitSet termflag = new BitSet(termsInIndex);
for (int j = 0; j < nClauses; j++)
{
int tnum;
// don't pick same clause twice
tnum = Random.Next(termsInIndex);
if (termflag.SafeGet(tnum))
if (termflag.Get(tnum))
{
tnum = termflag.NextClearBit(tnum);
}
if (tnum < 0 || tnum >= termsInIndex)
{
tnum = termflag.NextClearBit(0);
}
termflag.SafeSet(tnum, true);
termflag.Set(tnum);
Query tq = new TermQuery(terms[tnum]);
bq.Add(tq, Occur.MUST);
}
Expand Down Expand Up @@ -319,21 +317,21 @@ public virtual int DoNestedTermConjunctions(IndexSearcher s, int termsInIndex, i
{
int nClauses = Random.Next(maxClauses - 1) + 2; // min 2 clauses
BooleanQuery bq = new BooleanQuery();
BitArray termflag = new BitArray(termsInIndex);
BitSet termflag = new BitSet(termsInIndex);
for (int j = 0; j < nClauses; j++)
{
int tnum;
// don't pick same clause twice
tnum = Random.Next(termsInIndex);
if (termflag.SafeGet(tnum))
if (termflag.Get(tnum))
{
tnum = termflag.NextClearBit(tnum);
}
if (tnum < 0 || tnum >= 25)
{
tnum = termflag.NextClearBit(0);
}
termflag.SafeSet(tnum, true);
termflag.Set(tnum);
Query tq = new TermQuery(terms[tnum]);
bq.Add(tq, Occur.MUST);
} // inner
Expand Down
27 changes: 13 additions & 14 deletions src/Lucene.Net.Tests/Util/TestBytesRefHash.cs
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
using Lucene.Net.Support;
using NUnit.Framework;
using NUnit.Framework;
using RandomizedTesting.Generators;
using System;
using System.Collections;
using System.Collections.Generic;
using JCG = J2N.Collections.Generic;
using Assert = Lucene.Net.TestFramework.Assert;
using RandomizedTesting.Generators;
using BitSet = J2N.Collections.BitSet;
using JCG = J2N.Collections.Generic;

namespace Lucene.Net.Util
{
Expand Down Expand Up @@ -143,7 +142,7 @@ public virtual void TestGet()
}

/// <summary>
/// Test method for <seealso cref="Lucene.Net.Util.BytesRefHash#compact()"/>.
/// Test method for <seealso cref="Lucene.Net.Util.BytesRefHash.Compact()"/>.
/// </summary>
[Test]
public virtual void TestCompact()
Expand All @@ -154,7 +153,7 @@ public virtual void TestCompact()
{
int numEntries = 0;
const int size = 797;
BitArray bits = new BitArray(size);
BitSet bits = new BitSet(size);
for (int i = 0; i < size; i++)
{
string str;
Expand All @@ -166,25 +165,25 @@ public virtual void TestCompact()
int key = hash.Add(@ref);
if (key < 0)
{
Assert.IsTrue(bits.SafeGet((-key) - 1));
Assert.IsTrue(bits.Get((-key) - 1));
}
else
{
Assert.IsFalse(bits.SafeGet(key));
bits.SafeSet(key, true);
Assert.IsFalse(bits.Get(key));
bits.Set(key);
numEntries++;
}
}
Assert.AreEqual(hash.Count, bits.Cardinality());
Assert.AreEqual(numEntries, bits.Cardinality());
Assert.AreEqual(hash.Count, bits.Cardinality);
Assert.AreEqual(numEntries, bits.Cardinality);
Assert.AreEqual(numEntries, hash.Count);
int[] compact = hash.Compact();
Assert.IsTrue(numEntries < compact.Length);
for (int i = 0; i < numEntries; i++)
{
bits.SafeSet(compact[i], false);
bits.Clear(compact[i]);
}
Assert.AreEqual(0, bits.Cardinality());
Assert.AreEqual(0, bits.Cardinality);
hash.Clear();
Assert.AreEqual(0, hash.Count);
hash.Reinit();
Expand Down
79 changes: 39 additions & 40 deletions src/Lucene.Net.Tests/Util/TestLongBitSet.cs
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
using System;
using Lucene.Net.Attributes;
using Lucene.Net.Support;
using Lucene.Net.Attributes;
using NUnit.Framework;
using System.Collections;
using Assert = Lucene.Net.TestFramework.Assert;
using RandomizedTesting.Generators;
using System;
using Assert = Lucene.Net.TestFramework.Assert;
using BitSet = J2N.Collections.BitSet;

namespace Lucene.Net.Util
{
Expand All @@ -28,19 +27,19 @@ namespace Lucene.Net.Util
[TestFixture]
public class TestLongBitSet : LuceneTestCase
{
internal virtual void DoGet(BitArray a, Int64BitSet b)
internal virtual void DoGet(BitSet a, Int64BitSet b)
{
long max = b.Length;
for (int i = 0; i < max; i++)
{
if (a.SafeGet(i) != b.Get(i))
if (a.Get(i) != b.Get(i))
{
Assert.Fail("mismatch: BitSet=[" + i + "]=" + a.SafeGet(i));
Assert.Fail("mismatch: BitSet=[" + i + "]=" + a.Get(i));
}
}
}

internal virtual void DoNextSetBit(BitArray a, Int64BitSet b)
internal virtual void DoNextSetBit(BitSet a, Int64BitSet b)
{
int aa = -1;
long bb = -1;
Expand All @@ -52,15 +51,15 @@ internal virtual void DoNextSetBit(BitArray a, Int64BitSet b)
} while (aa >= 0);
}

internal virtual void DoPrevSetBit(BitArray a, Int64BitSet b)
internal virtual void DoPrevSetBit(BitSet a, Int64BitSet b)
{
int aa = a.Length + Random.Next(100);
long bb = aa;
do
{
//aa = a.PrevSetBit(aa-1);
aa--;
while ((aa >= 0) && (!a.SafeGet(aa)))
while ((aa >= 0) && (!a.Get(aa)))
{
aa--;
}
Expand All @@ -86,13 +85,13 @@ internal virtual void DoPrevSetBit(BitArray a, Int64BitSet b)

internal virtual void DoRandomSets(int maxSize, int iter, int mode)
{
BitArray a0 = null;
BitSet a0 = null;
Int64BitSet b0 = null;

for (int i = 0; i < iter; i++)
{
int sz = TestUtil.NextInt32(Random, 2, maxSize);
BitArray a = new BitArray(sz);
BitSet a = new BitSet(sz);
Int64BitSet b = new Int64BitSet(sz);

// test the various ways of setting bits
Expand All @@ -104,19 +103,19 @@ internal virtual void DoRandomSets(int maxSize, int iter, int mode)
int idx;

idx = Random.Next(sz);
a.SafeSet(idx, true);
a.Set(idx);
b.Set(idx);

idx = Random.Next(sz);
a.SafeSet(idx, false);
a.Clear(idx);
b.Clear(idx);

idx = Random.Next(sz);
a.SafeSet(idx, !a.SafeGet(idx));
a.Flip(idx);
b.Flip(idx, idx + 1);

idx = Random.Next(sz);
a.SafeSet(idx, !a.SafeGet(idx));
a.Flip(idx);
b.Flip(idx, idx + 1);

bool val2 = b.Get(idx);
Expand All @@ -139,14 +138,14 @@ internal virtual void DoRandomSets(int maxSize, int iter, int mode)
int fromIndex, toIndex;
fromIndex = Random.Next(sz / 2);
toIndex = fromIndex + Random.Next(sz - fromIndex);
BitArray aa = new BitArray(a);
BitSet aa = (BitSet)a.Clone();
aa.Flip(fromIndex, toIndex);
Int64BitSet bb = b.Clone();
bb.Flip(fromIndex, toIndex);

fromIndex = Random.Next(sz / 2);
toIndex = fromIndex + Random.Next(sz - fromIndex);
aa = new BitArray(a);
aa = (BitSet)a.Clone();
aa.Clear(fromIndex, toIndex);
bb = b.Clone();
bb.Clear(fromIndex, toIndex);
Expand All @@ -157,7 +156,7 @@ internal virtual void DoRandomSets(int maxSize, int iter, int mode)

fromIndex = Random.Next(sz / 2);
toIndex = fromIndex + Random.Next(sz - fromIndex);
aa = new BitArray(a);
aa = (BitSet)a.Clone();
aa.Set(fromIndex, toIndex);
bb = b.Clone();
bb.Set(fromIndex, toIndex);
Expand All @@ -168,15 +167,15 @@ internal virtual void DoRandomSets(int maxSize, int iter, int mode)

if (b0 != null && b0.Length <= b.Length)
{
Assert.AreEqual(a.Cardinality(), b.Cardinality);

BitArray a_and = new BitArray(a);
a_and = a_and.And_UnequalLengths(a0);
BitArray a_or = new BitArray(a);
a_or = a_or.Or_UnequalLengths(a0);
BitArray a_xor = new BitArray(a);
a_xor = a_xor.Xor_UnequalLengths(a0);
BitArray a_andn = new BitArray(a);
Assert.AreEqual(a.Cardinality, b.Cardinality);

BitSet a_and = (BitSet)a.Clone();
a_and.And(a0);
BitSet a_or = (BitSet)a.Clone();
a_or.Or(a0);
BitSet a_xor = (BitSet)a.Clone();
a_xor.Xor(a0);
BitSet a_andn = (BitSet)a.Clone();
a_andn.AndNot(a0);

Int64BitSet b_and = b.Clone();
Expand All @@ -189,13 +188,13 @@ internal virtual void DoRandomSets(int maxSize, int iter, int mode)
Int64BitSet b_andn = b.Clone();
b_andn.AndNot(b0);

Assert.AreEqual(a0.Cardinality(), b0.Cardinality);
Assert.AreEqual(a_or.Cardinality(), b_or.Cardinality);
Assert.AreEqual(a0.Cardinality, b0.Cardinality);
Assert.AreEqual(a_or.Cardinality, b_or.Cardinality);

Assert.AreEqual(a_and.Cardinality(), b_and.Cardinality);
Assert.AreEqual(a_or.Cardinality(), b_or.Cardinality);
Assert.AreEqual(a_xor.Cardinality(), b_xor.Cardinality);
Assert.AreEqual(a_andn.Cardinality(), b_andn.Cardinality);
Assert.AreEqual(a_and.Cardinality, b_and.Cardinality);
Assert.AreEqual(a_or.Cardinality, b_or.Cardinality);
Assert.AreEqual(a_xor.Cardinality, b_xor.Cardinality);
Assert.AreEqual(a_andn.Cardinality, b_andn.Cardinality);
}

a0 = a;
Expand Down Expand Up @@ -374,20 +373,20 @@ private Int64BitSet MakeLongFixedBitSet(int[] a, int numBits)
return bs;
}

private BitArray MakeBitSet(int[] a)
private BitSet MakeBitSet(int[] a)
{
BitArray bs = new BitArray(a.Length);
BitSet bs = new BitSet(a.Length);
foreach (int e in a)
{
bs.SafeSet(e, true);
bs.Set(e);
}
return bs;
}

private void CheckPrevSetBitArray(int[] a, int numBits)
{
Int64BitSet obs = MakeLongFixedBitSet(a, numBits);
BitArray bs = MakeBitSet(a);
BitSet bs = MakeBitSet(a);
DoPrevSetBit(bs, obs);
}

Expand All @@ -402,7 +401,7 @@ public virtual void TestPrevSetBit()
private void CheckNextSetBitArray(int[] a, int numBits)
{
Int64BitSet obs = MakeLongFixedBitSet(a, numBits);
BitArray bs = MakeBitSet(a);
BitSet bs = MakeBitSet(a);
DoNextSetBit(bs, obs);
}

Expand Down
Loading

0 comments on commit 807ce0b

Please sign in to comment.