public void GetWritingStream() { var fi = "unit".TempFileInfo(); try { byte[] bytes = "This is just a test".UTF8Bytes(); FileBackedByteArray fbba = null; using (var fs = fi.GetWritingStream(it => fbba = new FileBackedByteArray(it))) { Assert.IsNull(fbba); fs.WriteBytes(bytes); Assert.IsTrue(fi.Exists, "Temp file was not created"); } Assert.IsNotNull(fbba); Assert.AreEqual(bytes.Length, fbba.Length); Assert.AreEqual(0L, fbba.Offset); using (var s = fbba.ReadingStream) { var readBytes = s.ReadAllBytesAsync().Result; CollectionAssert.AreEqual(bytes, readBytes); } var prefixedArrayBytes = bytes.Prepend((byte)bytes.Length).Prepend((byte)ILTagId.ByteArray).ToArray(); using var mso = SerializeInto(fbba, prefixedArrayBytes); } finally { fi.Delete(); } }
public void FromPartialFileToStream() { var fi = "unit".TempFileInfo(); try { var arrayBytes = new byte[] { 1, 2, 3, 4, 5, 6, 7 }; int bytesLength = arrayBytes.Length; var prefixedArrayBytes = arrayBytes.Prepend((byte)bytesLength).Prepend((byte)ILTagId.ByteArray).ToArray(); using (var fos = fi.OpenWrite()) { fos.Write(arrayBytes); fos.Write(arrayBytes); } var fbba = new FileBackedByteArray(fi, bytesLength, (ulong)bytesLength); Assert.IsNotNull(fbba); Assert.AreEqual("FileBackedByteArray#16", fbba.Formatted); Assert.AreEqual(bytesLength, fbba.Length); Assert.AreEqual(bytesLength, fbba.Offset); Assert.AreEqual(ILTagId.ByteArray, fbba.TagId); Assert.IsNull(fbba.Value); using var mso = SerializeInto(fbba, prefixedArrayBytes); mso.Position = 0; var tagArray = TagProvider.DeserializeFrom(mso); Assert.IsInstanceOf <ILTagByteArray>(tagArray); CollectionAssert.AreEqual(prefixedArrayBytes, tagArray.EncodedBytes); } finally { fi.Delete(); } }
private static async Task FromStreamToStreamAsync(Func <FileInfo, MemoryStream, Task <FileBackedByteArray> > createFrom) { var fi = "unit".TempFileInfo(); try { var arrayBytes = new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; int bytesLength = arrayBytes.Length; var prefixedArrayBytes = arrayBytes.Prepend((byte)bytesLength).Prepend((byte)ILTagId.ByteArray).ToArray(); using var ms = new MemoryStream(arrayBytes); var fbba = await createFrom(fi, ms); Assert.IsNotNull(fbba); string formatted = fbba.Formatted; StringAssert.EndsWith("#16", formatted); StringAssert.StartsWith("FileBackedByteArray", formatted); Assert.AreEqual(bytesLength, fbba.Length); Assert.AreEqual(0, fbba.Offset); Assert.AreEqual(ILTagId.ByteArray, fbba.TagId); using var mso = SerializeInto(fbba, prefixedArrayBytes); mso.Position = 0; var tagArray = TagProvider.DeserializeFrom(mso); Assert.IsInstanceOf <ILTagByteArray>(tagArray); CollectionAssert.AreEqual(prefixedArrayBytes, tagArray.EncodedBytes); var fbba2 = new FileBackedByteArray(fi); using (var fs = fbba2.OpenReadingStreamAsync().Result) CollectionAssert.AreEqual(prefixedArrayBytes, fs.ReadAllBytesAsync().Result); Assert.AreEqual(arrayBytes.Length, fbba2.Length); using var s = fbba2.ReadingStream; var bytes = s.ReadAllBytesAsync().Result; Assert.IsNotNull(bytes); CollectionAssert.AreEqual(arrayBytes, bytes); } finally { fi.Delete(); } }
private static MemoryStream SerializeInto(FileBackedByteArray fbba, byte[] prefixedArrayBytes) { var mso = new MemoryStream(); _ = fbba.SerializeIntoAsync(mso).Result; var outputBytes = mso.ToArray(); Assert.IsNotNull(outputBytes); CollectionAssert.AreEqual(prefixedArrayBytes, outputBytes); return(mso); }