public virtual void TestLeapFrogStrategy()
{
Directory directory = NewDirectory();
RandomIndexWriter writer = new RandomIndexWriter(Random(), directory, NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random())));
int numDocs = AtLeast(50);
int totalDocsWithZero = 0;
for (int i = 0; i < numDocs; i++)
{
Document doc = new Document();
int num = Random().Next(10);
if (num == 0)
{
totalDocsWithZero++;
}
doc.Add(NewTextField("field", "" + num, Field.Store.YES));
writer.AddDocument(doc);
}
IndexReader reader = writer.Reader;
writer.Dispose();
bool queryFirst = Random().NextBoolean();
IndexSearcher searcher = NewSearcher(reader);
Query query = new FilteredQuery(new TermQuery(new Term("field", "0")), new FilterAnonymousInnerClassHelper4(this, queryFirst), queryFirst ? FilteredQuery.LEAP_FROG_QUERY_FIRST_STRATEGY : Random()
.NextBoolean() ? FilteredQuery.RANDOM_ACCESS_FILTER_STRATEGY : FilteredQuery.LEAP_FROG_FILTER_FIRST_STRATEGY); // if filterFirst, we can use random here since bits are null
TopDocs search = searcher.Search(query, 10);
Assert.AreEqual(totalDocsWithZero, search.TotalHits);
IOUtils.Close(reader, writer, directory);
}