public void GetByteRange_WhenBufferIsSmallerThanRequestedCount_Throws() { // Arrange var bytes = Enumerable.Range(0, 255).Select(i => (byte)i).ToArray(); using var ms = new MemoryStream(bytes); var streamByteBuffer = new StreamByteBuffer(ms, 0, 255); // Act + Assert var buffer = new byte[10]; Assert.Throws <ArgumentException>(() => streamByteBuffer.GetByteRange(0, 20, buffer)); }
public void Data_CompareWithInitializer_ExactMatch(int offset, int count) { // Arrange var bytes = Enumerable.Range(0, 255).Select(i => (byte)i).ToArray(); var expected = new ArraySegment <byte>(bytes, offset, count); using var ms = new MemoryStream(bytes); var buffer = new StreamByteBuffer(ms, offset, count); // Act var actual = buffer.Data; // Assert Assert.Equal(expected.Count, actual.Length); Assert.Equal(expected, actual); }
public void GetByteRange_CompareWithInitializer_ExactMatch(int ctorOffset, int ctorCount, int byteRangeOffset, int byteRangeCount) { // Arrange var bytes = Enumerable.Range(0, 255).Select(i => (byte)i).ToArray(); using var ms = new MemoryStream(bytes); var buffer = new StreamByteBuffer(ms, ctorOffset, ctorCount); var expected = new ArraySegment <byte>(bytes, ctorOffset + byteRangeOffset, Math.Min(ctorCount, byteRangeCount)); // Act var actual = new byte[Math.Min(ctorCount, byteRangeCount)]; buffer.GetByteRange(byteRangeOffset, byteRangeCount, actual); // Assert Assert.Equal(expected.Count, actual.Length); Assert.Equal(expected, actual); }
/// <summary> /// Gets a byte buffer of specified length from the current position and moves to subsequent position. /// </summary> /// <param name="count">Number of bytes to read.</param> /// <returns>Byte buffer containing the read bytes.</returns> public IByteBuffer GetBuffer(uint count) { IByteBuffer buffer = null; if (count == 0) { buffer = EmptyBuffer.Value; } else if (count >= this.LargeObjectSize) { buffer = new StreamByteBuffer(_stream, _stream.Position, count); _stream.Seek((int)count, SeekOrigin.Current); } else { buffer = new MemoryByteBuffer(GetBytes((int)count)); } return(buffer); }
public void CopyToStream_ShouldWorkCorrectly(int total, int offset, int count) { // Arrange var bytes = Enumerable.Range(0, total).Select(i => (byte)i).ToArray(); using var inputMs = new MemoryStream(bytes); using var outputMs = new MemoryStream(bytes.Length); var buffer = new StreamByteBuffer(inputMs, offset, count); var expected = new ArraySegment <byte>(bytes, offset, count); // Act buffer.CopyToStream(outputMs); // Assert var actual = outputMs.ToArray(); Assert.Equal(expected.Count, actual.Length); Assert.Equal(expected, actual); }
static void Example() { string imageContentFile = WORKING_DIR + @"\image_content.data"; // Example of reading an image file and serializing it into a single binary file using (var buffer = new StreamByteBuffer(new FileStream(imageContentFile, FileMode.Create, FileAccess.Write, FileShare.None))) using (var context = new SerializationContext(buffer)) { var container = BuildSerializableEntity(context); container.Serialize(); } // Example of deserializing an binary file using (var buffer = new StreamByteBuffer(new FileStream(imageContentFile, FileMode.Open, FileAccess.Read, FileShare.None))) using (var context = new SerializationContext(buffer)) { var container = new ContentContainer(context); container.Deserialize(); } }
static void ExampleUsingFormatter() { string imageContentFile = WORKING_DIR + @"\image_content_using_formatter.data"; ChoiFormatter formatter = new ChoiFormatter(typeof(ContentContainer)); // Example of reading an image file and serializing it into a single binary file using (var stream = new FileStream(imageContentFile, FileMode.Create, FileAccess.Write, FileShare.None)) using (var buffer = new StreamByteBuffer(stream)) using (var context = new SerializationContext(buffer)) { formatter.Serialize(stream, BuildSerializableEntity(context)); } // Example of deserializing an binary file using (var stream = new FileStream(imageContentFile, FileMode.Open, FileAccess.Read, FileShare.None)) { ContentContainer data2 = (ContentContainer)formatter.Deserialize(stream); } }
static void Main(string[] args) { string dataFile = Directory.GetCurrentDirectory() + @"\..\..\..\sample.data"; // Generating binary file using file streams using (var stream = new FileStream(dataFile, FileMode.Create, FileAccess.Write, FileShare.None)) using (var buffer = new StreamByteBuffer(stream)) { // input string type data buffer.Put("string data", 10) // input int type .Put(1) // input long type .Put(1L) // input float type .Put(1F) // input null bytes .PutNull(2) // input single byte .Put((byte)0x00) // input bytes .Put(new byte[] { 0x00, 0x01 }); } // Reading binary file using file stream using (var stream = new FileStream(dataFile, FileMode.Open, FileAccess.Read, FileShare.None)) using (var buffer = new StreamByteBuffer(stream)) { // get string type var data1 = buffer.Get <string>(10); // get int type var data2 = buffer.Get <int>(); // get long type var data3 = buffer.Get <long>(); // get float type var data4 = buffer.Get <float>(); // get bytes var data5 = buffer.Get(2); // get single byte var data6 = buffer.Get(); // get bytes var data7 = buffer.Get(2); } // Generating binary file using (var buffer = new InMemoryByteBuffer()) { // input string type data buffer.Put("string data", 10) // input int type .Put(1) // input long type .Put(1L) // input float type .Put(1F) // input null bytes .PutNull(2) // input single byte .Put((byte)0x00) // input bytes .Put(new byte[] { 0x00, 0x01 }); File.WriteAllBytes(dataFile, buffer.ToArray()); } // Reading binary files using (var buffer = new InMemoryByteBuffer(File.ReadAllBytes(dataFile))) { // get string type var data1 = buffer.Get <string>(10); // get int type var data2 = buffer.Get <int>(); // get long type var data3 = buffer.Get <long>(); // get float type var data4 = buffer.Get <float>(); // get bytes var data5 = buffer.Get(2); // get single byte var data6 = buffer.Get(); // get bytes var data7 = buffer.Get(2); } }