public void EnhancedBlockStream_Bytes32() { var es = new EnhancedBlockStream(); byte[] read, write; es.WriteBytes32(null); es.Seek(0, SeekOrigin.Begin); read = es.ReadBytes32(); Assert.IsNull(read); write = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; es.Seek(0, SeekOrigin.Begin); es.WriteBytes32(write); es.Seek(0, SeekOrigin.Begin); read = es.ReadBytes32(); CollectionAssert.AreEqual(write, read); write = new byte[40000]; for (int i = 0; i < write.Length; i++) { write[i] = (byte)i; } es.Seek(0, SeekOrigin.Begin); es.WriteBytes32(write); es.Seek(0, SeekOrigin.Begin); read = es.ReadBytes32(); CollectionAssert.AreEqual(write, read); }
public void Package_HashVerify() { Package package; EnhancedBlockStream bs = new EnhancedBlockStream(); EnhancedMemoryStream es = new EnhancedMemoryStream(); PackageEntry entry; byte[] buf; byte v; buf = new byte[37000]; for (int i = 0; i < buf.Length; i++) { buf[i] = (byte)i; } //------------------------- package = new Package(); package.Create(es); bs.WriteBytes32(buf); bs.Position = 0; entry = package.AddFile("/Foo/Bar/Test1.dat", bs, (int)bs.Length); Assert.IsTrue(bs.Eof); Assert.IsTrue(entry.IsFile); Assert.IsTrue(package["/Foo"].IsFolder); Assert.IsTrue(package["/Foo/Bar"].IsFolder); Assert.IsTrue(package["/Foo/Bar/Test1.dat"].IsFile); package.Close(true); es.Position = es.Length / 2; // Corrupt a byte in the middle of the stream // to verify that the MD5 hash comparision // catches it. v = (byte)es.ReadByte(); es.Seek(-1, SeekOrigin.Current); es.WriteByte((byte)~v); es.Position = 0; try { package = new Package(es); Assert.Fail(); } catch (PackageException) { } }
public void Package_AddStream() { Package package; EnhancedBlockStream bs = new EnhancedBlockStream(); EnhancedMemoryStream es = new EnhancedMemoryStream(); PackageEntry entry; byte[] buf; buf = new byte[37000]; for (int i = 0; i < buf.Length; i++) { buf[i] = (byte)i; } //------------------------- package = new Package(); package.Create(es); bs.WriteBytes32(buf); bs.Position = 0; entry = package.AddFile("/Foo/Bar/Test1.dat", bs, (int)bs.Length); Assert.IsTrue(bs.Eof); Assert.IsTrue(entry.IsFile); Assert.IsTrue(package["/Foo"].IsFolder); Assert.IsTrue(package["/Foo/Bar"].IsFolder); Assert.IsTrue(package["/Foo/Bar/Test1.dat"].IsFile); package.Close(true); //------------------------- es.Position = 0; package = new Package(es); Assert.IsTrue(entry.IsFile); Assert.IsTrue(package["/Foo"].IsFolder); Assert.IsTrue(package["/Foo/Bar"].IsFolder); Assert.IsTrue(package["/Foo/Bar/Test1.dat"].IsFile); bs.SetLength(0); package["/Foo/Bar/Test1.dat"].GetContents(bs); bs.Position = 0; CollectionAssert.AreEqual(buf, bs.ReadBytes32()); package.Close(); }