public virtual void TestReopen()
{
Directory dir = NewDirectory();
IndexWriterConfig conf = NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random()));
IndexWriter writer = new IndexWriter(dir, conf);
writer.AddDocument(Doc(0));
writer.AddDocument(Doc(1));
bool isNRT = Random().NextBoolean();
DirectoryReader reader1;
if (isNRT)
{
reader1 = DirectoryReader.Open(writer, true);
}
else
{
writer.Commit();
reader1 = DirectoryReader.Open(dir);
}
// update doc
writer.UpdateBinaryDocValue(new Term("id", "doc-0"), "val", ToBytes(10)); // update doc-0's value to 10
if (!isNRT)
{
writer.Commit();
}
// reopen reader and assert only it sees the update
DirectoryReader reader2 = DirectoryReader.OpenIfChanged(reader1);
Assert.IsNotNull(reader2);
Assert.IsTrue(reader1 != reader2);
BytesRef scratch = new BytesRef();
BinaryDocValues bdv1 = ((AtomicReader)reader1.Leaves[0].Reader).GetBinaryDocValues("val");
BinaryDocValues bdv2 = ((AtomicReader)reader2.Leaves[0].Reader).GetBinaryDocValues("val");
Assert.AreEqual(1, GetValue(bdv1, 0, scratch));
Assert.AreEqual(10, GetValue(bdv2, 0, scratch));
IOUtils.Close(writer, reader1, reader2, dir);
}