private static void VerifyReadWrite <T>(int valueLength, T value, Func <ServiceBufferFileStreamWriter, T, int> writeFunc, Func <ServiceBufferFileStreamReader, FileStreamReadResult> readFunc) { // Setup: Create a mock file stream byte[] storage = new byte[8192]; // If: // ... I write a type T to the writer using (ServiceBufferFileStreamWriter writer = new ServiceBufferFileStreamWriter(new MemoryStream(storage), 10, 10)) { int writtenBytes = writeFunc(writer, value); Assert.Equal(valueLength, writtenBytes); } // ... And read the type T back FileStreamReadResult outValue; using (ServiceBufferFileStreamReader reader = new ServiceBufferFileStreamReader(new MemoryStream(storage))) { outValue = readFunc(reader); } // Then: Assert.Equal(value, outValue.Value.RawObject); Assert.Equal(valueLength, outValue.TotalLength); Assert.NotNull(outValue.Value); }
private static string VerifyReadWrite <T>(int valueLength, T value, Func <ServiceBufferFileStreamWriter, T, int> writeFunc, Func <ServiceBufferFileStreamReader, FileStreamReadResult> readFunc, QueryExecutionSettings overrideSettings = null) { // Setup: Create a mock file stream byte[] storage = new byte[8192]; overrideSettings = overrideSettings ?? new QueryExecutionSettings(); // If: // ... I write a type T to the writer using (ServiceBufferFileStreamWriter writer = new ServiceBufferFileStreamWriter(new MemoryStream(storage), overrideSettings)) { int writtenBytes = writeFunc(writer, value); Assert.Equal(valueLength, writtenBytes); } // ... And read the type T back FileStreamReadResult outValue; using (ServiceBufferFileStreamReader reader = new ServiceBufferFileStreamReader(new MemoryStream(storage), overrideSettings)) { outValue = readFunc(reader); } // Then: Assert.Equal(value, outValue.Value.RawObject); Assert.Equal(valueLength, outValue.TotalLength); Assert.NotNull(outValue.Value); return(outValue.Value.DisplayValue); }
private static void VerifyReadWrite <T>(int valueLength, T value, Func <ServiceBufferFileStreamWriter, T, int> writeFunc, Func <ServiceBufferFileStreamReader, FileStreamReadResult> readFunc) { // Setup: Create a mock file stream wrapper Common.InMemoryWrapper mockWrapper = new Common.InMemoryWrapper(); try { // If: // ... I write a type T to the writer using (ServiceBufferFileStreamWriter writer = new ServiceBufferFileStreamWriter(mockWrapper, "abc", 10, 10)) { int writtenBytes = writeFunc(writer, value); Assert.Equal(valueLength, writtenBytes); } // ... And read the type T back FileStreamReadResult outValue; using (ServiceBufferFileStreamReader reader = new ServiceBufferFileStreamReader(mockWrapper, "abc")) { outValue = readFunc(reader); } // Then: Assert.Equal(value, outValue.Value.RawObject); Assert.Equal(valueLength, outValue.TotalLength); Assert.NotNull(outValue.Value); } finally { // Cleanup: Close the wrapper mockWrapper.Close(); } }
public void ReaderInvalidStreamCannotSeek() { // If: I create a service buffer file stream reader with a stream that cannot seek // Then: I should get an exception var invalidStream = new Mock <Stream>(); invalidStream.SetupGet(s => s.CanRead).Returns(true); invalidStream.SetupGet(s => s.CanSeek).Returns(false); Assert.Throws <InvalidOperationException>(() => { ServiceBufferFileStreamReader obj = new ServiceBufferFileStreamReader(invalidStream.Object, new QueryExecutionSettings()); obj.Dispose(); }); }