public virtual void TestOpenIfChangedManySegments() { // test openIfChanged() when the taxonomy contains many segments Directory dir = NewDirectory(); DirectoryTaxonomyWriter writer = new DirectoryTaxonomyWriterAnonymousInnerClassHelper(this, dir); var reader = new DirectoryTaxonomyReader(writer); int numRounds = Random.Next(10) + 10; int numCategories = 1; // one for root for (int i = 0; i < numRounds; i++) { int numCats = Random.Next(4) + 1; for (int j = 0; j < numCats; j++) { writer.AddCategory(new FacetLabel(Convert.ToString(i, CultureInfo.InvariantCulture), Convert.ToString(j, CultureInfo.InvariantCulture))); } numCategories += numCats + 1; // one for round-parent var newtr = TaxonomyReader.OpenIfChanged(reader); Assert.IsNotNull(newtr); reader.Dispose(); reader = newtr; // assert categories Assert.AreEqual(numCategories, reader.Count); int roundOrdinal = reader.GetOrdinal(new FacetLabel(Convert.ToString(i, CultureInfo.InvariantCulture))); int[] parents = reader.ParallelTaxonomyArrays.Parents; Assert.AreEqual(0, parents[roundOrdinal]); // round's parent is root for (int j = 0; j < numCats; j++) { int ord = reader.GetOrdinal(new FacetLabel(Convert.ToString(i, CultureInfo.InvariantCulture), Convert.ToString(j, CultureInfo.InvariantCulture))); Assert.AreEqual(roundOrdinal, parents[ord]); // round's parent is root } } reader.Dispose(); writer.Dispose(); dir.Dispose(); }
public virtual void TestOpenIfChangedManySegments() { // test openIfChanged() when the taxonomy contains many segments Directory dir = NewDirectory(); DirectoryTaxonomyWriter writer = new DirectoryTaxonomyWriterAnonymousInnerClassHelper(this, dir); var reader = new DirectoryTaxonomyReader(writer); int numRounds = Random().Next(10) + 10; int numCategories = 1; // one for root for (int i = 0; i < numRounds; i++) { int numCats = Random().Next(4) + 1; for (int j = 0; j < numCats; j++) { writer.AddCategory(new FacetLabel(Convert.ToString(i), Convert.ToString(j))); } numCategories += numCats + 1; // one for round-parent var newtr = TaxonomyReader.OpenIfChanged(reader); Assert.NotNull(newtr); reader.Dispose(); reader = newtr; // assert categories Assert.AreEqual(numCategories, reader.Size); int roundOrdinal = reader.GetOrdinal(new FacetLabel(Convert.ToString(i))); int[] parents = reader.ParallelTaxonomyArrays.Parents(); Assert.AreEqual(0, parents[roundOrdinal]); // round's parent is root for (int j = 0; j < numCats; j++) { int ord = reader.GetOrdinal(new FacetLabel(Convert.ToString(i), Convert.ToString(j))); Assert.AreEqual(roundOrdinal, parents[ord]); // round's parent is root } } reader.Dispose(); writer.Dispose(); dir.Dispose(); }