public virtual void TestReadNestedCFP() { Directory newDir = NewDirectory(); CompoundFileDirectory csw = new CompoundFileDirectory(newDir, "d.cfs", NewIOContext(Random()), true); CompoundFileDirectory nested = new CompoundFileDirectory(newDir, "b.cfs", NewIOContext(Random()), true); IndexOutput @out = nested.CreateOutput("b.xyz", NewIOContext(Random())); IndexOutput out1 = nested.CreateOutput("b_1.xyz", NewIOContext(Random())); @out.WriteInt(0); out1.WriteInt(1); @out.Dispose(); out1.Dispose(); nested.Dispose(); newDir.Copy(csw, "b.cfs", "b.cfs", NewIOContext(Random())); newDir.Copy(csw, "b.cfe", "b.cfe", NewIOContext(Random())); newDir.DeleteFile("b.cfs"); newDir.DeleteFile("b.cfe"); csw.Dispose(); Assert.AreEqual(2, newDir.ListAll().Length); csw = new CompoundFileDirectory(newDir, "d.cfs", NewIOContext(Random()), false); Assert.AreEqual(2, csw.ListAll().Length); nested = new CompoundFileDirectory(csw, "b.cfs", NewIOContext(Random()), false); Assert.AreEqual(2, nested.ListAll().Length); IndexInput openInput = nested.OpenInput("b.xyz", NewIOContext(Random())); Assert.AreEqual(0, openInput.ReadInt()); openInput.Dispose(); openInput = nested.OpenInput("b_1.xyz", NewIOContext(Random())); Assert.AreEqual(1, openInput.ReadInt()); openInput.Dispose(); nested.Dispose(); csw.Dispose(); newDir.Dispose(); }
public virtual void TestAppend() { Directory newDir = NewDirectory(); CompoundFileDirectory csw = new CompoundFileDirectory(newDir, "d.cfs", NewIOContext(Random), true); int size = 5 + Random.Next(128); for (int j = 0; j < 2; j++) { IndexOutput os = csw.CreateOutput("seg_" + j + "_foo.txt", NewIOContext(Random)); for (int i = 0; i < size; i++) { os.WriteInt32(i * j); } os.Dispose(); string[] listAll = newDir.ListAll(); Assert.AreEqual(1, listAll.Length); Assert.AreEqual("d.cfs", listAll[0]); } CreateSequenceFile(Dir, "d1", (sbyte)0, 15); Dir.Copy(csw, "d1", "d1", NewIOContext(Random)); string[] listAll_ = newDir.ListAll(); Assert.AreEqual(1, listAll_.Length); Assert.AreEqual("d.cfs", listAll_[0]); csw.Dispose(); CompoundFileDirectory csr = new CompoundFileDirectory(newDir, "d.cfs", NewIOContext(Random), false); for (int j = 0; j < 2; j++) { IndexInput openInput = csr.OpenInput("seg_" + j + "_foo.txt", NewIOContext(Random)); Assert.AreEqual(size * 4, openInput.Length); for (int i = 0; i < size; i++) { Assert.AreEqual(i * j, openInput.ReadInt32()); } openInput.Dispose(); } IndexInput expected = Dir.OpenInput("d1", NewIOContext(Random)); IndexInput actual = csr.OpenInput("d1", NewIOContext(Random)); AssertSameStreams("d1", expected, actual); AssertSameSeekBehavior("d1", expected, actual); expected.Dispose(); actual.Dispose(); csr.Dispose(); newDir.Dispose(); }
public virtual void TestAppendTwice() { Directory newDir = NewDirectory(); CompoundFileDirectory csw = new CompoundFileDirectory(newDir, "d.cfs", NewIOContext(Random()), true); CreateSequenceFile(newDir, "d1", (sbyte)0, 15); IndexOutput @out = csw.CreateOutput("d.xyz", NewIOContext(Random())); @out.WriteInt(0); @out.Dispose(); Assert.AreEqual(1, csw.ListAll().Length); Assert.AreEqual("d.xyz", csw.ListAll()[0]); csw.Dispose(); CompoundFileDirectory cfr = new CompoundFileDirectory(newDir, "d.cfs", NewIOContext(Random()), false); Assert.AreEqual(1, cfr.ListAll().Length); Assert.AreEqual("d.xyz", cfr.ListAll()[0]); cfr.Dispose(); newDir.Dispose(); }
public virtual void TestDoubleClose() { Directory newDir = NewDirectory(); CompoundFileDirectory csw = new CompoundFileDirectory(newDir, "d.cfs", NewIOContext(Random()), true); IndexOutput @out = csw.CreateOutput("d.xyz", NewIOContext(Random())); @out.WriteInt(0); @out.Dispose(); csw.Dispose(); // close a second time - must have no effect according to IDisposable csw.Dispose(); csw = new CompoundFileDirectory(newDir, "d.cfs", NewIOContext(Random()), false); IndexInput openInput = csw.OpenInput("d.xyz", NewIOContext(Random())); Assert.AreEqual(0, openInput.ReadInt()); openInput.Dispose(); csw.Dispose(); // close a second time - must have no effect according to IDisposable csw.Dispose(); newDir.Dispose(); }