public void TestCopyFrom() { var data0 = RandomBytes(10000000, 0); var data1 = RandomBytes(10000000, 1); var stats = TestByteBufferStatistics.Empty; using (var bb = new TestByteBuffer(data0)) using (var ms = new MemoryStream(TestByteBuffer.CopyBytes(data1))) { bb.CopyFrom(ms, 750000); stats += bb.LastStatistics; bb.CopyFrom(ms, 750000 + 1); stats += bb.LastStatistics; bb.CopyFrom(ms, 500000); stats += bb.LastStatistics; bb.CopyFrom(ms, 1000000 - 1); stats += bb.LastStatistics; bb.CopyFrom(ms, 1001101); stats += bb.LastStatistics; } using (var bb = new TestByteBuffer(data0)) using (var ms = new MemoryStream(TestByteBuffer.CopyBytes(data1))) { bb.InitializeStream(); bb.CopyFrom(ms, 750000); stats += bb.LastStatistics; bb.CopyFrom(ms, 750000 + 1); stats += bb.LastStatistics; bb.CopyFrom(ms, 500000); stats += bb.LastStatistics; bb.CopyFrom(ms, 1000000 - 1); stats += bb.LastStatistics; bb.CopyFrom(ms, 1001101); stats += bb.LastStatistics; } Console.WriteLine(stats); }
public void TestCopyFrom() { var data0 = RandomBytes(9432, -0x02F0B4EF); var data1 = RandomBytes(8472, -0x7BFC1702); using (var bb = new TestByteBuffer(data0)) using (var ms = new MemoryStream(TestByteBuffer.CopyBytes(data1))) { var result = bb.CopyFrom(ms, 4195); Assert.AreEqual(4195, bb.Length, "CopyFrom - length"); Assert.AreEqual(0, bb.StreamPosition, "CopyFrom - StreamPosition"); Assert.AreEqual(4195, result, "CopyFrom - first batch return value"); AssertAreEqual(data1, 0, bb.DumpTestData(), 0, 4195, "CopyFrom - first batch data"); result = bb.CopyFrom(ms, 9000); Assert.AreEqual(9000, bb.Length, "CopyFrom - length"); // apparently the length of the buffer after CopyFrom is the bytes requested, and not actual bytes read Assert.AreEqual(0, bb.StreamPosition, "CopyFrom - StreamPosition"); Assert.AreEqual(4277, result, "CopyFrom - second batch return value"); AssertAreEqual(data1, 4195, bb.DumpTestData(), 0, 4277, "CopyFrom - second batch data"); } using (var bb = new TestByteBuffer(data0)) using (var ms = new MemoryStream(TestByteBuffer.CopyBytes(data1))) { bb.InitializeStream(position: 42); var result = bb.CopyFrom(ms, 4195); Assert.AreEqual(4195, bb.Length, "CopyFrom - length - after Stream initialized"); Assert.AreEqual(0, bb.StreamPosition, "CopyFrom - StreamPosition - after Stream initialized"); Assert.AreEqual(4195, result, "CopyFrom - first batch return value - after Stream initialized"); AssertAreEqual(data1, 0, bb.DumpTestData(), 0, 4195, "CopyFrom - first batch data - after Stream initialized"); bb.InitializeStream(position: 42); result = bb.CopyFrom(ms, 9000); Assert.AreEqual(9000, bb.Length, "CopyFrom - length - after Stream initialized"); // apparently the length of the buffer after CopyFrom is the bytes requested, and not actual bytes read Assert.AreEqual(0, bb.StreamPosition, "CopyFrom - StreamPosition - after Stream initialized"); Assert.AreEqual(4277, result, "CopyFrom - second batch return value - after Stream initialized"); AssertAreEqual(data1, 4195, bb.DumpTestData(), 0, 4277, "CopyFrom - second batch data - after Stream initialized"); } }