public virtual void TestUpdateAndDeleteSameDocument()
{
// update and delete same document in same commit session
Directory dir = NewDirectory();
IndexWriterConfig conf = NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random()));
conf.SetMaxBufferedDocs(10); // control segment flushing
IndexWriter writer = new IndexWriter(dir, conf);
writer.AddDocument(Doc(0));
writer.AddDocument(Doc(1));
if (Random().NextBoolean())
{
writer.Commit();
}
writer.DeleteDocuments(new Term("id", "doc-0"));
writer.UpdateBinaryDocValue(new Term("id", "doc-0"), "val", ToBytes(17L));
DirectoryReader reader;
if (Random().NextBoolean()) // not NRT
{
writer.Dispose();
reader = DirectoryReader.Open(dir);
} // NRT
else
{
reader = DirectoryReader.Open(writer, true);
writer.Dispose();
}
AtomicReader r = (AtomicReader)reader.Leaves[0].Reader;
Assert.IsFalse(r.LiveDocs.Get(0));
Assert.AreEqual(1, GetValue(r.GetBinaryDocValues("val"), 0, new BytesRef())); // deletes are currently applied first
reader.Dispose();
dir.Dispose();
}