Files
DotNetty/test/DotNetty.Buffers.Tests/AbstractPooledByteBufferTests.cs
2017-09-15 11:32:11 -07:00

45 lines
1.5 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 Xunit;
public abstract class AbstractPooledByteBufferTests : AbstractByteBufferTests
{
protected abstract IByteBuffer Alloc(int length, int maxCapacity);
protected override IByteBuffer NewBuffer(int length, int maxCapacity)
{
IByteBuffer buffer = this.Alloc(length, maxCapacity);
// Testing if the writerIndex and readerIndex are correct when allocate and also after we reset the mark.
Assert.Equal(0, buffer.WriterIndex);
Assert.Equal(0, buffer.ReaderIndex);
buffer.ResetReaderIndex();
buffer.ResetWriterIndex();
Assert.Equal(0, buffer.WriterIndex);
Assert.Equal(0, buffer.ReaderIndex);
return buffer;
}
[Fact]
public void EnsureWritableWithEnoughSpaceShouldNotThrow()
{
IByteBuffer buf = this.NewBuffer(1, 10);
buf.EnsureWritable(3);
Assert.True(buf.WritableBytes >= 3);
buf.Release();
}
[Fact]
public void EnsureWritableWithNotEnoughSpaceShouldThrow()
{
IByteBuffer buf = this.NewBuffer(1, 10);
Assert.Throws<IndexOutOfRangeException>(() => buf.EnsureWritable(11));
buf.Release();
}
}
}