public void Constructor_ReportsBytesWritten(int offset, int count) { // Arrange Mock <Stream> mockInnerStream = new Mock <Stream>(); object userState = new object(); IAsyncResult mockIAsyncResult = MockCompletedAsyncResult.Create(true, userState); mockInnerStream.Setup(s => s.BeginWrite(It.IsAny <byte[]>(), It.IsAny <int>(), It.IsAny <int>(), It.IsAny <AsyncCallback>(), It.IsAny <object>())) .Returns(mockIAsyncResult); MockProgressEventHandler mockProgressHandler; ProgressMessageHandler progressMessageHandler = MockProgressEventHandler.CreateProgressMessageHandler(out mockProgressHandler, sendProgress: true); HttpRequestMessage request = new HttpRequestMessage(); ProgressStream progressStream = ProgressStreamTest.CreateProgressStream(progressMessageHandler: progressMessageHandler, request: request); // Act IAsyncResult result = new ProgressWriteAsyncResult( mockInnerStream.Object, progressStream, sampleData, offset, count, null, userState); // Assert Assert.True(mockProgressHandler.WasInvoked); Assert.Same(request, mockProgressHandler.Sender); Assert.Equal(count, mockProgressHandler.EventArgs.BytesTransferred); Assert.Same(userState, mockProgressHandler.EventArgs.UserState); }
public void MultipartWriteDelegatingStreamTest_CallsCallbackOnFailure() { // Arrange object expectedState = new object(); IAsyncResult mockAsyncResult = MockCompletedAsyncResult.Create(true, expectedState); Mock <Stream> mockInnerStream = new Mock <Stream>() { CallBase = true }; mockInnerStream.Setup(s => s.BeginWrite(It.IsAny <byte[]>(), It.IsAny <int>(), It.IsAny <int>(), It.IsAny <AsyncCallback>(), It.IsAny <object>())) .Returns <byte[], int, int, AsyncCallback, object>((data, offset, count, callback, state) => mockAsyncResult); mockInnerStream.Setup(s => s.EndWrite(mockAsyncResult)) .Throws(new Exception("Catch this!")); MockMultipartWriteDelegatingStream mockStream = new MockMultipartWriteDelegatingStream(mockInnerStream.Object); MockAsyncCallback mockCallback = new MockAsyncCallback(); // Act IAsyncResult result = mockStream.BeginWrite(_testData, 0, _testData.Length, mockCallback.Handler, expectedState); // Assert Assert.True(mockCallback.WasInvoked); Assert.Same(expectedState, mockCallback.AsyncResult.AsyncState); }
public void Constructor_CompletesSynchronouslyIfInnerStreamCompletesSynchronously() { // Arrange Mock <Stream> mockInnerStream = new Mock <Stream>(); object userState = new object(); IAsyncResult mockIAsyncResult = MockCompletedAsyncResult.Create(true, userState); mockInnerStream.Setup(s => s.BeginWrite(It.IsAny <byte[]>(), It.IsAny <int>(), It.IsAny <int>(), It.IsAny <AsyncCallback>(), It.IsAny <object>())) .Returns(mockIAsyncResult); ProgressStream progressStream = ProgressStreamTest.CreateProgressStream(); // Act IAsyncResult result = new ProgressWriteAsyncResult( mockInnerStream.Object, progressStream, sampleData, 2, 4, null, userState); // Assert Assert.True(result.IsCompleted); Assert.True(result.CompletedSynchronously); Assert.Same(userState, result.AsyncState); }