public void CreateDisposeRelease_ThrowsObjectDisposedException()
        {
            var safeHandle = new FakeSafeWinHttpHandle(true);

            safeHandle.Dispose();
            Assert.Throws <ObjectDisposedException>(() => safeHandle.DangerousRelease());
        }
示例#2
0
        public void Dispose()
        {
            TestControl.ResponseDelayCompletedEvent.WaitOne();

            FakeSafeWinHttpHandle.ForceGarbageCollection();
            Assert.Equal(0, FakeSafeWinHttpHandle.HandlesOpen);
        }
        public void CreateDisposeAddRef_ThrowsObjectDisposedException()
        {
            var safeHandle = new FakeSafeWinHttpHandle(true);

            safeHandle.Dispose();
            Assert.Throws <ObjectDisposedException>(() =>
                                                    { bool ignore = false; safeHandle.DangerousAddRef(ref ignore); });
        }
        public void CreateDispose_HandleIsClosed()
        {
            var safeHandle = new FakeSafeWinHttpHandle(true);

            safeHandle.Dispose();

            Assert.True(safeHandle.IsClosed, "closed");
        }
        internal Stream MakeResponseStream()
        {
            var sessionHandle = new FakeSafeWinHttpHandle(true);
            var connectHandle = new FakeSafeWinHttpHandle(true);
            var requestHandle = new FakeSafeWinHttpHandle(true);

            return(new WinHttpResponseStream(sessionHandle, connectHandle, requestHandle));
        }
示例#6
0
        internal Stream MakeResponseStream()
        {
            var state  = new WinHttpRequestState();
            var handle = new FakeSafeWinHttpHandle(true);

            handle.Callback     = WinHttpRequestCallback.StaticCallbackDelegate;
            handle.Context      = state.ToIntPtr();
            state.RequestHandle = handle;

            return(new WinHttpResponseStream(handle, state));
        }
        public void SetParentHandle_CreateParentCreateChildDisposeChildDisposeParent_HandlesClosed()
        {
            var parentHandle = new FakeSafeWinHttpHandle(true);
            var childHandle  = new FakeSafeWinHttpHandle(true);

            childHandle.SetParentHandle(parentHandle);
            childHandle.Dispose();
            parentHandle.Dispose();

            Assert.True(parentHandle.IsClosed, "closed");
            Assert.True(childHandle.IsClosed, "closed");
        }
 public void CreateAddRefDisposeRelease_HandleIsClosed()
 {
     var safeHandle = new FakeSafeWinHttpHandle(true);
     bool success = false;
     safeHandle.DangerousAddRef(ref success);
     Assert.True(success, "DangerousAddRef");
     safeHandle.Dispose();
     safeHandle.DangerousRelease();
     
     Assert.True(safeHandle.IsClosed, "closed");
     Assert.Equal(0, FakeSafeWinHttpHandle.HandlesOpen);
 }
示例#9
0
        public void CreateAddRefReleaseDispose_HandleIsClosed()
        {
            var  safeHandle = new FakeSafeWinHttpHandle(true);
            bool success    = false;

            safeHandle.DangerousAddRef(ref success);
            Assert.True(success, "DangerousAddRef");
            safeHandle.DangerousRelease();
            safeHandle.Dispose();

            Assert.True(safeHandle.IsClosed, "closed");
        }
示例#10
0
        public void SetParentHandle_CreateParentCreateChildDisposeParent_ParentNotClosed()
        {
            var parentHandle = new FakeSafeWinHttpHandle(true);
            var childHandle  = new FakeSafeWinHttpHandle(true);

            childHandle.SetParentHandle(parentHandle);
            parentHandle.Dispose();

            Assert.False(parentHandle.IsClosed, "closed");

            // Clean up safeHandles to keep outstanding handles at zero.
            childHandle.Dispose();
        }
示例#11
0
        internal Stream MakeRequestStream()
        {
            var state = new WinHttpRequestState();

            state.Pin();
            var handle = new FakeSafeWinHttpHandle(true);

            handle.Callback     = WinHttpRequestCallback.StaticCallbackDelegate;
            handle.Context      = state.ToIntPtr();
            state.RequestHandle = handle;

            return(new WinHttpRequestStream(state, WinHttpChunkMode.None));
        }
示例#12
0
        public void CreateAddRefRelease_HandleIsNotClosed()
        {
            var  safeHandle = new FakeSafeWinHttpHandle(true);
            bool success    = false;

            safeHandle.DangerousAddRef(ref success);
            Assert.True(success, "DangerousAddRef");
            safeHandle.DangerousRelease();

            Assert.False(safeHandle.IsClosed, "closed");

            // Clean up safeHandle to keep outstanding handles at zero.
            safeHandle.Dispose();
        }
