diff options
Diffstat (limited to 'tests/FlatBuffers.Test/ByteBufferTests.cs')
-rw-r--r-- | tests/FlatBuffers.Test/ByteBufferTests.cs | 244 |
1 files changed, 244 insertions, 0 deletions
diff --git a/tests/FlatBuffers.Test/ByteBufferTests.cs b/tests/FlatBuffers.Test/ByteBufferTests.cs new file mode 100644 index 00000000..b3c1811c --- /dev/null +++ b/tests/FlatBuffers.Test/ByteBufferTests.cs @@ -0,0 +1,244 @@ +/* + * Copyright 2014 Google Inc. All rights reserved. + * + * Licensed 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; + +namespace FlatBuffers.Test +{ + public class ByteBufferTests + { + + public void ByteBuffer_Length_MatchesBufferLength() + { + var buffer = new byte[1000]; + var uut = new ByteBuffer(buffer); + Assert.AreEqual(buffer.Length, uut.Length); + } + + public void ByteBuffer_PutBytePopulatesBufferAtZeroOffset() + { + var buffer = new byte[1]; + var uut = new ByteBuffer(buffer); + uut.PutByte(0, (byte)99); + + Assert.AreEqual((byte)99, buffer[0]); + } + + public void ByteBuffer_PutByteCannotPutAtOffsetPastLength() + { + var buffer = new byte[1]; + var uut = new ByteBuffer(buffer); + Assert.Throws<ArgumentOutOfRangeException>(() => uut.PutByte(1, 99)); + } + + public void ByteBuffer_PutShortPopulatesBufferCorrectly() + { + var buffer = new byte[2]; + var uut = new ByteBuffer(buffer); + uut.PutShort(0, (short)1); + + // Ensure Endianness was written correctly + Assert.AreEqual((byte)1, buffer[0]); + Assert.AreEqual((byte)0, buffer[1]); + } + + public void ByteBuffer_PutShortCannotPutAtOffsetPastLength() + { + var buffer = new byte[2]; + var uut = new ByteBuffer(buffer); + Assert.Throws<ArgumentOutOfRangeException>(() => uut.PutShort(2, 99)); + } + + public void ByteBuffer_PutShortChecksLength() + { + var buffer = new byte[1]; + var uut = new ByteBuffer(buffer); + Assert.Throws<ArgumentOutOfRangeException>(() => uut.PutShort(0, 99)); + } + + public void ByteBuffer_PutShortChecksLengthAndOffset() + { + var buffer = new byte[2]; + var uut = new ByteBuffer(buffer); + Assert.Throws<ArgumentOutOfRangeException>(() => uut.PutShort(1, 99)); + } + + public void ByteBuffer_PutIntPopulatesBufferCorrectly() + { + var buffer = new byte[4]; + var uut = new ByteBuffer(buffer); + uut.PutInt(0, 0x0A0B0C0D); + + // Ensure Endianness was written correctly + Assert.AreEqual(0x0D, buffer[0]); + Assert.AreEqual(0x0C, buffer[1]); + Assert.AreEqual(0x0B, buffer[2]); + Assert.AreEqual(0x0A, buffer[3]); + } + + public void ByteBuffer_PutIntCannotPutAtOffsetPastLength() + { + var buffer = new byte[4]; + var uut = new ByteBuffer(buffer); + Assert.Throws<ArgumentOutOfRangeException>(() => uut.PutInt(2, 0x0A0B0C0D)); + } + + public void ByteBuffer_PutIntChecksLength() + { + var buffer = new byte[1]; + var uut = new ByteBuffer(buffer); + Assert.Throws<ArgumentOutOfRangeException>(() => uut.PutInt(0, 0x0A0B0C0D)); + } + + public void ByteBuffer_PutIntChecksLengthAndOffset() + { + var buffer = new byte[4]; + var uut = new ByteBuffer(buffer); + Assert.Throws<ArgumentOutOfRangeException>(() => uut.PutInt(2, 0x0A0B0C0D)); + } + + public void ByteBuffer_PutLongPopulatesBufferCorrectly() + { + var buffer = new byte[8]; + var uut = new ByteBuffer(buffer); + uut.PutLong(0, 0x010203040A0B0C0D); + + // Ensure Endianness was written correctly + Assert.AreEqual(0x0D, buffer[0]); + Assert.AreEqual(0x0C, buffer[1]); + Assert.AreEqual(0x0B, buffer[2]); + Assert.AreEqual(0x0A, buffer[3]); + Assert.AreEqual(0x04, buffer[4]); + Assert.AreEqual(0x03, buffer[5]); + Assert.AreEqual(0x02, buffer[6]); + Assert.AreEqual(0x01, buffer[7]); + } + + public void ByteBuffer_PutLongCannotPutAtOffsetPastLength() + { + var buffer = new byte[8]; + var uut = new ByteBuffer(buffer); + Assert.Throws<ArgumentOutOfRangeException>(() => uut.PutLong(2, 0x010203040A0B0C0D)); + } + + public void ByteBuffer_PutLongChecksLength() + { + var buffer = new byte[1]; + var uut = new ByteBuffer(buffer); + Assert.Throws<ArgumentOutOfRangeException>(() => uut.PutLong(0, 0x010203040A0B0C0D)); + } + + public void ByteBuffer_PutLongChecksLengthAndOffset() + { + var buffer = new byte[8]; + var uut = new ByteBuffer(buffer); + Assert.Throws<ArgumentOutOfRangeException>(() => uut.PutLong(2, 0x010203040A0B0C0D)); + } + + public void ByteBuffer_GetByteReturnsCorrectData() + { + var buffer = new byte[1]; + buffer[0] = 99; + var uut = new ByteBuffer(buffer); + Assert.AreEqual((byte)99, uut.Get(0)); + } + + public void ByteBuffer_GetByteChecksOffset() + { + var buffer = new byte[1]; + var uut = new ByteBuffer(buffer); + Assert.Throws<ArgumentOutOfRangeException>(()=>uut.Get(1)); + } + + public void ByteBuffer_GetShortReturnsCorrectData() + { + var buffer = new byte[2]; + buffer[0] = 1; + buffer[1] = 0; + var uut = new ByteBuffer(buffer); + Assert.AreEqual(1, uut.GetShort(0)); + } + + public void ByteBuffer_GetShortChecksOffset() + { + var buffer = new byte[2]; + var uut = new ByteBuffer(buffer); + Assert.Throws<ArgumentOutOfRangeException>(() => uut.GetShort(2)); + } + + public void ByteBuffer_GetShortChecksLength() + { + var buffer = new byte[2]; + var uut = new ByteBuffer(buffer); + Assert.Throws<ArgumentOutOfRangeException>(() => uut.GetShort(1)); + } + + public void ByteBuffer_GetIntReturnsCorrectData() + { + var buffer = new byte[4]; + buffer[0] = 0x0D; + buffer[1] = 0x0C; + buffer[2] = 0x0B; + buffer[3] = 0x0A; + var uut = new ByteBuffer(buffer); + Assert.AreEqual(0x0A0B0C0D, uut.GetInt(0)); + } + + public void ByteBuffer_GetIntChecksOffset() + { + var buffer = new byte[4]; + var uut = new ByteBuffer(buffer); + Assert.Throws<ArgumentOutOfRangeException>(() => uut.GetInt(4)); + } + + public void ByteBuffer_GetIntChecksLength() + { + var buffer = new byte[2]; + var uut = new ByteBuffer(buffer); + Assert.Throws<ArgumentOutOfRangeException>(() => uut.GetInt(0)); + } + + public void ByteBuffer_GetLongReturnsCorrectData() + { + var buffer = new byte[8]; + buffer[0] = 0x0D; + buffer[1] = 0x0C; + buffer[2] = 0x0B; + buffer[3] = 0x0A; + buffer[4] = 0x04; + buffer[5] = 0x03; + buffer[6] = 0x02; + buffer[7] = 0x01; + var uut = new ByteBuffer(buffer); + Assert.AreEqual(0x010203040A0B0C0D, uut.GetLong(0)); + } + + public void ByteBuffer_GetLongChecksOffset() + { + var buffer = new byte[8]; + var uut = new ByteBuffer(buffer); + Assert.Throws<ArgumentOutOfRangeException>(() => uut.GetLong(8)); + } + + public void ByteBuffer_GetLongChecksLength() + { + var buffer = new byte[7]; + var uut = new ByteBuffer(buffer); + Assert.Throws<ArgumentOutOfRangeException>(() => uut.GetLong(0)); + } + + } +} |