public void ImageAsyncDownloadTest() { MemoryStream sourceResponseStream = new MemoryStream(); TestResources.testimage.Save(sourceResponseStream, ImageFormat.Png); sourceResponseStream.Position = 0; Mock <HttpWebRequest> mockRequest = MockManager.Mock <HttpWebRequest>(Constructor.NotMocked); MockObject <HttpWebResponse> mockResponse = MockManager.MockObject <HttpWebResponse>(Constructor.Mocked); mockResponse.ExpectAndReturn("GetResponseStream", sourceResponseStream); mockRequest.ExpectAndReturn("GetResponse", mockResponse.Object); _imageAsyncCompletedTrigger = new AutoResetEvent(false); HttpWebService service = new HttpWebService(); service.DownloadImageAsync("http://www.battleclinic.com", ImageAysncDownloadTestCompleted, null); _imageAsyncCompletedTrigger.WaitOne(); if (_imageAsyncDownloadResult.Error != null) { Assert.Fail(_imageAsyncDownloadResult.Error.Message); } Assert.IsNotNull(_imageAsyncDownloadResult.Result, "No image retrieved"); _imageAsyncCompletedTrigger = null; _imageAsyncDownloadResult = null; }
/// <summary> /// Callback used when images are downloaded, it takes care to invoke another callback provided as our user state. /// </summary> /// <param name="e"></param> /// <param name="state"></param> private static void GotImage(DownloadImageAsyncResult e, object state) { GetImageCallback callback = (GetImageCallback)state; if (e.Error == null) { // Invokes on the UI thread. Dispatcher.BeginInvoke(() => callback(e.Result)); } else { ExceptionHandler.LogException(e.Error, true); callback(null); } }
private void ImageAysncDownloadTestCompleted(DownloadImageAsyncResult e, object state) { _imageAsyncDownloadResult = e; _imageAsyncCompletedTrigger.Set(); }