public virtual void TestChangeCodec()
{
Directory dir = NewDirectory();
IndexWriterConfig conf = NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random()));
conf.SetMergePolicy(NoMergePolicy.COMPOUND_FILES); // disable merges to simplify test assertions.
conf.SetCodec(new Lucene46CodecAnonymousInnerClassHelper2(this));
IndexWriter writer = new IndexWriter(dir, (IndexWriterConfig)conf.Clone());
Document doc = new Document();
doc.Add(new StringField("id", "d0", Store.NO));
doc.Add(new BinaryDocValuesField("f1", ToBytes(5L)));
doc.Add(new BinaryDocValuesField("f2", ToBytes(13L)));
writer.AddDocument(doc);
writer.Dispose();
// change format
conf.SetCodec(new Lucene46CodecAnonymousInnerClassHelper3(this));
writer = new IndexWriter(dir, (IndexWriterConfig)conf.Clone());
doc = new Document();
doc.Add(new StringField("id", "d1", Store.NO));
doc.Add(new BinaryDocValuesField("f1", ToBytes(17L)));
doc.Add(new BinaryDocValuesField("f2", ToBytes(2L)));
writer.AddDocument(doc);
writer.UpdateBinaryDocValue(new Term("id", "d0"), "f1", ToBytes(12L));
writer.Dispose();
DirectoryReader reader = DirectoryReader.Open(dir);
AtomicReader r = SlowCompositeReaderWrapper.Wrap(reader);
BinaryDocValues f1 = r.GetBinaryDocValues("f1");
BinaryDocValues f2 = r.GetBinaryDocValues("f2");
BytesRef scratch = new BytesRef();
Assert.AreEqual(12L, GetValue(f1, 0, scratch));
Assert.AreEqual(13L, GetValue(f2, 0, scratch));
Assert.AreEqual(17L, GetValue(f1, 1, scratch));
Assert.AreEqual(2L, GetValue(f2, 1, scratch));
reader.Dispose();
dir.Dispose();
}