本文整理汇总了C#中NPOI.POIFS.FileSystem.NPOIFSFileSystem.Close方法的典型用法代码示例。如果您正苦于以下问题:C# NPOIFSFileSystem.Close方法的具体用法?C# NPOIFSFileSystem.Close怎么用?C# NPOIFSFileSystem.Close使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类NPOI.POIFS.FileSystem.NPOIFSFileSystem
的用法示例。
在下文中一共展示了NPOIFSFileSystem.Close方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Test53475
public void Test53475()
{
try
{
Biff8EncryptionKey.CurrentUserPassword = (/*setter*/"solrcell");
FileStream file = POIDataSamples.GetDocumentInstance().GetFile("bug53475-password-is-solrcell.docx");
NPOIFSFileSystem filesystem = new NPOIFSFileSystem(file,null, true, true);
/*
// Check the encryption details
EncryptionInfo info = new EncryptionInfo(filesystem);
Assert.AreEqual(128, info.Header.KeySize);
Assert.AreEqual(EncryptionHeader.ALGORITHM_AES_128, info.Header.Algorithm);
Assert.AreEqual(EncryptionHeader.HASH_SHA1, info.Header.HashAlgorithm);
// Check it can be decoded
Decryptor d = Decryptor.GetInstance(info);
Assert.IsTrue("Unable to Process: document is encrypted", d.VerifyPassword("solrcell"));
// Check we can read the word document in that
InputStream dataStream = d.GetDataStream(filesystem);
OPCPackage opc = OPCPackage.Open(dataStream);
XWPFDocument doc = new XWPFDocument(opc);
XWPFWordExtractor ex = new XWPFWordExtractor(doc);
String text = ex.Text;
Assert.IsNotNull(text);
Assert.AreEqual("This is password protected Word document.", text.Trim());
ex.Close();
*/
filesystem.Close();
}
finally
{
Biff8EncryptionKey.CurrentUserPassword = (/*setter*/null);
}
}
示例2: TestReadTinyStream
public void TestReadTinyStream()
{
NPOIFSFileSystem fs = new NPOIFSFileSystem(_inst.GetFile("BlockSize512.zvi"));
// 98 is actually the last block in a two block stream...
NPOIFSStream stream = new NPOIFSStream(fs, 98);
IEnumerator<ByteBuffer> i = stream.GetBlockIterator();
Assert.AreEqual(true, i.MoveNext());
ByteBuffer b = i.Current;
Assert.AreEqual(false, i.MoveNext());
// Check the contents
Assert.AreEqual((byte)0x81, b[0]);
Assert.AreEqual((byte)0x00, b[1]);
Assert.AreEqual((byte)0x00, b[2]);
Assert.AreEqual((byte)0x00, b[3]);
Assert.AreEqual((byte)0x82, b[4]);
Assert.AreEqual((byte)0x00, b[5]);
Assert.AreEqual((byte)0x00, b[6]);
Assert.AreEqual((byte)0x00, b[7]);
fs.Close();
}
示例3: TestFiles
public void TestFiles()
{
FileStream[] files = {
// bug 51891
POIDataSamples.GetPOIFSInstance().GetFile("multimedia.doc"),
// tika bug 1072
POIDataSamples.GetPOIFSInstance().GetFile("20-Force-on-a-current-S00.doc"),
// other files Containing ole10native records ...
POIDataSamples.GetDocumentInstance().GetFile("Bug53380_3.doc"),
POIDataSamples.GetDocumentInstance().GetFile("Bug47731.doc")
};
foreach (FileStream f in files)
{
NPOIFSFileSystem fs = new NPOIFSFileSystem(f,null, true, true);
List<Entry> entries = new List<Entry>();
FindOle10(entries, fs.Root, "/", "");
foreach (Entry e in entries)
{
MemoryStream bosExp = new MemoryStream();
Stream is1 = ((DirectoryNode)e.Parent).CreateDocumentInputStream(e);
IOUtils.Copy(is1, bosExp);
is1.Close();
Ole10Native ole = Ole10Native.CreateFromEmbeddedOleObject((DirectoryNode)e.Parent);
MemoryStream bosAct = new MemoryStream();
ole.WriteOut(bosAct);
//assertThat(bosExp.ToByteArray(), EqualTo(bosAct.ToByteArray()));
Assert.IsTrue(Arrays.Equals(bosExp.ToArray(), bosAct.ToArray()));
}
fs.Close();
}
}
示例4: TestWriteStream4096
public void TestWriteStream4096()
{
NPOIFSFileSystem fs = new NPOIFSFileSystem(_inst.OpenResourceAsStream("BlockSize4096.zvi"));
// 0 -> 1 -> 2 -> end
Assert.AreEqual(1, fs.GetNextBlock(0));
Assert.AreEqual(2, fs.GetNextBlock(1));
Assert.AreEqual(POIFSConstants.END_OF_CHAIN, fs.GetNextBlock(2));
Assert.AreEqual(4, fs.GetNextBlock(3));
// First free one is at 15
Assert.AreEqual(POIFSConstants.FAT_SECTOR_BLOCK, fs.GetNextBlock(14));
Assert.AreEqual(POIFSConstants.UNUSED_BLOCK, fs.GetNextBlock(15));
// Write a 5 block file
byte[] data = new byte[4096 * 5];
for (int i = 0; i < data.Length; i++)
{
data[i] = (byte)(i % 256);
}
NPOIFSStream stream = new NPOIFSStream(fs, 0);
stream.UpdateContents(data);
// Check it
Assert.AreEqual(1, fs.GetNextBlock(0));
Assert.AreEqual(2, fs.GetNextBlock(1));
Assert.AreEqual(15, fs.GetNextBlock(2)); // Jumps
Assert.AreEqual(4, fs.GetNextBlock(3)); // Next stream
Assert.AreEqual(POIFSConstants.FAT_SECTOR_BLOCK, fs.GetNextBlock(14));
Assert.AreEqual(16, fs.GetNextBlock(15)); // Continues
Assert.AreEqual(POIFSConstants.END_OF_CHAIN, fs.GetNextBlock(16)); // Ends
Assert.AreEqual(POIFSConstants.UNUSED_BLOCK, fs.GetNextBlock(17)); // Free
// Check the contents too
IEnumerator<ByteBuffer> it = stream.GetBlockIterator();
int count = 0;
while (it.MoveNext())
{
ByteBuffer b = it.Current;
data = new byte[512];
// b.get(data);
// Array.Copy(b, 0, data, 0, b.Length);
b.Read(data);
for (int i = 0; i < data.Length; i++)
{
byte exp = (byte)(i % 256);
Assert.AreEqual(exp, data[i]);
}
count++;
}
Assert.AreEqual(5, count);
fs.Close();
}
示例5: TestWriteMiniStreams
//.........这里部分代码省略.........
Assert.AreEqual(182, ministore.GetNextBlock(181));
Assert.AreEqual(POIFSConstants.END_OF_CHAIN, ministore.GetNextBlock(182));
stream = new NPOIFSStream(ministore, 178);
it = stream.GetBlockIterator();
it.MoveNext();
b178 = it.Current;
it.MoveNext();
b179 = it.Current;
it.MoveNext();
b180 = it.Current;
it.MoveNext();
ByteBuffer b181 = it.Current;
it.MoveNext();
ByteBuffer b182 = it.Current;
Assert.AreEqual(false, it.MoveNext());
Assert.AreEqual((byte)0x03, b178[0]);
Assert.AreEqual((byte)0x04, b178[1]);
Assert.AreEqual((byte)0x43, b179[0]);
Assert.AreEqual((byte)0x44, b179[1]);
Assert.AreEqual((byte)0x83, b180[0]);
Assert.AreEqual((byte)0x84, b180[1]);
Assert.AreEqual((byte)0xc3, b181[0]);
Assert.AreEqual((byte)0xc4, b181[1]);
Assert.AreEqual((byte)0x03, b182[0]);
Assert.AreEqual((byte)0x04, b182[1]);
// Write lots, so it needs another big block
ministore.GetBlockAt(183);
try
{
ministore.GetBlockAt(184);
Assert.Fail("Block 184 should be off the end of the list");
}
// catch (ArgumentOutOfRangeException e)
catch(Exception)
{
}
data = new byte[64 * 6 + 12];
for (int i = 0; i < data.Length; i++)
{
data[i] = (byte)(i + 1);
}
stream = new NPOIFSStream(ministore, 178);
stream.UpdateContents(data);
// Should have added 2 more blocks to the chain
Assert.AreEqual(179, ministore.GetNextBlock(178));
Assert.AreEqual(180, ministore.GetNextBlock(179));
Assert.AreEqual(181, ministore.GetNextBlock(180));
Assert.AreEqual(182, ministore.GetNextBlock(181));
Assert.AreEqual(183, ministore.GetNextBlock(182));
Assert.AreEqual(184, ministore.GetNextBlock(183));
Assert.AreEqual(POIFSConstants.END_OF_CHAIN, ministore.GetNextBlock(184));
Assert.AreEqual(POIFSConstants.UNUSED_BLOCK, ministore.GetNextBlock(185));
// Block 184 should exist
ministore.GetBlockAt(183);
ministore.GetBlockAt(184);
ministore.GetBlockAt(185);
// Check contents
stream = new NPOIFSStream(ministore, 178);
it = stream.GetBlockIterator();
it.MoveNext();
b178 = it.Current;
it.MoveNext();
b179 = it.Current;
it.MoveNext();
b180 = it.Current;
it.MoveNext();
b181 = it.Current;
it.MoveNext();
b182 = it.Current;
it.MoveNext();
ByteBuffer b183 = it.Current;
it.MoveNext();
ByteBuffer b184 = it.Current;
Assert.AreEqual(false, it.MoveNext());
Assert.AreEqual((byte)0x01, b178[0]);
Assert.AreEqual((byte)0x02, b178[1]);
Assert.AreEqual((byte)0x41, b179[0]);
Assert.AreEqual((byte)0x42, b179[1]);
Assert.AreEqual((byte)0x81, b180[0]);
Assert.AreEqual((byte)0x82, b180[1]);
Assert.AreEqual((byte)0xc1, b181[0]);
Assert.AreEqual((byte)0xc2, b181[1]);
Assert.AreEqual((byte)0x01, b182[0]);
Assert.AreEqual((byte)0x02, b182[1]);
Assert.AreEqual((byte)0x41, b183[0]);
Assert.AreEqual((byte)0x42, b183[1]);
Assert.AreEqual((byte)0x81, b184[0]);
Assert.AreEqual((byte)0x82, b184[1]);
fs.Close();
}
示例6: WriteOutAndReadBack
public static NPOIFSFileSystem WriteOutAndReadBack(NPOIFSFileSystem original)
{
MemoryStream baos = new MemoryStream();
original.WriteFileSystem(baos);
original.Close();
return new NPOIFSFileSystem(new ByteArrayInputStream(baos.ToArray()));
}
示例7: TestGetFreeBlockWithNonSpare
public void TestGetFreeBlockWithNonSpare()
{
NPOIFSFileSystem fs = new NPOIFSFileSystem(_inst.OpenResourceAsStream("BlockSize512.zvi"));
NPOIFSMiniStore ministore = fs.GetMiniStore();
// We've spare ones from 181 to 255
for (int i = 181; i < 256; i++)
{
Assert.AreEqual(POIFSConstants.UNUSED_BLOCK, ministore.GetNextBlock(i));
}
// Check our SBAT free stuff is correct
Assert.AreEqual(false, ministore.GetBATBlockAndIndex(0).Block.HasFreeSectors);
Assert.AreEqual(true, ministore.GetBATBlockAndIndex(128).Block.HasFreeSectors);
// Allocate all the spare ones
for (int i = 181; i < 256; i++)
{
ministore.SetNextBlock(i, POIFSConstants.END_OF_CHAIN);
}
// SBAT are now full, but there's only the two
Assert.AreEqual(false, ministore.GetBATBlockAndIndex(0).Block.HasFreeSectors);
Assert.AreEqual(false, ministore.GetBATBlockAndIndex(128).Block.HasFreeSectors);
try
{
Assert.AreEqual(false, ministore.GetBATBlockAndIndex(256).Block.HasFreeSectors);
Assert.Fail("Should only be two SBATs");
}
catch (ArgumentOutOfRangeException) { }
// Now ask for a free one, will need to extend the SBAT chain
Assert.AreEqual(256, ministore.GetFreeBlock());
Assert.AreEqual(false, ministore.GetBATBlockAndIndex(0).Block.HasFreeSectors);
Assert.AreEqual(false, ministore.GetBATBlockAndIndex(128).Block.HasFreeSectors);
Assert.AreEqual(true, ministore.GetBATBlockAndIndex(256).Block.HasFreeSectors);
Assert.AreEqual(POIFSConstants.END_OF_CHAIN, ministore.GetNextBlock(254)); // 2nd SBAT
Assert.AreEqual(POIFSConstants.END_OF_CHAIN, ministore.GetNextBlock(255)); // 2nd SBAT
Assert.AreEqual(POIFSConstants.UNUSED_BLOCK, ministore.GetNextBlock(256)); // 3rd SBAT
Assert.AreEqual(POIFSConstants.UNUSED_BLOCK, ministore.GetNextBlock(257)); // 3rd SBAT
fs.Close();
}
示例8: TestCreateBlockIfNeeded
public void TestCreateBlockIfNeeded()
{
NPOIFSFileSystem fs = new NPOIFSFileSystem(_inst.OpenResourceAsStream("BlockSize512.zvi"));
NPOIFSMiniStore ministore = fs.GetMiniStore();
// 178 -> 179 -> 180, 181+ is free
Assert.AreEqual(179, ministore.GetNextBlock(178));
Assert.AreEqual(180, ministore.GetNextBlock(179));
Assert.AreEqual(POIFSConstants.END_OF_CHAIN, ministore.GetNextBlock(180));
for (int i = 181; i < 256; i++)
{
Assert.AreEqual(POIFSConstants.UNUSED_BLOCK, ministore.GetNextBlock(i));
}
// However, the ministore data only covers blocks to 183
for (int i = 0; i <= 183; i++)
{
ministore.GetBlockAt(i);
}
try
{
ministore.GetBlockAt(184);
Assert.Fail("No block at 184");
}
catch (IndexOutOfRangeException) { }
// The ministore itself is made up of 23 big blocks
IEnumerator<ByteBuffer> it = new NPOIFSStream(fs, fs.Root.Property.StartBlock).GetBlockIterator();
int count = 0;
while (it.MoveNext())
{
count++;
//it.MoveNext();
}
Assert.AreEqual(23, count);
// Ask it to get block 184 with creating, it will do
ministore.CreateBlockIfNeeded(184);
// The ministore should be one big block bigger now
it = new NPOIFSStream(fs, fs.Root.Property.StartBlock).GetBlockIterator();
count = 0;
while (it.MoveNext())
{
count++;
//it.MoveNext();
}
Assert.AreEqual(24, count);
// The mini block block counts now run to 191
for (int i = 0; i <= 191; i++)
{
ministore.GetBlockAt(i);
}
try
{
ministore.GetBlockAt(192);
Assert.Fail("No block at 192");
}
catch (IndexOutOfRangeException) { }
// Now try writing through to 192, check that the SBAT and blocks are there
byte[] data = new byte[15 * 64];
NPOIFSStream stream = new NPOIFSStream(ministore, 178);
stream.UpdateContents(data);
// Check now
Assert.AreEqual(179, ministore.GetNextBlock(178));
Assert.AreEqual(180, ministore.GetNextBlock(179));
Assert.AreEqual(181, ministore.GetNextBlock(180));
Assert.AreEqual(182, ministore.GetNextBlock(181));
Assert.AreEqual(183, ministore.GetNextBlock(182));
Assert.AreEqual(184, ministore.GetNextBlock(183));
Assert.AreEqual(185, ministore.GetNextBlock(184));
Assert.AreEqual(186, ministore.GetNextBlock(185));
Assert.AreEqual(187, ministore.GetNextBlock(186));
Assert.AreEqual(188, ministore.GetNextBlock(187));
Assert.AreEqual(189, ministore.GetNextBlock(188));
Assert.AreEqual(190, ministore.GetNextBlock(189));
Assert.AreEqual(191, ministore.GetNextBlock(190));
Assert.AreEqual(192, ministore.GetNextBlock(191));
Assert.AreEqual(POIFSConstants.END_OF_CHAIN, ministore.GetNextBlock(192));
for (int i = 193; i < 256; i++)
{
Assert.AreEqual(POIFSConstants.UNUSED_BLOCK, ministore.GetNextBlock(i));
}
fs.Close();
}
示例9: TestGetFreeBlockWithNoneSpare
//.........这里部分代码省略.........
Assert.AreEqual(false, fs.GetBATBlockAndIndex(109 * 128).Block.HasFreeSectors);
Assert.Fail("Should only be 109 BATs");
}
// catch (IndexOutOfRangeException)
catch (ArgumentOutOfRangeException)
{
}
// We now have 109 BATs, but no XBATs
assertBATCount(fs, 109, 0);
// Ask for it to be written out, and check the header
HeaderBlock header = WriteOutAndReadHeader(fs);
Assert.AreEqual(109, header.BATCount);
Assert.AreEqual(0, header.XBATCount);
free = fs.GetFreeBlock();
Assert.AreEqual(false, fs.GetBATBlockAndIndex(109 * 128 - 1).Block.HasFreeSectors);
Assert.AreEqual(true, fs.GetBATBlockAndIndex(110 * 128 - 1).Block.HasFreeSectors);
try
{
Assert.AreEqual(false, fs.GetBATBlockAndIndex(110 * 128).Block.HasFreeSectors);
Assert.Fail("Should only be 110 BATs");
}
//catch (IndexOutOfRangeException)
catch (ArgumentOutOfRangeException)
{
}
assertBATCount(fs, 110, 1);
header = WriteOutAndReadHeader(fs);
Assert.AreEqual(110, header.BATCount);
Assert.AreEqual(1, header.XBATCount);
for (int i = 109; i < 109 + 127; i++)
{
fs.GetFreeBlock();
int startOffset = i * 128;
while (fs.GetBATBlockAndIndex(startOffset).Block.HasFreeSectors)
{
free = fs.GetFreeBlock();
fs.SetNextBlock(free, POIFSConstants.END_OF_CHAIN);
}
assertBATCount(fs, i + 1, 1);
}
// Should now have 109+127 = 236 BATs
Assert.AreEqual(false, fs.GetBATBlockAndIndex(236 * 128 - 1).Block.HasFreeSectors);
try
{
Assert.AreEqual(false, fs.GetBATBlockAndIndex(236 * 128).Block.HasFreeSectors);
Assert.Fail("Should only be 236 BATs");
}
catch (ArgumentOutOfRangeException)
{
}
assertBATCount(fs, 236, 1);
// Ask for another, will get our 2nd XBAT
free = fs.GetFreeBlock();
Assert.AreEqual(false, fs.GetBATBlockAndIndex(236 * 128 - 1).Block.HasFreeSectors);
Assert.AreEqual(true, fs.GetBATBlockAndIndex(237 * 128 - 1).Block.HasFreeSectors);
try
{
Assert.AreEqual(false, fs.GetBATBlockAndIndex(237 * 128).Block.HasFreeSectors);
Assert.Fail("Should only be 237 BATs");
}
// catch (IndexOutOfRangeException) { }
catch (ArgumentOutOfRangeException)
{
}
// Check the counts now
assertBATCount(fs, 237, 2);
// Check the header
header = WriteOutAndReadHeader(fs);
// Now, write it out, and read it back in again fully
fs = WriteOutAndReadBack(fs);
// Check that it is seen correctly
assertBATCount(fs, 237, 2);
Assert.AreEqual(false, fs.GetBATBlockAndIndex(236 * 128 - 1).Block.HasFreeSectors);
Assert.AreEqual(true, fs.GetBATBlockAndIndex(237 * 128 - 1).Block.HasFreeSectors);
try
{
Assert.AreEqual(false, fs.GetBATBlockAndIndex(237 * 128).Block.HasFreeSectors);
Assert.Fail("Should only be 237 BATs");
}
catch (ArgumentOutOfRangeException) { }
fs.Close();
}
示例10: TestReplaceStream
public void TestReplaceStream()
{
NPOIFSFileSystem fs = new NPOIFSFileSystem(_inst.OpenResourceAsStream("BlockSize512.zvi"));
byte[] data = new byte[512];
for (int i = 0; i < data.Length; i++)
{
data[i] = (byte)(i % 256);
}
// 98 is actually the last block in a two block stream...
NPOIFSStream stream = new NPOIFSStream(fs, 98);
stream.UpdateContents(data);
// Check the reading of blocks
IEnumerator<ByteBuffer> it = stream.GetBlockIterator();
Assert.AreEqual(true, it.MoveNext());
// it.MoveNext();
ByteBuffer b = it.Current;
Assert.AreEqual(false, it.MoveNext());
// Now check the contents
data = new byte[512];
b.Read(data);
for (int i = 0; i < data.Length; i++)
{
byte exp = (byte)(i % 256);
Assert.AreEqual(exp, data[i]);
}
fs.Close();
}
示例11: TestReadWriteNewStream
public void TestReadWriteNewStream()
{
NPOIFSFileSystem fs = new NPOIFSFileSystem();
NPOIFSStream stream = new NPOIFSStream(fs);
// Check our filesystem has a BAT and the Properties
Assert.AreEqual(2, fs.GetFreeBlock());
BATBlock bat = fs.GetBATBlockAndIndex(0).Block;
Assert.AreEqual(POIFSConstants.FAT_SECTOR_BLOCK, bat.GetValueAt(0));
Assert.AreEqual(POIFSConstants.END_OF_CHAIN, bat.GetValueAt(1));
Assert.AreEqual(POIFSConstants.UNUSED_BLOCK, bat.GetValueAt(2));
// Check the stream as-is
Assert.AreEqual(POIFSConstants.END_OF_CHAIN, stream.GetStartBlock());
try
{
stream.GetBlockIterator();
Assert.Fail("Shouldn't be able to get an iterator before writing");
}
catch (Exception) { }
// Write in two blocks
byte[] data = new byte[512 + 20];
for (int i = 0; i < 512; i++)
{
data[i] = (byte)(i % 256);
}
for (int i = 512; i < data.Length; i++)
{
data[i] = (byte)(i % 256 + 100);
}
stream.UpdateContents(data);
// Check now
Assert.AreEqual(4, fs.GetFreeBlock());
bat = fs.GetBATBlockAndIndex(0).Block;
Assert.AreEqual(POIFSConstants.FAT_SECTOR_BLOCK, bat.GetValueAt(0));
Assert.AreEqual(POIFSConstants.END_OF_CHAIN, bat.GetValueAt(1));
Assert.AreEqual(3, bat.GetValueAt(2));
Assert.AreEqual(POIFSConstants.END_OF_CHAIN, bat.GetValueAt(3));
Assert.AreEqual(POIFSConstants.UNUSED_BLOCK, bat.GetValueAt(4));
IEnumerator<ByteBuffer> it = stream.GetBlockIterator();
Assert.AreEqual(true, it.MoveNext());
ByteBuffer b = it.Current;
byte[] read = new byte[512];
//b.get(read);
// Array.Copy(b, 0, read, 0, b.Length);
b.Read(read);
for (int i = 0; i < read.Length; i++)
{
//Assert.AreEqual("Wrong value at " + i, data[i], read[i]);
Assert.AreEqual(data[i], read[i], "Wrong value at " + i);
}
Assert.AreEqual(true, it.MoveNext());
b = it.Current;
read = new byte[512];
//b.get(read);
//Array.Copy(b, 0, read, 0, b.Length);
b.Read(read);
for (int i = 0; i < 20; i++)
{
Assert.AreEqual(data[i + 512], read[i]);
}
for (int i = 20; i < read.Length; i++)
{
Assert.AreEqual(0, read[i]);
}
Assert.AreEqual(false, it.MoveNext());
fs.Close();
}
示例12: TestReadFailsOnLoop
public void TestReadFailsOnLoop()
{
NPOIFSFileSystem fs = new NPOIFSFileSystem(_inst.GetFile("BlockSize512.zvi"));
// Hack the FAT so that it goes 0->1->2->0
fs.SetNextBlock(0, 1);
fs.SetNextBlock(1, 2);
fs.SetNextBlock(2, 0);
// Now try to read
NPOIFSStream stream = new NPOIFSStream(fs, 0);
IEnumerator<ByteBuffer> i = stream.GetBlockIterator();
//1st read works
Assert.AreEqual(true, i.MoveNext());
// 1st read works
// i.MoveNext();
// 2nd read works
Assert.AreEqual(true, i.MoveNext());
// i.MoveNext();
// Assert.AreEqual(true, i.MoveNext());
// 3rd read works
//i.MoveNext();
Assert.AreEqual(true, i.MoveNext());
// 4th read blows up as it loops back to 0
try
{
i.MoveNext();
Assert.Fail("Loop should have been detected but wasn't!");
}
catch (Exception)
{
// Good, it was detected
}
//Assert.AreEqual(true, i.MoveNext());
fs.Close();
}
示例13: TestReadMiniStreams
public void TestReadMiniStreams()
{
NPOIFSFileSystem fs = new NPOIFSFileSystem(_inst.OpenResourceAsStream("BlockSize512.zvi"));
NPOIFSMiniStore ministore = fs.GetMiniStore();
// 178 -> 179 -> 180 -> end
NPOIFSStream stream = new NPOIFSStream(ministore, 178);
IEnumerator<ByteBuffer> i = stream.GetBlockIterator();
Assert.AreEqual(true, i.MoveNext());
// Assert.AreEqual(true, i.MoveNext());
// Assert.AreEqual(true, i.MoveNext());
// i.MoveNext();
ByteBuffer b178 = i.Current;
Assert.AreEqual(true, i.MoveNext());
// Assert.AreEqual(true, i.MoveNext());
// i.MoveNext();
ByteBuffer b179 = i.Current;
Assert.AreEqual(true, i.MoveNext());
// i.MoveNext();
ByteBuffer b180 = i.Current;
Assert.AreEqual(false, i.MoveNext());
Assert.AreEqual(false, i.MoveNext());
// Assert.AreEqual(false, i.MoveNext());
// Check the contents of the 1st block
Assert.AreEqual((byte)0xfe, b178[0]);
Assert.AreEqual((byte)0xff, b178[1]);
Assert.AreEqual((byte)0x00, b178[2]);
Assert.AreEqual((byte)0x00, b178[3]);
Assert.AreEqual((byte)0x05, b178[4]);
Assert.AreEqual((byte)0x01, b178[5]);
Assert.AreEqual((byte)0x02, b178[6]);
Assert.AreEqual((byte)0x00, b178[7]);
// And the 2nd
Assert.AreEqual((byte)0x6c, b179[0]);
Assert.AreEqual((byte)0x00, b179[1]);
Assert.AreEqual((byte)0x00, b179[2]);
Assert.AreEqual((byte)0x00, b179[3]);
Assert.AreEqual((byte)0x28, b179[4]);
Assert.AreEqual((byte)0x00, b179[5]);
Assert.AreEqual((byte)0x00, b179[6]);
Assert.AreEqual((byte)0x00, b179[7]);
// And the 3rd
Assert.AreEqual((byte)0x30, b180[0]);
Assert.AreEqual((byte)0x00, b180[1]);
Assert.AreEqual((byte)0x00, b180[2]);
Assert.AreEqual((byte)0x00, b180[3]);
Assert.AreEqual((byte)0x00, b180[4]);
Assert.AreEqual((byte)0x00, b180[5]);
Assert.AreEqual((byte)0x00, b180[6]);
Assert.AreEqual((byte)0x80, b180[7]);
fs.Close();
}
示例14: TestReadStream4096
public void TestReadStream4096()
{
NPOIFSFileSystem fs = new NPOIFSFileSystem(_inst.GetFile("BlockSize4096.zvi"));
// 0 -> 1 -> 2 -> end
NPOIFSStream stream = new NPOIFSStream(fs, 0);
IEnumerator<ByteBuffer> i = stream.GetBlockIterator();
Assert.AreEqual(true, i.MoveNext());
// i.MoveNext();
ByteBuffer b0 = i.Current;
Assert.AreEqual(true, i.MoveNext());
// i.MoveNext();
ByteBuffer b1 = i.Current;
Assert.AreEqual(true, i.MoveNext());
// i.MoveNext();
ByteBuffer b2 = i.Current;
Assert.AreEqual(false, i.MoveNext());
// Check the contents of the 1st block
Assert.AreEqual((byte)0x9E, b0[0]);
Assert.AreEqual((byte)0x75, b0[1]);
Assert.AreEqual((byte)0x97, b0[2]);
Assert.AreEqual((byte)0xF6, b0[3]);
Assert.AreEqual((byte)0xFF, b0[4]);
Assert.AreEqual((byte)0x21, b0[5]);
Assert.AreEqual((byte)0xD2, b0[6]);
Assert.AreEqual((byte)0x11, b0[7]);
// Check the contents of the 2nd block
Assert.AreEqual((byte)0x00, b1[0]);
Assert.AreEqual((byte)0x00, b1[1]);
Assert.AreEqual((byte)0x03, b1[2]);
Assert.AreEqual((byte)0x00, b1[3]);
Assert.AreEqual((byte)0x00, b1[4]);
Assert.AreEqual((byte)0x00, b1[5]);
Assert.AreEqual((byte)0x00, b1[6]);
Assert.AreEqual((byte)0x00, b1[7]);
// Check the contents of the 3rd block
Assert.AreEqual((byte)0x6D, b2[0]);
Assert.AreEqual((byte)0x00, b2[1]);
Assert.AreEqual((byte)0x00, b2[2]);
Assert.AreEqual((byte)0x00, b2[3]);
Assert.AreEqual((byte)0x03, b2[4]);
Assert.AreEqual((byte)0x00, b2[5]);
Assert.AreEqual((byte)0x46, b2[6]);
Assert.AreEqual((byte)0x00, b2[7]);
fs.Close();
}
示例15: TestReadLongerStream
public void TestReadLongerStream()
{
NPOIFSFileSystem fs = new NPOIFSFileSystem(_inst.GetFile("BlockSize512.zvi"));
ByteBuffer b0 = null;
ByteBuffer b1 = null;
ByteBuffer b22 = null;
// The stream at 0 has 23 blocks in it
NPOIFSStream stream = new NPOIFSStream(fs, 0);
IEnumerator<ByteBuffer> i = stream.GetBlockIterator();
int count = 0;
while (i.MoveNext())
{
ByteBuffer b = i.Current;
if (count == 0)
{
b0 = b;
}
if (count == 1)
{
b1 = b;
}
if (count == 22)
{
b22 = b;
}
count++;
}
Assert.AreEqual(23, count);
// Check the contents
// 1st block is at 0
Assert.AreEqual((byte)0x9e, b0[0]);
Assert.AreEqual((byte)0x75, b0[1]);
Assert.AreEqual((byte)0x97, b0[2]);
Assert.AreEqual((byte)0xf6, b0[3]);
// 2nd block is at 1
Assert.AreEqual((byte)0x86, b1[0]);
Assert.AreEqual((byte)0x09, b1[1]);
Assert.AreEqual((byte)0x22, b1[2]);
Assert.AreEqual((byte)0xfb, b1[3]);
// last block is at 89
Assert.AreEqual((byte)0xfe, b22[0]);
Assert.AreEqual((byte)0xff, b22[1]);
Assert.AreEqual((byte)0x00, b22[2]);
Assert.AreEqual((byte)0x00, b22[3]);
Assert.AreEqual((byte)0x05, b22[4]);
Assert.AreEqual((byte)0x01, b22[5]);
Assert.AreEqual((byte)0x02, b22[6]);
Assert.AreEqual((byte)0x00, b22[7]);
fs.Close();
}