Files

35 lines
1.3 KiB
C#

// Copyright (c) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
namespace DotNetty.Buffers.Tests
{
using System;
using System.Linq;
using System.Threading.Tasks;
using DotNetty.Common.Utilities;
using Xunit;
public class UnpooledWriteStreamTests
{
[Fact]
public async Task WriteBytesAsyncPartialWrite()
{
const int CopyLength = 200 * 1024;
const int SourceLength = 300 * 1024;
const int BufferCapacity = 400 * 1024;
var bytes = new byte[SourceLength];
var random = new Random(Guid.NewGuid().GetHashCode());
random.NextBytes(bytes);
IByteBuffer buffer = Unpooled.Buffer(BufferCapacity);
int initialWriterIndex = buffer.WriterIndex;
using (var stream = new PortionedMemoryStream(bytes, Enumerable.Repeat(1, int.MaxValue).Select(_ => random.Next(1, 10240))))
{
await buffer.WriteBytesAsync(stream, CopyLength);
}
Assert.Equal(CopyLength, buffer.WriterIndex - initialWriterIndex);
Assert.True(ByteBufferUtil.Equals(Unpooled.WrappedBuffer(bytes.Slice(0, CopyLength)), buffer));
}
}
}