private static async Task <string> MultipartContentToStringAsync(MultipartContent content, MultipartContentToStringMode mode, bool async) { Stream stream; switch (mode) { case MultipartContentToStringMode.ReadAsStreamAsync: stream = await content.ReadAsStreamAsync(async); break; default: stream = new MemoryStream(); if (async) { await content.CopyToAsync(stream); } else { content.CopyTo(stream, null, default); } stream.Position = 0; break; } using (var reader = new StreamReader(stream)) { return(await reader.ReadToEndAsync()); } }
public async Task MultipartContent_TryComputeLength_ReturnsSameLengthAsCopyToAsync(MultipartContent multipartContent) { Assert.True(multipartContent.TryComputeLength(out long length)); var copyToStream = new MemoryStream(); multipartContent.CopyTo(copyToStream, context: null, cancellationToken: default); Assert.Equal(length, copyToStream.Length); var copyToAsyncStream = new MemoryStream(); await multipartContent.CopyToAsync(copyToAsyncStream, context : null, cancellationToken : default); Assert.Equal(length, copyToAsyncStream.Length); Assert.Equal(copyToStream.ToArray(), copyToAsyncStream.ToArray()); }