public void CreateResponseAuth() { CFHTTPMessage response = null; var done = false; var taskCompletionSource = new TaskCompletionSource <CFHTTPMessage> (); // the following code has to be in a diff thread, else, we are blocking the current loop, not cool // perform a request so that we fail in the auth, then create the auth object and check the count TestRuntime.RunAsync(DateTime.Now.AddSeconds(30), async() => { using (var request = CFHTTPMessage.CreateRequest( new Uri(NetworkResources.Httpbin.GetStatusCodeUrl(HttpStatusCode.Unauthorized)), "GET", null)) { request.SetBody(Array.Empty <byte> ()); // empty body, we are not interested using (var stream = CFStream.CreateForHTTPRequest(request)) { Assert.IsNotNull(stream, "Null stream"); // we are only interested in the completed event stream.ClosedEvent += (sender, e) => { taskCompletionSource.SetResult(stream.GetResponseHeader()); done = true; }; // enable events and run in the current loop stream.EnableEvents(CFRunLoop.Main, CFRunLoop.ModeDefault); stream.Open(); response = await taskCompletionSource.Task; } } }, () => done); using (var auth = CFHTTPAuthentication.CreateFromResponse(response)) { Assert.NotNull(auth, "Null Auth"); Assert.IsTrue(auth.IsValid, "Auth is valid"); Assert.That(TestRuntime.CFGetRetainCount(auth.Handle), Is.EqualTo((nint)1), "RetainCount"); } }
public void RetainCountFromFile() { var path = typeof(int).Assembly.Location; using (var url = CFUrl.FromFile(path)) { Assert.That(TestRuntime.CFGetRetainCount(url.Handle), Is.EqualTo((nint)1), "RetainCount"); } }
public void CreateExtendedLinearizedTest() { TestRuntime.AssertXcodeVersion(12, TestRuntime.MinorXcode12APIMismatch); using (var cs = CGColorSpace.CreateWithName(CGColorSpaceNames.GenericRgb)) { var csl = cs.CreateExtendedLinearized(); Assert.NotNull(csl, "not null"); Assert.That((nint)TestRuntime.CFGetRetainCount(csl.Handle), Is.EqualTo((nint)1)); } }
public void CreateRequest10() { using (var m = CFHTTPMessage.CreateRequest(NetworkResources.XamarinUri, "GET", new Version(1, 0))) { Assert.That(m.Handle, Is.Not.EqualTo(IntPtr.Zero), "Handle"); Assert.False(m.IsHeaderComplete, "IsHeaderComplete"); Assert.True(m.IsRequest, "IsRequest"); Assert.Throws <InvalidOperationException> (delegate { var x = m.ResponseStatusCode; }, "ResponseStatusCode"); Assert.Throws <InvalidOperationException> (delegate { var x = m.ResponseStatusLine; }, "ResponseStatusLine"); Assert.That(m.Version.ToString(), Is.EqualTo("1.0"), "Version"); Assert.That(TestRuntime.CFGetRetainCount(m.Handle), Is.EqualTo((nint)1), "RetainCount"); } }
public void CreateEmptyFalse() { using (var m = CFHTTPMessage.CreateEmpty(false)) { Assert.That(m.Handle, Is.Not.EqualTo(IntPtr.Zero), "Handle"); Assert.False(m.IsHeaderComplete, "IsHeaderComplete"); Assert.False(m.IsRequest, "IsRequest"); Assert.That(m.ResponseStatusCode, Is.EqualTo(HttpStatusCode.OK), "ResponseStatusCode"); Assert.That(m.ResponseStatusLine, Is.Empty, "ResponseStatusLine"); Assert.That(m.Version.ToString(), Is.EqualTo("1.1"), "Version"); Assert.That(TestRuntime.CFGetRetainCount(m.Handle), Is.EqualTo((nint)1), "RetainCount"); } }
public void RetainCountFromUrl() { using (var url = CFUrl.FromUrlString("http://xamarin.com", null)) { Assert.That(TestRuntime.CFGetRetainCount(url.Handle), Is.EqualTo((nint)1), "RetainCount"); } }