awips2/cotsSource/org.apache.qpid/dotnet/Qpid.Buffer.Tests/SlicedByteBufferTests.cs
root 9f19e3f712 Initial revision of AWIPS2 11.9.0-7p5
Former-commit-id: 64fa9254b946eae7e61bbc3f513b7c3696c4f54f
2012-01-06 08:55:05 -06:00

133 lines
3.6 KiB
C#

/*
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*/
using System;
using NUnit.Framework;
using Apache.Qpid.Buffer;
namespace Apache.Qpid.Buffer.Tests
{
/// <summary>
/// Tests for the SlicedByteBuffer class
/// </summary>
[TestFixture]
public class SlicedByteBufferTests
{
private ByteBuffer _baseBuffer;
[SetUp]
public void Setup()
{
const int size = 50;
_baseBuffer = ByteBuffer.Allocate(size);
for ( byte b = 0; b < 10; b++ )
{
_baseBuffer.Put(b);
}
_baseBuffer.Flip();
}
[Test]
public void CanSliceBuffer()
{
_baseBuffer.Position = 5;
ByteBuffer slice = _baseBuffer.Slice();
Assert.AreEqual(5, slice.Capacity);
Assert.AreEqual(0, slice.Position);
Assert.AreEqual(5, slice.Remaining);
Assert.AreEqual(5, slice.Limit);
}
[Test]
public void CanReadWriteSlice()
{
_baseBuffer.Position = 5;
ByteBuffer slice = _baseBuffer.Slice();
slice.Put((byte) 0xFF).Put((byte) 0xF0).Put((byte) 0xA0);
slice.Flip();
Assert.AreEqual(3, slice.Limit);
Assert.AreEqual(0xFF, slice.GetByte());
Assert.AreEqual(0xF0, slice.GetByte());
Assert.AreEqual(0xA0, slice.GetByte());
}
[Test]
public void WriteModifiesBaseBufferOnCorrectPosition()
{
_baseBuffer.Position = 5;
ByteBuffer slice = _baseBuffer.Slice();
slice.Put((byte) 0xFF);
slice.Flip();
// reading the _baseBuffer at position 5 should yield 0xFF
_baseBuffer.Position = 5;
Assert.AreEqual(0xFF, _baseBuffer.GetByte());
}
[Test]
public void CanReadWriteByteArray()
{
_baseBuffer.Position = 5;
ByteBuffer slice = _baseBuffer.Slice();
byte[] data = {0xFF, 0xF0, 0xF2, 0xEE, 0x23};
slice.Put(data, 2, 2);
slice.Flip();
Assert.AreEqual(2, slice.Limit);
Assert.AreEqual(0xF2, slice.GetByte());
Assert.AreEqual(0xEE, slice.GetByte());
}
[Test]
[ExpectedException(typeof(BufferOverflowException))]
public void ThrowWhenWritePastLimit()
{
_baseBuffer.Position = 5;
ByteBuffer slice = _baseBuffer.Slice();
slice.Put(0x01).Put(0x02);
}
[Test]
[ExpectedException(typeof(NotSupportedException))]
public void ThrowOnCompact()
{
// we don't support compacting
ByteBuffer slice = _baseBuffer.Slice();
slice.Compact();
}
[Test]
[ExpectedException(typeof(NotSupportedException))]
public void ThrowOnResize()
{
// we don't support resizing
ByteBuffer slice = _baseBuffer.Slice();
slice.Expand(50);
}
} // class SlicedByteBufferTests
}