示例#13
0
 public void CreateAddRefRelease_HandleIsNotClosed()
 {
     var safeHandle = new FakeSafeWinHttpHandle(true);
     bool success = false;
     safeHandle.DangerousAddRef(ref success);
     Assert.True(success, "DangerousAddRef");
     safeHandle.DangerousRelease();
     
     Assert.False(safeHandle.IsClosed, "closed");
     Assert.Equal(1, FakeSafeWinHttpHandle.HandlesOpen);
     
     // Clean up safeHandle to keep outstanding handles at zero.
     safeHandle.Dispose();
 }
示例#14
0
        public void SendAsync_MultipleCallsWithoutDispose_NoHandleLeaks()
        {
            WinHttpHandler      handler;
            HttpResponseMessage response;

            for (int i = 0; i < 50; i++)
            {
                handler  = new WinHttpHandler();
                response = SendRequestHelper(handler, () => { });
            }

            handler  = null;
            response = null;
            FakeSafeWinHttpHandle.ForceGarbageCollection();

            Assert.Equal(0, FakeSafeWinHttpHandle.HandlesOpen);
        }
        internal Stream MakeResponseStream()
        {
            var requestHandle = new FakeSafeWinHttpHandle(true);

            return new WinHttpResponseStream(requestHandle);
        }
        internal Stream MakeResponseStream()
        {
            var requestHandle = new FakeSafeWinHttpHandle(true);

            return(new WinHttpResponseStream(requestHandle));
        }
示例#17
0
 public void SetParentHandle_CreateParentCreateChildDisposeChildDisposeParent_HandlesClosed()
 {
     var parentHandle = new FakeSafeWinHttpHandle(true);
     var childHandle = new FakeSafeWinHttpHandle(true);
     childHandle.SetParentHandle(parentHandle);
     childHandle.Dispose();
     parentHandle.Dispose();
     
     Assert.True(parentHandle.IsClosed, "closed");
     Assert.True(childHandle.IsClosed, "closed");
 }
示例#18
0
 public void SetParentHandle_CreateParentCreateChildDisposeParent_ParentNotClosed()
 {
     var parentHandle = new FakeSafeWinHttpHandle(true);
     var childHandle = new FakeSafeWinHttpHandle(true);
     childHandle.SetParentHandle(parentHandle);
     parentHandle.Dispose();
     
     Assert.False(parentHandle.IsClosed, "closed");
     Assert.Equal(2, FakeSafeWinHttpHandle.HandlesOpen);
     
     // Clean up safeHandles to keep outstanding handles at zero.
     childHandle.Dispose();
 }
示例#19
0
 public void CreateDisposeRelease_ThrowsObjectDisposedException()
 {
     var safeHandle = new FakeSafeWinHttpHandle(true);
     safeHandle.Dispose();
     Assert.Throws<ObjectDisposedException>(() => safeHandle.DangerousRelease());
 }
示例#20
0
 public void CreateDisposeAddRef_ThrowsObjectDisposedException()
 {
     var safeHandle = new FakeSafeWinHttpHandle(true);
     safeHandle.Dispose();
     Assert.Throws<ObjectDisposedException>(() => 
         { bool ignore = false; safeHandle.DangerousAddRef(ref ignore); });
 }
示例#21
0
 public void CreateDisposeDispose_HandleIsClosedAndSecondDisposeIsNoop()
 {
     var safeHandle = new FakeSafeWinHttpHandle(true);
     safeHandle.Dispose();
     safeHandle.Dispose();
     Assert.True(safeHandle.IsClosed, "closed");
 }
示例#22
0
 public void Dispose()
 {
     // This runs after every test and makes sure that we run any finalizers to free all eligible handles.
     FakeSafeWinHttpHandle.ForceGarbageCollection();
     Assert.Equal(0, FakeSafeWinHttpHandle.HandlesOpen);
 }
        internal Stream MakeRequestStream()
        {
            SafeWinHttpHandle requestHandle = new FakeSafeWinHttpHandle(true);

            return(new WinHttpRequestStream(requestHandle, false));
        }
示例#24
0
        internal Stream MakeRequestStream()
        {
            SafeWinHttpHandle requestHandle = new FakeSafeWinHttpHandle(true);

            return new WinHttpRequestStream(requestHandle, false);
        }
        internal Stream MakeRequestStream()
        {
            var state = new WinHttpRequestState();
            var handle = new FakeSafeWinHttpHandle(true);
            handle.Callback = WinHttpRequestCallback.StaticCallbackDelegate;
            handle.Context = state.ToIntPtr();
            state.RequestHandle = handle;

            return new WinHttpRequestStream(state, false);
        }
示例#26
0
        internal Stream MakeResponseStream()
        {
            var sessionHandle = new FakeSafeWinHttpHandle(true);
            var connectHandle = new FakeSafeWinHttpHandle(true);
            var requestHandle = new FakeSafeWinHttpHandle(true);

            return new WinHttpResponseStream(sessionHandle, connectHandle, requestHandle);
        }