public void ShouldStopTransferItemsIfStopTransferIsForced() { var taskCompletetionSource = new TaskCompletionSource <bool>(); Mock.Arrange(() => _target.SendAsync(null)).IgnoreArguments().Returns(() => { taskCompletetionSource.Task.Wait(); return(Task.FromResult(true)); }); Mock.Arrange(() => _exceptionHandler.Handle(null)).IgnoreArguments().Returns(false); var itemsTransfer = new SimpleTransmitter <string>(_source, _target, _exceptionHandler); _sourceQueue.Enqueue("1"); _sourceQueue.Enqueue("2"); var transferTask = Task.Run(() => itemsTransfer.StartAsync()); SpinWait.SpinUntil(() => _sourceQueue.Count == 1); itemsTransfer.Stop(); taskCompletetionSource.SetResult(true); transferTask.Wait(); Assert.AreEqual(new[] { "2" }, _sourceQueue); }
public void ShouldTransferItemsWhileSourceNotReturnEmptyResponse() { var itemsTransfer = new SimpleTransmitter <string>(_source, _target, _exceptionHandler); _sourceQueue.Enqueue("1"); _sourceQueue.Enqueue("2"); itemsTransfer.StartAsync(); SpinWait.SpinUntil(() => _sourceQueue.Count == 0); Assert.AreEqual(new[] { "1", "2" }, _targetQueue); }
public void ShouldStopTransferItemsIfExceptionWasNotHandled() { Mock.Arrange(() => _target.SendAsync(null)).IgnoreArguments().Returns(() => { throw new Exception(); }); Mock.Arrange(() => _exceptionHandler.Handle(null)).IgnoreArguments().Returns(false); var itemsTransfer = new SimpleTransmitter <string>(_source, _target, _exceptionHandler); _sourceQueue.Enqueue("1"); _sourceQueue.Enqueue("2"); itemsTransfer.StartAsync(); SpinWait.SpinUntil(() => _sourceQueue.Count == 1); Assert.AreEqual(new[] { "2" }, _sourceQueue); }