public virtual void TestFieldCacheReuseAfterReopen()
{
Directory dir = new MockRAMDirectory();
IndexWriter writer = new IndexWriter(dir, new WhitespaceAnalyzer(), IndexWriter.MaxFieldLength.UNLIMITED);
Document doc = new Document();
doc.Add(new Field("number", "17", Field.Store.NO, Field.Index.NOT_ANALYZED));
writer.AddDocument(doc);
writer.Commit();
// Open reader1
IndexReader r = IndexReader.Open(dir, false);
IndexReader r1 = SegmentReader.GetOnlySegmentReader(r);
int[] ints = Lucene.Net.Search.FieldCache_Fields.DEFAULT.GetInts(r1, "number");
Assert.AreEqual(1, ints.Length);
Assert.AreEqual(17, ints[0]);
// Add new segment
writer.AddDocument(doc);
writer.Commit();
// Reopen reader1 --> reader2
IndexReader r2 = r.Reopen();
r.Close();
IndexReader sub0 = r2.GetSequentialSubReaders()[0];
int[] ints2 = Lucene.Net.Search.FieldCache_Fields.DEFAULT.GetInts(sub0, "number");
r2.Close();
Assert.IsTrue(ints == ints2);
dir.Close();
}