Index: Src/GoogleApis.Tests/Apis/Requests/BatchRequestTest.cs =================================================================== --- a/Src/GoogleApis.Tests/Apis/Requests/BatchRequestTest.cs +++ b/Src/GoogleApis.Tests/Apis/Requests/BatchRequestTest.cs @@ -211,7 +211,7 @@ this.successful2ndResponse = successful2ndReponse; } - protected override async Task SendAsyncCore(HttpRequestMessage request, + protected override Task SendAsyncCore(HttpRequestMessage request, CancellationToken cancellationToken) { #region Verify Request Message @@ -237,7 +237,9 @@ Encoding.UTF8, "multipart/mixed"); response.Content.Headers.ContentType.Parameters.Add(new NameValueHeaderValue("boundary", boundary)); - return response; + TaskCompletionSource tcs = new TaskCompletionSource(); + tcs.SetResult(response); + return tcs.Task; } } @@ -323,6 +325,35 @@ } [Test] + public void ExecuteAsync_NoCallback_Test() + { + var handler = new BatchMessageHandler(true); + var initializer = new BaseClientService.Initializer() + { + HttpClientFactory = new MockHttpClientFactory(handler) + }; + + using (var service = new MockClientService(initializer, "http://sample.com")) + { + var responses = new List>(); + var batch = new BatchRequest(service); + var request1 = new TestClientServiceRequest(service, new MockRequest + { + ETag = "\"100\"", + Name = "Name1" + }); + var request2 = new TestClientServiceRequest(service, new MockRequest + { + ETag = "\"200\"", + Name = "Name1-1" + }); + batch.Queue(request1, null); + batch.Queue(request2, null); + batch.ExecuteAsync().Wait(); + } + } + + [Test] public void CreateOuterRequestContent_Test() { using (var service = new MockClientService("http://sample.com")) Index: Src/GoogleApis.Tests/GoogleApis.Tests.csproj =================================================================== --- a/Src/GoogleApis.Tests/GoogleApis.Tests.csproj +++ b/Src/GoogleApis.Tests/GoogleApis.Tests.csproj @@ -51,7 +51,8 @@ 4 false TRACE - bin\Release\Google.Apis.Tests.xml + + true Index: Src/GoogleApis/Apis/Requests/BatchRequest.cs =================================================================== --- a/Src/GoogleApis/Apis/Requests/BatchRequest.cs +++ b/Src/GoogleApis/Apis/Requests/BatchRequest.cs @@ -101,6 +101,9 @@ HttpResponseMessage message) { base.OnResponse(content, error, index, message); + if (OnResponseCallback == null) + return; + OnResponseCallback(content as TResponse, error, index, message); } } @@ -158,7 +161,7 @@ } /// Asynchronously executes the batch request. - /// Cancellation token to cancel operation. + /// Cancellation token to cancel operation. public async Task ExecuteAsync(CancellationToken cancellationToken) { if (Count < 1)