public void MustSupportMultipleInitializeForReuseOfHandler() { var rasHangUp = new Mock <IRasHangUp>(); var rasEnumConnections = new Mock <IRasEnumConnections>(); var exceptionPolicy = new Mock <IExceptionPolicy>(); var waitHandle = new Mock <IValueWaiter <IntPtr> >(); var cancellationTokenSource = new Mock <ITaskCancellationSource>(); cancellationTokenSource.Setup(o => o.Token).Returns(new CancellationToken()); var cancellationTokenSourceFactory = new Mock <ITaskCancellationSourceFactory>(); cancellationTokenSourceFactory.Setup(o => o.Create(It.IsAny <CancellationToken>())).Returns(cancellationTokenSource.Object); var completionSource = new Mock <ITaskCompletionSource <RasConnection> >(); var cancellationToken = new CancellationToken(true); var target = new DefaultRasDialCallbackHandler(rasHangUp.Object, rasEnumConnections.Object, exceptionPolicy.Object, waitHandle.Object, cancellationTokenSourceFactory.Object); target.Initialize(completionSource.Object, (e) => { }, () => { }, cancellationToken); Assert.IsTrue(target.Initialized); target.Initialize(completionSource.Object, (e) => { }, () => { }, cancellationToken); Assert.IsTrue(target.Initialized); }
public void ThrowsAnExceptionWhenTheRasEnumConnectionsApiIsNull() { Assert.Throws <ArgumentNullException>(() => { var unused = new DefaultRasDialCallbackHandler(new Mock <IRasHangUp>().Object, null, new Mock <IExceptionPolicy>().Object, new Mock <IValueWaiter <IntPtr> >().Object, new Mock <ITaskCancellationSourceFactory>().Object); }); }
public void ThrowsAnExceptionWhenTheHangUpApiIsNull() { Assert.Throws <ArgumentNullException>(() => { _ = new DefaultRasDialCallbackHandler(null, rasEnumConnections.Object, exceptionPolicy.Object, waitHandle.Object); }); }
public void ThrowsAnExceptionWhenHandleIsNull() { Assert.Throws <ArgumentNullException>(() => { _ = new DefaultRasDialCallbackHandler(rasHangUp.Object, rasEnumConnections.Object, exceptionPolicy.Object, null); }); }
public void ReturnsTheConnectionWhenConnected() { var handle = new IntPtr(1); var connection = new Mock <RasConnection>(); connection.Setup(o => o.Handle).Returns(handle); rasEnumConnections.Setup(o => o.EnumerateConnections()).Returns(new[] { connection.Object }); waitHandle.Setup(o => o.Value).Returns(handle); var target = new DefaultRasDialCallbackHandler(rasHangUp.Object, rasEnumConnections.Object, exceptionPolicy.Object, waitHandle.Object); target.Initialize(completionSource, (e) => { }, () => { }, CancellationToken.None); var result = target.OnCallback(new IntPtr(1), 0, new IntPtr(1), 0, RasConnectionState.Connected, 0, 0); Assert.IsFalse(result); Assert.IsFalse(target.HasEncounteredErrors); Assert.IsTrue(target.Completed); }
public void ThrowsAnExceptionWhenHandleIsNull() { Assert.Throws <ArgumentNullException>(() => { _ = new DefaultRasDialCallbackHandler(new Mock <IRasHangUp>().Object, new Mock <IRasEnumConnections>().Object, new Mock <IExceptionPolicy>().Object, null, new Mock <ITaskCancellationSourceFactory>().Object); }); }
public void ThrowsAnExceptionWhenTheDwErrorCodeIsNonZero() { var handle = new IntPtr(1); var rasHangUp = new Mock <IRasHangUp>(); var rasEnumConnections = new Mock <IRasEnumConnections>(); var exceptionPolicy = new Mock <IExceptionPolicy>(); exceptionPolicy.Setup(o => o.Create(632)).Returns(new Exception("An exception occurred!")).Verifiable(); var waitHandle = new Mock <IValueWaiter <IntPtr> >(); waitHandle.Setup(o => o.Value).Returns(handle); var cancellationTokenSource = new Mock <ITaskCancellationSource>(); cancellationTokenSource.Setup(o => o.Token).Returns(new CancellationToken()); var cancellationTokenSourceFactory = new Mock <ITaskCancellationSourceFactory>(); cancellationTokenSourceFactory.Setup(o => o.Create(It.IsAny <CancellationToken>())).Returns(cancellationTokenSource.Object); var completionSource = new Mock <ITaskCompletionSource <RasConnection> >(); var cancellationToken = new CancellationToken(); var target = new DefaultRasDialCallbackHandler(rasHangUp.Object, rasEnumConnections.Object, exceptionPolicy.Object, waitHandle.Object, cancellationTokenSourceFactory.Object); target.Initialize(completionSource.Object, (e) => { }, () => { }, cancellationToken); var result = target.OnCallback(new IntPtr(1), 0, new IntPtr(1), 0, RasConnectionState.OpenPort, 632, 0); Assert.IsFalse(result); completionSource.Verify(o => o.SetException(It.IsAny <Exception>()), Times.Once); }
public void HangsUpTheConnectionWhenCancelled() { var handle = new IntPtr(1); var rasHangUp = new Mock <IRasHangUp>(); var rasEnumConnections = new Mock <IRasEnumConnections>(); var exceptionPolicy = new Mock <IExceptionPolicy>(); var cancellationSourceFactory = new TaskCancellationSourceFactory(); var waitHandle = new Mock <IValueWaiter <IntPtr> >(); waitHandle.Setup(o => o.Value).Returns(handle); var completionSource = new Mock <ITaskCompletionSource <RasConnection> >(); using (var cts = new CancellationTokenSource()) { var target = new DefaultRasDialCallbackHandler(rasHangUp.Object, rasEnumConnections.Object, exceptionPolicy.Object, waitHandle.Object, cancellationSourceFactory); target.Initialize(completionSource.Object, (e) => { }, () => { }, cts.Token); cts.Cancel(); var result = target.OnCallback(new IntPtr(1), 1, new IntPtr(1), 0, RasConnectionState.OpenPort, 0, 0); Assert.IsFalse(result); } rasHangUp.Verify(o => o.UnsafeHangUp(handle, false), Times.Once); completionSource.Verify(o => o.SetException(It.IsAny <OperationCanceledException>()), Times.Once); }
public void DisposesTheHandleDuringDispose() { var target = new DefaultRasDialCallbackHandler(rasHangUp.Object, rasEnumConnections.Object, exceptionPolicy.Object, waitHandle.Object); target.Dispose(); waitHandle.Verify(o => o.Dispose(), Times.Once); }
public void ThrowsAnExceptionWhenTheHandleIsAlreadySet() { var handle = new IntPtr(1); waitHandle.Setup(o => o.IsSet).Returns(true); var target = new DefaultRasDialCallbackHandler(rasHangUp.Object, rasEnumConnections.Object, exceptionPolicy.Object, waitHandle.Object); Assert.Throws <InvalidOperationException>(() => target.SetHandle(handle)); }
public void SetsTheHandle() { var handle = new IntPtr(1); var target = new DefaultRasDialCallbackHandler(rasHangUp.Object, rasEnumConnections.Object, exceptionPolicy.Object, waitHandle.Object); target.SetHandle(handle); waitHandle.Verify(o => o.Set(handle), Times.Once); }
public void MustSupportMultipleInitializeForReuseOfHandler() { var cancellationToken = new CancellationToken(true); var target = new DefaultRasDialCallbackHandler(rasHangUp.Object, rasEnumConnections.Object, exceptionPolicy.Object, waitHandle.Object); target.Initialize(completionSource, (e) => { }, () => { }, cancellationToken); Assert.IsTrue(target.Initialized); target.Initialize(completionSource, (e) => { }, () => { }, cancellationToken); Assert.IsTrue(target.Initialized); }
public void ThrowsAnExceptionWhenTheOnCompletedCallbackIsNull() { var rasHangUp = new Mock <IRasHangUp>(); var rasEnumConnections = new Mock <IRasEnumConnections>(); var exceptionPolicy = new Mock <IExceptionPolicy>(); var waitHandle = new Mock <IValueWaiter <IntPtr> >(); var cancellationTokenSourceFactory = new Mock <ITaskCancellationSourceFactory>(); var target = new DefaultRasDialCallbackHandler(rasHangUp.Object, rasEnumConnections.Object, exceptionPolicy.Object, waitHandle.Object, cancellationTokenSourceFactory.Object); Assert.Throws <ArgumentNullException>(() => target.Initialize(new Mock <ITaskCompletionSource <RasConnection> >().Object, e => { }, null, CancellationToken.None)); }
public void ThrowsAnExceptionWhenTheHandleIsNull() { var rasHangUp = new Mock <IRasHangUp>(); var rasEnumConnections = new Mock <IRasEnumConnections>(); var exceptionPolicy = new Mock <IExceptionPolicy>(); var waitHandle = new Mock <IValueWaiter <IntPtr> >(); var cancellationTokenSourceFactory = new Mock <ITaskCancellationSourceFactory>(); var target = new DefaultRasDialCallbackHandler(rasHangUp.Object, rasEnumConnections.Object, exceptionPolicy.Object, waitHandle.Object, cancellationTokenSourceFactory.Object); Assert.Throws <ArgumentNullException>(() => target.SetHandle(IntPtr.Zero)); }
public void ThrowsAnExceptionWhenOnCallbackIsNotInitialized() { var rasHangUp = new Mock <IRasHangUp>(); var rasEnumConnections = new Mock <IRasEnumConnections>(); var exceptionPolicy = new Mock <IExceptionPolicy>(); var waitHandle = new Mock <IValueWaiter <IntPtr> >(); var cancellationTokenSourceFactory = new Mock <ITaskCancellationSourceFactory>(); var target = new DefaultRasDialCallbackHandler(rasHangUp.Object, rasEnumConnections.Object, exceptionPolicy.Object, waitHandle.Object, cancellationTokenSourceFactory.Object); Assert.Throws <InvalidOperationException>(() => target.OnCallback(new IntPtr(1), 1, new IntPtr(1), 0, RasConnectionState.OpenPort, 0, 0)); }
public void DisposesTheHandleDuringDispose() { var rasHangUp = new Mock <IRasHangUp>(); var rasEnumConnections = new Mock <IRasEnumConnections>(); var exceptionPolicy = new Mock <IExceptionPolicy>(); var waitHandle = new Mock <IValueWaiter <IntPtr> >(); var cancellationSourceFactory = new Mock <ITaskCancellationSourceFactory>(); var target = new DefaultRasDialCallbackHandler(rasHangUp.Object, rasEnumConnections.Object, exceptionPolicy.Object, waitHandle.Object, cancellationSourceFactory.Object); target.Dispose(); waitHandle.Verify(o => o.Dispose(), Times.Once); }
public void ThrowsAnExceptionWhenTheDwErrorCodeIsNonZero() { var handle = new IntPtr(1); exceptionPolicy.Setup(o => o.Create(632)).Returns(new Exception("An exception occurred!")).Verifiable(); waitHandle.Setup(o => o.Value).Returns(handle); var target = new DefaultRasDialCallbackHandler(rasHangUp.Object, rasEnumConnections.Object, exceptionPolicy.Object, waitHandle.Object); target.Initialize(completionSource, (e) => { }, () => { }, CancellationToken.None); var result = target.OnCallback(new IntPtr(1), 0, new IntPtr(1), 0, RasConnectionState.OpenPort, 632, 0); Assert.IsFalse(result); Assert.IsTrue(target.HasEncounteredErrors); }
public void ThrowsAnExceptionWhenTheHandleIsAlreadySet() { var handle = new IntPtr(1); var rasHangUp = new Mock <IRasHangUp>(); var rasEnumConnections = new Mock <IRasEnumConnections>(); var exceptionPolicy = new Mock <IExceptionPolicy>(); var cancellationTokenSourceFactory = new Mock <ITaskCancellationSourceFactory>(); var waitHandle = new Mock <IValueWaiter <IntPtr> >(); waitHandle.Setup(o => o.IsSet).Returns(true); var target = new DefaultRasDialCallbackHandler(rasHangUp.Object, rasEnumConnections.Object, exceptionPolicy.Object, waitHandle.Object, cancellationTokenSourceFactory.Object); Assert.Throws <InvalidOperationException>(() => target.SetHandle(handle)); }
public void DisposesTheCancellationSourceDuringDispose() { var rasHangUp = new Mock <IRasHangUp>(); var rasEnumConnections = new Mock <IRasEnumConnections>(); var exceptionPolicy = new Mock <IExceptionPolicy>(); var waitHandle = new Mock <IValueWaiter <IntPtr> >(); var cancellationSource = new Mock <ITaskCancellationSource>(); var cancellationSourceFactory = new Mock <ITaskCancellationSourceFactory>(); cancellationSourceFactory.Setup(o => o.Create(It.IsAny <CancellationToken>())).Returns(cancellationSource.Object); var target = new DefaultRasDialCallbackHandler(rasHangUp.Object, rasEnumConnections.Object, exceptionPolicy.Object, waitHandle.Object, cancellationSourceFactory.Object); target.Initialize(new Mock <ITaskCompletionSource <RasConnection> >().Object, e => { }, () => { }, CancellationToken.None); target.Dispose(); cancellationSource.Verify(o => o.Dispose(), Times.Once); }
public void RaisesTheCallbackAction() { var handle = new IntPtr(1); waitHandle.Setup(o => o.Value).Returns(handle); var called = false; var target = new DefaultRasDialCallbackHandler(rasHangUp.Object, rasEnumConnections.Object, exceptionPolicy.Object, waitHandle.Object); target.Initialize(completionSource, (e) => { Assert.AreEqual(RasConnectionState.OpenPort, e.State); called = true; }, () => { }, CancellationToken.None); var result = target.OnCallback(new IntPtr(1), 0, new IntPtr(1), 0, RasConnectionState.OpenPort, 0, 0); Assert.IsTrue(result); Assert.IsTrue(called); }
public void ReturnsTheConnectionWhenConnected() { var handle = new IntPtr(1); var connection = new Mock <RasConnection>(); connection.Setup(o => o.Handle).Returns(handle); var rasHangUp = new Mock <IRasHangUp>(); var rasEnumConnections = new Mock <IRasEnumConnections>(); rasEnumConnections.Setup(o => o.EnumerateConnections()).Returns(new[] { connection.Object }); var exceptionPolicy = new Mock <IExceptionPolicy>(); var waitHandle = new Mock <IValueWaiter <IntPtr> >(); waitHandle.Setup(o => o.Value).Returns(handle); var cancellationTokenSource = new Mock <ITaskCancellationSource>(); cancellationTokenSource.Setup(o => o.Token).Returns(new CancellationToken()); var cancellationTokenSourceFactory = new Mock <ITaskCancellationSourceFactory>(); cancellationTokenSourceFactory.Setup(o => o.Create(It.IsAny <CancellationToken>())).Returns(cancellationTokenSource.Object); var completionSource = new Mock <ITaskCompletionSource <RasConnection> >(); var cancellationToken = new CancellationToken(); var target = new DefaultRasDialCallbackHandler(rasHangUp.Object, rasEnumConnections.Object, exceptionPolicy.Object, waitHandle.Object, cancellationTokenSourceFactory.Object); target.Initialize(completionSource.Object, (e) => { }, () => { }, cancellationToken); var result = target.OnCallback(new IntPtr(1), 0, new IntPtr(1), 0, RasConnectionState.Connected, 0, 0); Assert.IsFalse(result); completionSource.Verify(o => o.SetResult(It.IsAny <RasConnection>()), Times.Once); }
public void RaisesTheCallbackAction() { var handle = new IntPtr(1); var rasHangUp = new Mock <IRasHangUp>(); var rasEnumConnections = new Mock <IRasEnumConnections>(); var exceptionPolicy = new Mock <IExceptionPolicy>(); var cancellationTokenSource = new Mock <ITaskCancellationSource>(); cancellationTokenSource.Setup(o => o.Token).Returns(new CancellationToken()); var cancellationTokenSourceFactory = new Mock <ITaskCancellationSourceFactory>(); cancellationTokenSourceFactory.Setup(o => o.Create(It.IsAny <CancellationToken>())).Returns(cancellationTokenSource.Object); var waitHandle = new Mock <IValueWaiter <IntPtr> >(); waitHandle.Setup(o => o.Value).Returns(handle); var completionSource = new Mock <ITaskCompletionSource <RasConnection> >(); var cancellationToken = new CancellationToken(); var called = false; var target = new DefaultRasDialCallbackHandler(rasHangUp.Object, rasEnumConnections.Object, exceptionPolicy.Object, waitHandle.Object, cancellationTokenSourceFactory.Object); target.Initialize(completionSource.Object, (e) => { Assert.AreEqual(RasConnectionState.OpenPort, e.State); called = true; }, () => { }, cancellationToken); var result = target.OnCallback(new IntPtr(1), 0, new IntPtr(1), 0, RasConnectionState.OpenPort, 0, 0); Assert.IsTrue(result); Assert.IsTrue(called); }
public void ThrowsAnExceptionWhenTheHandleIsNull() { var target = new DefaultRasDialCallbackHandler(rasHangUp.Object, rasEnumConnections.Object, exceptionPolicy.Object, waitHandle.Object); Assert.Throws <ArgumentNullException>(() => target.SetHandle(IntPtr.Zero)); }
public void ThrowsAnExceptionWhenTheOnCompletedCallbackIsNull() { var target = new DefaultRasDialCallbackHandler(rasHangUp.Object, rasEnumConnections.Object, exceptionPolicy.Object, waitHandle.Object); Assert.Throws <ArgumentNullException>(() => target.Initialize(completionSource, e => { }, null, CancellationToken.None)); }
public void ThrowsAnExceptionWhenOnCallbackIsNotInitialized() { var target = new DefaultRasDialCallbackHandler(rasHangUp.Object, rasEnumConnections.Object, exceptionPolicy.Object, waitHandle.Object); Assert.Throws <InvalidOperationException>(() => target.OnCallback(new IntPtr(1), 1, new IntPtr(1), 0, RasConnectionState.OpenPort, 0, 0)); }