public virtual void TestOldVersions()
{
// first create a little index with the current code and get the version
Directory currentDir = NewDirectory();
RandomIndexWriter riw = new RandomIndexWriter(Random(), currentDir, Similarity, TimeZone);
riw.AddDocument(new Document());
riw.Dispose();
DirectoryReader ir = DirectoryReader.Open(currentDir);
SegmentReader air = (SegmentReader)ir.Leaves[0].Reader;
string currentVersion = air.SegmentInfo.Info.Version;
Assert.IsNotNull(currentVersion); // only 3.0 segments can have a null version
ir.Dispose();
currentDir.Dispose();
IComparer<string> comparator = StringHelper.VersionComparator;
// now check all the old indexes, their version should be < the current version
foreach (string name in OldNames)
{
Directory dir = OldIndexDirs[name];
DirectoryReader r = DirectoryReader.Open(dir);
foreach (AtomicReaderContext context in r.Leaves)
{
air = (SegmentReader)context.Reader;
string oldVersion = air.SegmentInfo.Info.Version;
Assert.IsNotNull(oldVersion); // only 3.0 segments can have a null version
Assert.IsTrue(comparator.Compare(oldVersion, currentVersion) < 0, "current Constants.LUCENE_MAIN_VERSION is <= an old index: did you forget to bump it?!");
}
r.Dispose();
}
}