public virtual void TestFieldCacheReuseAfterClone()
{
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.Close();
// Open reader
IndexReader r = SegmentReader.GetOnlySegmentReader(dir);
int[] ints = Lucene.Net.Search.FieldCache_Fields.DEFAULT.GetInts(r, "number");
Assert.AreEqual(1, ints.Length);
Assert.AreEqual(17, ints[0]);
// Clone reader
IndexReader r2 = (IndexReader) r.Clone();
r.Close();
Assert.IsTrue(r2 != r);
int[] ints2 = Lucene.Net.Search.FieldCache_Fields.DEFAULT.GetInts(r2, "number");
r2.Close();
Assert.AreEqual(1, ints2.Length);
Assert.AreEqual(17, ints2[0]);
Assert.IsTrue(ints == ints2);
dir.Close();
}