Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
 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);
        }
Exemplo n.º 6
0
 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);
     });
 }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
        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);
        }
Exemplo n.º 13
0
        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));
        }
Exemplo n.º 14
0
        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));
        }
Exemplo n.º 15
0
        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));
        }
Exemplo n.º 16
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);
        }
Exemplo n.º 18
0
        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));
        }
Exemplo n.º 19
0
        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);
        }
Exemplo n.º 21
0
        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);
        }
Exemplo n.º 22
0
        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));
        }