public virtual void TestGetIndexCommit()
{
RAMDirectory d = new MockRAMDirectory();
// set up writer
IndexWriter writer = new IndexWriter(d, new StandardAnalyzer(Util.Version.LUCENE_CURRENT), true, IndexWriter.MaxFieldLength.LIMITED);
writer.SetMaxBufferedDocs(2);
for (int i = 0; i < 27; i++)
AddDocumentWithFields(writer);
writer.Close();
SegmentInfos sis = new SegmentInfos();
sis.Read(d);
IndexReader r = IndexReader.Open(d, false);
IndexCommit c = r.IndexCommit;
Assert.AreEqual(sis.GetCurrentSegmentFileName(), c.SegmentsFileName);
Assert.IsTrue(c.Equals(r.IndexCommit));
// Change the index
writer = new IndexWriter(d, new StandardAnalyzer(Util.Version.LUCENE_CURRENT), false, IndexWriter.MaxFieldLength.LIMITED);
writer.SetMaxBufferedDocs(2);
for (int i = 0; i < 7; i++)
AddDocumentWithFields(writer);
writer.Close();
IndexReader r2 = r.Reopen();
Assert.IsFalse(c.Equals(r2.IndexCommit));
Assert.IsFalse(r2.IndexCommit.IsOptimized);
r2.Close();
writer = new IndexWriter(d, new StandardAnalyzer(Util.Version.LUCENE_CURRENT), false, IndexWriter.MaxFieldLength.LIMITED);
writer.Optimize();
writer.Close();
r2 = r.Reopen();
Assert.IsTrue(r2.IndexCommit.IsOptimized);
r.Close();
r2.Close();
d.Close();
}