public virtual void TestFloorBlocks()
{
var terms = new[] { "aa0", "aa1", "aa2", "aa3", "aa4", "aa5", "aa6", "aa7", "aa8", "aa9", "aa", "xx" };
using (var d = NewDirectory())
using (var r = MakeIndex(d, terms))
{
// First term in first block:
Assert.AreEqual(1, DocFreq(r, "aa0"));
Assert.AreEqual(1, DocFreq(r, "aa4"));
// No block
Assert.AreEqual(0, DocFreq(r, "bb0"));
// Second block
Assert.AreEqual(1, DocFreq(r, "aa4"));
// Backwards to prior floor block:
Assert.AreEqual(1, DocFreq(r, "aa0"));
// Forwards to last floor block:
Assert.AreEqual(1, DocFreq(r, "aa9"));
Assert.AreEqual(0, DocFreq(r, "a"));
Assert.AreEqual(1, DocFreq(r, "aa"));
Assert.AreEqual(0, DocFreq(r, "a"));
Assert.AreEqual(1, DocFreq(r, "aa"));
// Forwards to last floor block:
Assert.AreEqual(1, DocFreq(r, "xx"));
Assert.AreEqual(1, DocFreq(r, "aa1"));
Assert.AreEqual(0, DocFreq(r, "yy"));
Assert.AreEqual(1, DocFreq(r, "xx"));
Assert.AreEqual(1, DocFreq(r, "aa9"));
Assert.AreEqual(1, DocFreq(r, "xx"));
Assert.AreEqual(1, DocFreq(r, "aa4"));
TermsEnum te = MultiFields.GetTerms(r, FIELD).Iterator(null);
while (te.Next() != null)
{
//System.out.println("TEST: next term=" + te.Term().Utf8ToString());
}
Assert.IsTrue(SeekExact(te, "aa1"));
Assert.AreEqual("aa2", Next(te));
Assert.IsTrue(SeekExact(te, "aa8"));
Assert.AreEqual("aa9", Next(te));
Assert.AreEqual("xx", Next(te));
TestRandomSeeks(r, terms);
}
}