public virtual void TestRandomTerms()
{
var terms = new string[TestUtil.NextInt(Random(), 1, AtLeast(1000))];
var seen = new HashSet<string>();
var allowEmptyString = Random().NextBoolean();
if (Random().Next(10) == 7 && terms.Length > 2)
{
// Sometimes add a bunch of terms sharing a longish common prefix:
int numTermsSamePrefix = Random().Next(terms.Length / 2);
if (numTermsSamePrefix > 0)
{
string prefix;
while (true)
{
prefix = RandomString;
if (prefix.Length < 5)
{
continue;
}
else
{
break;
}
}
while (seen.Count < numTermsSamePrefix)
{
string t = prefix + RandomString;
if (!seen.Contains(t))
{
terms[seen.Count] = t;
seen.Add(t);
}
}
}
}
while (seen.Count < terms.Length)
{
string t = RandomString;
if (!seen.Contains(t) && (allowEmptyString || t.Length != 0))
{
terms[seen.Count] = t;
seen.Add(t);
}
}
using (var d = NewDirectory())
using (var r = MakeIndex(d, terms))
{
TestRandomSeeks(r, terms);
}
}