1*890232f2SAndroid Build Coastguard Worker /* 2*890232f2SAndroid Build Coastguard Worker * Copyright 2014 Google Inc. All rights reserved. 3*890232f2SAndroid Build Coastguard Worker * 4*890232f2SAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*890232f2SAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*890232f2SAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*890232f2SAndroid Build Coastguard Worker * 8*890232f2SAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 9*890232f2SAndroid Build Coastguard Worker * 10*890232f2SAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*890232f2SAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*890232f2SAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*890232f2SAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*890232f2SAndroid Build Coastguard Worker * limitations under the License. 15*890232f2SAndroid Build Coastguard Worker */ 16*890232f2SAndroid Build Coastguard Worker 17*890232f2SAndroid Build Coastguard Worker using System; 18*890232f2SAndroid Build Coastguard Worker using System.Runtime.InteropServices; 19*890232f2SAndroid Build Coastguard Worker 20*890232f2SAndroid Build Coastguard Worker namespace FlatBuffers.Test 21*890232f2SAndroid Build Coastguard Worker { 22*890232f2SAndroid Build Coastguard Worker [FlatBuffersTestClass] 23*890232f2SAndroid Build Coastguard Worker public class ByteBufferTests 24*890232f2SAndroid Build Coastguard Worker { 25*890232f2SAndroid Build Coastguard Worker 26*890232f2SAndroid Build Coastguard Worker [FlatBuffersTestMethod] ByteBuffer_Length_MatchesBufferLength()27*890232f2SAndroid Build Coastguard Worker public void ByteBuffer_Length_MatchesBufferLength() 28*890232f2SAndroid Build Coastguard Worker { 29*890232f2SAndroid Build Coastguard Worker var buffer = new byte[1000]; 30*890232f2SAndroid Build Coastguard Worker var uut = new ByteBuffer(buffer); 31*890232f2SAndroid Build Coastguard Worker Assert.AreEqual(buffer.Length, uut.Length); 32*890232f2SAndroid Build Coastguard Worker } 33*890232f2SAndroid Build Coastguard Worker 34*890232f2SAndroid Build Coastguard Worker [FlatBuffersTestMethod] ByteBuffer_PutBytePopulatesBufferAtZeroOffset()35*890232f2SAndroid Build Coastguard Worker public void ByteBuffer_PutBytePopulatesBufferAtZeroOffset() 36*890232f2SAndroid Build Coastguard Worker { 37*890232f2SAndroid Build Coastguard Worker var buffer = new byte[1]; 38*890232f2SAndroid Build Coastguard Worker var uut = new ByteBuffer(buffer); 39*890232f2SAndroid Build Coastguard Worker uut.PutByte(0, (byte)99); 40*890232f2SAndroid Build Coastguard Worker 41*890232f2SAndroid Build Coastguard Worker Assert.AreEqual((byte)99, buffer[0]); 42*890232f2SAndroid Build Coastguard Worker } 43*890232f2SAndroid Build Coastguard Worker 44*890232f2SAndroid Build Coastguard Worker #if !BYTEBUFFER_NO_BOUNDS_CHECK 45*890232f2SAndroid Build Coastguard Worker [FlatBuffersTestMethod] ByteBuffer_PutByteCannotPutAtOffsetPastLength()46*890232f2SAndroid Build Coastguard Worker public void ByteBuffer_PutByteCannotPutAtOffsetPastLength() 47*890232f2SAndroid Build Coastguard Worker { 48*890232f2SAndroid Build Coastguard Worker var uut = new ByteBuffer(1); 49*890232f2SAndroid Build Coastguard Worker Assert.Throws<ArgumentOutOfRangeException>(() => uut.PutByte(1, 99)); 50*890232f2SAndroid Build Coastguard Worker } 51*890232f2SAndroid Build Coastguard Worker #endif 52*890232f2SAndroid Build Coastguard Worker 53*890232f2SAndroid Build Coastguard Worker [FlatBuffersTestMethod] ByteBuffer_PutShortPopulatesBufferCorrectly()54*890232f2SAndroid Build Coastguard Worker public void ByteBuffer_PutShortPopulatesBufferCorrectly() 55*890232f2SAndroid Build Coastguard Worker { 56*890232f2SAndroid Build Coastguard Worker var buffer = new byte[2]; 57*890232f2SAndroid Build Coastguard Worker var uut = new ByteBuffer(buffer); 58*890232f2SAndroid Build Coastguard Worker uut.PutShort(0, (short)1); 59*890232f2SAndroid Build Coastguard Worker 60*890232f2SAndroid Build Coastguard Worker // Ensure Endianness was written correctly 61*890232f2SAndroid Build Coastguard Worker Assert.AreEqual((byte)1, buffer[0]); 62*890232f2SAndroid Build Coastguard Worker Assert.AreEqual((byte)0, buffer[1]); 63*890232f2SAndroid Build Coastguard Worker } 64*890232f2SAndroid Build Coastguard Worker 65*890232f2SAndroid Build Coastguard Worker #if !BYTEBUFFER_NO_BOUNDS_CHECK 66*890232f2SAndroid Build Coastguard Worker [FlatBuffersTestMethod] ByteBuffer_PutShortCannotPutAtOffsetPastLength()67*890232f2SAndroid Build Coastguard Worker public void ByteBuffer_PutShortCannotPutAtOffsetPastLength() 68*890232f2SAndroid Build Coastguard Worker { 69*890232f2SAndroid Build Coastguard Worker var uut = new ByteBuffer(2); 70*890232f2SAndroid Build Coastguard Worker Assert.Throws<ArgumentOutOfRangeException>(() => uut.PutShort(2, 99)); 71*890232f2SAndroid Build Coastguard Worker } 72*890232f2SAndroid Build Coastguard Worker #endif 73*890232f2SAndroid Build Coastguard Worker 74*890232f2SAndroid Build Coastguard Worker #if !BYTEBUFFER_NO_BOUNDS_CHECK 75*890232f2SAndroid Build Coastguard Worker [FlatBuffersTestMethod] ByteBuffer_PutShortChecksLength()76*890232f2SAndroid Build Coastguard Worker public void ByteBuffer_PutShortChecksLength() 77*890232f2SAndroid Build Coastguard Worker { 78*890232f2SAndroid Build Coastguard Worker var uut = new ByteBuffer(1); 79*890232f2SAndroid Build Coastguard Worker Assert.Throws<ArgumentOutOfRangeException>(() => uut.PutShort(0, 99)); 80*890232f2SAndroid Build Coastguard Worker } 81*890232f2SAndroid Build Coastguard Worker 82*890232f2SAndroid Build Coastguard Worker [FlatBuffersTestMethod] ByteBuffer_PutShortChecksLengthAndOffset()83*890232f2SAndroid Build Coastguard Worker public void ByteBuffer_PutShortChecksLengthAndOffset() 84*890232f2SAndroid Build Coastguard Worker { 85*890232f2SAndroid Build Coastguard Worker var uut = new ByteBuffer(2); 86*890232f2SAndroid Build Coastguard Worker Assert.Throws<ArgumentOutOfRangeException>(() => uut.PutShort(1, 99)); 87*890232f2SAndroid Build Coastguard Worker } 88*890232f2SAndroid Build Coastguard Worker #endif 89*890232f2SAndroid Build Coastguard Worker 90*890232f2SAndroid Build Coastguard Worker [FlatBuffersTestMethod] ByteBuffer_PutIntPopulatesBufferCorrectly()91*890232f2SAndroid Build Coastguard Worker public void ByteBuffer_PutIntPopulatesBufferCorrectly() 92*890232f2SAndroid Build Coastguard Worker { 93*890232f2SAndroid Build Coastguard Worker var buffer = new byte[4]; 94*890232f2SAndroid Build Coastguard Worker var uut = new ByteBuffer(buffer); 95*890232f2SAndroid Build Coastguard Worker uut.PutInt(0, 0x0A0B0C0D); 96*890232f2SAndroid Build Coastguard Worker 97*890232f2SAndroid Build Coastguard Worker // Ensure Endianness was written correctly 98*890232f2SAndroid Build Coastguard Worker Assert.AreEqual(0x0D, buffer[0]); 99*890232f2SAndroid Build Coastguard Worker Assert.AreEqual(0x0C, buffer[1]); 100*890232f2SAndroid Build Coastguard Worker Assert.AreEqual(0x0B, buffer[2]); 101*890232f2SAndroid Build Coastguard Worker Assert.AreEqual(0x0A, buffer[3]); 102*890232f2SAndroid Build Coastguard Worker } 103*890232f2SAndroid Build Coastguard Worker 104*890232f2SAndroid Build Coastguard Worker #if !BYTEBUFFER_NO_BOUNDS_CHECK 105*890232f2SAndroid Build Coastguard Worker [FlatBuffersTestMethod] ByteBuffer_PutIntCannotPutAtOffsetPastLength()106*890232f2SAndroid Build Coastguard Worker public void ByteBuffer_PutIntCannotPutAtOffsetPastLength() 107*890232f2SAndroid Build Coastguard Worker { 108*890232f2SAndroid Build Coastguard Worker var uut = new ByteBuffer(4); 109*890232f2SAndroid Build Coastguard Worker Assert.Throws<ArgumentOutOfRangeException>(() => uut.PutInt(2, 0x0A0B0C0D)); 110*890232f2SAndroid Build Coastguard Worker } 111*890232f2SAndroid Build Coastguard Worker 112*890232f2SAndroid Build Coastguard Worker [FlatBuffersTestMethod] ByteBuffer_PutIntChecksLength()113*890232f2SAndroid Build Coastguard Worker public void ByteBuffer_PutIntChecksLength() 114*890232f2SAndroid Build Coastguard Worker { 115*890232f2SAndroid Build Coastguard Worker var uut = new ByteBuffer(1); 116*890232f2SAndroid Build Coastguard Worker Assert.Throws<ArgumentOutOfRangeException>(() => uut.PutInt(0, 0x0A0B0C0D)); 117*890232f2SAndroid Build Coastguard Worker } 118*890232f2SAndroid Build Coastguard Worker 119*890232f2SAndroid Build Coastguard Worker [FlatBuffersTestMethod] ByteBuffer_PutIntChecksLengthAndOffset()120*890232f2SAndroid Build Coastguard Worker public void ByteBuffer_PutIntChecksLengthAndOffset() 121*890232f2SAndroid Build Coastguard Worker { 122*890232f2SAndroid Build Coastguard Worker var uut = new ByteBuffer(4); 123*890232f2SAndroid Build Coastguard Worker Assert.Throws<ArgumentOutOfRangeException>(() => uut.PutInt(2, 0x0A0B0C0D)); 124*890232f2SAndroid Build Coastguard Worker } 125*890232f2SAndroid Build Coastguard Worker #endif 126*890232f2SAndroid Build Coastguard Worker 127*890232f2SAndroid Build Coastguard Worker [FlatBuffersTestMethod] ByteBuffer_PutLongPopulatesBufferCorrectly()128*890232f2SAndroid Build Coastguard Worker public void ByteBuffer_PutLongPopulatesBufferCorrectly() 129*890232f2SAndroid Build Coastguard Worker { 130*890232f2SAndroid Build Coastguard Worker var buffer = new byte[8]; 131*890232f2SAndroid Build Coastguard Worker var uut = new ByteBuffer(buffer); 132*890232f2SAndroid Build Coastguard Worker uut.PutLong(0, 0x010203040A0B0C0D); 133*890232f2SAndroid Build Coastguard Worker 134*890232f2SAndroid Build Coastguard Worker // Ensure Endianness was written correctly 135*890232f2SAndroid Build Coastguard Worker Assert.AreEqual(0x0D, buffer[0]); 136*890232f2SAndroid Build Coastguard Worker Assert.AreEqual(0x0C, buffer[1]); 137*890232f2SAndroid Build Coastguard Worker Assert.AreEqual(0x0B, buffer[2]); 138*890232f2SAndroid Build Coastguard Worker Assert.AreEqual(0x0A, buffer[3]); 139*890232f2SAndroid Build Coastguard Worker Assert.AreEqual(0x04, buffer[4]); 140*890232f2SAndroid Build Coastguard Worker Assert.AreEqual(0x03, buffer[5]); 141*890232f2SAndroid Build Coastguard Worker Assert.AreEqual(0x02, buffer[6]); 142*890232f2SAndroid Build Coastguard Worker Assert.AreEqual(0x01, buffer[7]); 143*890232f2SAndroid Build Coastguard Worker } 144*890232f2SAndroid Build Coastguard Worker 145*890232f2SAndroid Build Coastguard Worker #if !BYTEBUFFER_NO_BOUNDS_CHECK 146*890232f2SAndroid Build Coastguard Worker [FlatBuffersTestMethod] ByteBuffer_PutLongCannotPutAtOffsetPastLength()147*890232f2SAndroid Build Coastguard Worker public void ByteBuffer_PutLongCannotPutAtOffsetPastLength() 148*890232f2SAndroid Build Coastguard Worker { 149*890232f2SAndroid Build Coastguard Worker var uut = new ByteBuffer(8); 150*890232f2SAndroid Build Coastguard Worker Assert.Throws<ArgumentOutOfRangeException>(() => uut.PutLong(2, 0x010203040A0B0C0D)); 151*890232f2SAndroid Build Coastguard Worker } 152*890232f2SAndroid Build Coastguard Worker 153*890232f2SAndroid Build Coastguard Worker [FlatBuffersTestMethod] ByteBuffer_PutLongChecksLength()154*890232f2SAndroid Build Coastguard Worker public void ByteBuffer_PutLongChecksLength() 155*890232f2SAndroid Build Coastguard Worker { 156*890232f2SAndroid Build Coastguard Worker var uut = new ByteBuffer(1); 157*890232f2SAndroid Build Coastguard Worker Assert.Throws<ArgumentOutOfRangeException>(() => uut.PutLong(0, 0x010203040A0B0C0D)); 158*890232f2SAndroid Build Coastguard Worker } 159*890232f2SAndroid Build Coastguard Worker 160*890232f2SAndroid Build Coastguard Worker [FlatBuffersTestMethod] ByteBuffer_PutLongChecksLengthAndOffset()161*890232f2SAndroid Build Coastguard Worker public void ByteBuffer_PutLongChecksLengthAndOffset() 162*890232f2SAndroid Build Coastguard Worker { 163*890232f2SAndroid Build Coastguard Worker var uut = new ByteBuffer(8); 164*890232f2SAndroid Build Coastguard Worker Assert.Throws<ArgumentOutOfRangeException>(() => uut.PutLong(2, 0x010203040A0B0C0D)); 165*890232f2SAndroid Build Coastguard Worker } 166*890232f2SAndroid Build Coastguard Worker #endif 167*890232f2SAndroid Build Coastguard Worker 168*890232f2SAndroid Build Coastguard Worker [FlatBuffersTestMethod] ByteBuffer_GetByteReturnsCorrectData()169*890232f2SAndroid Build Coastguard Worker public void ByteBuffer_GetByteReturnsCorrectData() 170*890232f2SAndroid Build Coastguard Worker { 171*890232f2SAndroid Build Coastguard Worker var buffer = new byte[1]; 172*890232f2SAndroid Build Coastguard Worker buffer[0] = 99; 173*890232f2SAndroid Build Coastguard Worker var uut = new ByteBuffer(buffer); 174*890232f2SAndroid Build Coastguard Worker Assert.AreEqual((byte)99, uut.Get(0)); 175*890232f2SAndroid Build Coastguard Worker } 176*890232f2SAndroid Build Coastguard Worker 177*890232f2SAndroid Build Coastguard Worker #if !BYTEBUFFER_NO_BOUNDS_CHECK 178*890232f2SAndroid Build Coastguard Worker [FlatBuffersTestMethod] ByteBuffer_GetByteChecksOffset()179*890232f2SAndroid Build Coastguard Worker public void ByteBuffer_GetByteChecksOffset() 180*890232f2SAndroid Build Coastguard Worker { 181*890232f2SAndroid Build Coastguard Worker var uut = new ByteBuffer(1); 182*890232f2SAndroid Build Coastguard Worker Assert.Throws<ArgumentOutOfRangeException>(() => uut.Get(1)); 183*890232f2SAndroid Build Coastguard Worker } 184*890232f2SAndroid Build Coastguard Worker #endif 185*890232f2SAndroid Build Coastguard Worker 186*890232f2SAndroid Build Coastguard Worker [FlatBuffersTestMethod] ByteBuffer_GetShortReturnsCorrectData()187*890232f2SAndroid Build Coastguard Worker public void ByteBuffer_GetShortReturnsCorrectData() 188*890232f2SAndroid Build Coastguard Worker { 189*890232f2SAndroid Build Coastguard Worker var buffer = new byte[2]; 190*890232f2SAndroid Build Coastguard Worker buffer[0] = 1; 191*890232f2SAndroid Build Coastguard Worker buffer[1] = 0; 192*890232f2SAndroid Build Coastguard Worker var uut = new ByteBuffer(buffer); 193*890232f2SAndroid Build Coastguard Worker Assert.AreEqual(1, uut.GetShort(0)); 194*890232f2SAndroid Build Coastguard Worker } 195*890232f2SAndroid Build Coastguard Worker 196*890232f2SAndroid Build Coastguard Worker #if !BYTEBUFFER_NO_BOUNDS_CHECK 197*890232f2SAndroid Build Coastguard Worker [FlatBuffersTestMethod] ByteBuffer_GetShortChecksOffset()198*890232f2SAndroid Build Coastguard Worker public void ByteBuffer_GetShortChecksOffset() 199*890232f2SAndroid Build Coastguard Worker { 200*890232f2SAndroid Build Coastguard Worker var uut = new ByteBuffer(2); 201*890232f2SAndroid Build Coastguard Worker Assert.Throws<ArgumentOutOfRangeException>(() => uut.GetShort(2)); 202*890232f2SAndroid Build Coastguard Worker } 203*890232f2SAndroid Build Coastguard Worker 204*890232f2SAndroid Build Coastguard Worker [FlatBuffersTestMethod] ByteBuffer_GetShortChecksLength()205*890232f2SAndroid Build Coastguard Worker public void ByteBuffer_GetShortChecksLength() 206*890232f2SAndroid Build Coastguard Worker { 207*890232f2SAndroid Build Coastguard Worker var uut = new ByteBuffer(2); 208*890232f2SAndroid Build Coastguard Worker Assert.Throws<ArgumentOutOfRangeException>(() => uut.GetShort(1)); 209*890232f2SAndroid Build Coastguard Worker } 210*890232f2SAndroid Build Coastguard Worker #endif 211*890232f2SAndroid Build Coastguard Worker 212*890232f2SAndroid Build Coastguard Worker [FlatBuffersTestMethod] ByteBuffer_GetIntReturnsCorrectData()213*890232f2SAndroid Build Coastguard Worker public void ByteBuffer_GetIntReturnsCorrectData() 214*890232f2SAndroid Build Coastguard Worker { 215*890232f2SAndroid Build Coastguard Worker var buffer = new byte[4]; 216*890232f2SAndroid Build Coastguard Worker buffer[0] = 0x0D; 217*890232f2SAndroid Build Coastguard Worker buffer[1] = 0x0C; 218*890232f2SAndroid Build Coastguard Worker buffer[2] = 0x0B; 219*890232f2SAndroid Build Coastguard Worker buffer[3] = 0x0A; 220*890232f2SAndroid Build Coastguard Worker var uut = new ByteBuffer(buffer); 221*890232f2SAndroid Build Coastguard Worker Assert.AreEqual(0x0A0B0C0D, uut.GetInt(0)); 222*890232f2SAndroid Build Coastguard Worker } 223*890232f2SAndroid Build Coastguard Worker 224*890232f2SAndroid Build Coastguard Worker #if !BYTEBUFFER_NO_BOUNDS_CHECK 225*890232f2SAndroid Build Coastguard Worker [FlatBuffersTestMethod] ByteBuffer_GetIntChecksOffset()226*890232f2SAndroid Build Coastguard Worker public void ByteBuffer_GetIntChecksOffset() 227*890232f2SAndroid Build Coastguard Worker { 228*890232f2SAndroid Build Coastguard Worker var uut = new ByteBuffer(4); 229*890232f2SAndroid Build Coastguard Worker Assert.Throws<ArgumentOutOfRangeException>(() => uut.GetInt(4)); 230*890232f2SAndroid Build Coastguard Worker } 231*890232f2SAndroid Build Coastguard Worker 232*890232f2SAndroid Build Coastguard Worker [FlatBuffersTestMethod] ByteBuffer_GetIntChecksLength()233*890232f2SAndroid Build Coastguard Worker public void ByteBuffer_GetIntChecksLength() 234*890232f2SAndroid Build Coastguard Worker { 235*890232f2SAndroid Build Coastguard Worker var uut = new ByteBuffer(2); 236*890232f2SAndroid Build Coastguard Worker Assert.Throws<ArgumentOutOfRangeException>(() => uut.GetInt(0)); 237*890232f2SAndroid Build Coastguard Worker } 238*890232f2SAndroid Build Coastguard Worker #endif 239*890232f2SAndroid Build Coastguard Worker 240*890232f2SAndroid Build Coastguard Worker [FlatBuffersTestMethod] ByteBuffer_GetLongReturnsCorrectData()241*890232f2SAndroid Build Coastguard Worker public void ByteBuffer_GetLongReturnsCorrectData() 242*890232f2SAndroid Build Coastguard Worker { 243*890232f2SAndroid Build Coastguard Worker var buffer = new byte[8]; 244*890232f2SAndroid Build Coastguard Worker buffer[0] = 0x0D; 245*890232f2SAndroid Build Coastguard Worker buffer[1] = 0x0C; 246*890232f2SAndroid Build Coastguard Worker buffer[2] = 0x0B; 247*890232f2SAndroid Build Coastguard Worker buffer[3] = 0x0A; 248*890232f2SAndroid Build Coastguard Worker buffer[4] = 0x04; 249*890232f2SAndroid Build Coastguard Worker buffer[5] = 0x03; 250*890232f2SAndroid Build Coastguard Worker buffer[6] = 0x02; 251*890232f2SAndroid Build Coastguard Worker buffer[7] = 0x01; 252*890232f2SAndroid Build Coastguard Worker var uut = new ByteBuffer(buffer); 253*890232f2SAndroid Build Coastguard Worker Assert.AreEqual(0x010203040A0B0C0D, uut.GetLong(0)); 254*890232f2SAndroid Build Coastguard Worker } 255*890232f2SAndroid Build Coastguard Worker 256*890232f2SAndroid Build Coastguard Worker #if !BYTEBUFFER_NO_BOUNDS_CHECK 257*890232f2SAndroid Build Coastguard Worker [FlatBuffersTestMethod] ByteBuffer_GetLongChecksOffset()258*890232f2SAndroid Build Coastguard Worker public void ByteBuffer_GetLongChecksOffset() 259*890232f2SAndroid Build Coastguard Worker { 260*890232f2SAndroid Build Coastguard Worker var uut = new ByteBuffer(8); 261*890232f2SAndroid Build Coastguard Worker Assert.Throws<ArgumentOutOfRangeException>(() => uut.GetLong(8)); 262*890232f2SAndroid Build Coastguard Worker } 263*890232f2SAndroid Build Coastguard Worker 264*890232f2SAndroid Build Coastguard Worker [FlatBuffersTestMethod] ByteBuffer_GetLongChecksLength()265*890232f2SAndroid Build Coastguard Worker public void ByteBuffer_GetLongChecksLength() 266*890232f2SAndroid Build Coastguard Worker { 267*890232f2SAndroid Build Coastguard Worker var uut = new ByteBuffer(7); 268*890232f2SAndroid Build Coastguard Worker Assert.Throws<ArgumentOutOfRangeException>(() => uut.GetLong(0)); 269*890232f2SAndroid Build Coastguard Worker } 270*890232f2SAndroid Build Coastguard Worker #endif 271*890232f2SAndroid Build Coastguard Worker 272*890232f2SAndroid Build Coastguard Worker [FlatBuffersTestMethod] ByteBuffer_ReverseBytesUshort()273*890232f2SAndroid Build Coastguard Worker public void ByteBuffer_ReverseBytesUshort() 274*890232f2SAndroid Build Coastguard Worker { 275*890232f2SAndroid Build Coastguard Worker const ushort original = (ushort)0x1234U; 276*890232f2SAndroid Build Coastguard Worker var reverse = ByteBuffer.ReverseBytes(original); 277*890232f2SAndroid Build Coastguard Worker Assert.AreEqual(0x3412U, reverse); 278*890232f2SAndroid Build Coastguard Worker 279*890232f2SAndroid Build Coastguard Worker var rereverse = ByteBuffer.ReverseBytes(reverse); 280*890232f2SAndroid Build Coastguard Worker Assert.AreEqual(original, rereverse); 281*890232f2SAndroid Build Coastguard Worker } 282*890232f2SAndroid Build Coastguard Worker 283*890232f2SAndroid Build Coastguard Worker [FlatBuffersTestMethod] ByteBuffer_ReverseBytesUint()284*890232f2SAndroid Build Coastguard Worker public void ByteBuffer_ReverseBytesUint() 285*890232f2SAndroid Build Coastguard Worker { 286*890232f2SAndroid Build Coastguard Worker const uint original = 0x12345678; 287*890232f2SAndroid Build Coastguard Worker var reverse = ByteBuffer.ReverseBytes(original); 288*890232f2SAndroid Build Coastguard Worker Assert.AreEqual(0x78563412U, reverse); 289*890232f2SAndroid Build Coastguard Worker 290*890232f2SAndroid Build Coastguard Worker var rereverse = ByteBuffer.ReverseBytes(reverse); 291*890232f2SAndroid Build Coastguard Worker Assert.AreEqual(original, rereverse); 292*890232f2SAndroid Build Coastguard Worker } 293*890232f2SAndroid Build Coastguard Worker 294*890232f2SAndroid Build Coastguard Worker [FlatBuffersTestMethod] ByteBuffer_ReverseBytesUlong()295*890232f2SAndroid Build Coastguard Worker public void ByteBuffer_ReverseBytesUlong() 296*890232f2SAndroid Build Coastguard Worker { 297*890232f2SAndroid Build Coastguard Worker const ulong original = 0x1234567890ABCDEFUL; 298*890232f2SAndroid Build Coastguard Worker var reverse = ByteBuffer.ReverseBytes(original); 299*890232f2SAndroid Build Coastguard Worker Assert.AreEqual(0xEFCDAB9078563412UL, reverse); 300*890232f2SAndroid Build Coastguard Worker 301*890232f2SAndroid Build Coastguard Worker var rereverse = ByteBuffer.ReverseBytes(reverse); 302*890232f2SAndroid Build Coastguard Worker Assert.AreEqual(original, rereverse); 303*890232f2SAndroid Build Coastguard Worker } 304*890232f2SAndroid Build Coastguard Worker 305*890232f2SAndroid Build Coastguard Worker [FlatBuffersTestMethod] ByteBuffer_ToFullArray_MatchesBuffer()306*890232f2SAndroid Build Coastguard Worker public void ByteBuffer_ToFullArray_MatchesBuffer() 307*890232f2SAndroid Build Coastguard Worker { 308*890232f2SAndroid Build Coastguard Worker var buffer = new byte[4]; 309*890232f2SAndroid Build Coastguard Worker buffer[0] = 0x0D; 310*890232f2SAndroid Build Coastguard Worker buffer[1] = 0x0C; 311*890232f2SAndroid Build Coastguard Worker buffer[2] = 0x0B; 312*890232f2SAndroid Build Coastguard Worker buffer[3] = 0x0A; 313*890232f2SAndroid Build Coastguard Worker var uut = new ByteBuffer(buffer); 314*890232f2SAndroid Build Coastguard Worker Assert.ArrayEqual(buffer, uut.ToFullArray()); 315*890232f2SAndroid Build Coastguard Worker } 316*890232f2SAndroid Build Coastguard Worker 317*890232f2SAndroid Build Coastguard Worker [FlatBuffersTestMethod] ByteBuffer_ToSizedArray_MatchesBuffer()318*890232f2SAndroid Build Coastguard Worker public void ByteBuffer_ToSizedArray_MatchesBuffer() 319*890232f2SAndroid Build Coastguard Worker { 320*890232f2SAndroid Build Coastguard Worker var buffer = new byte[4]; 321*890232f2SAndroid Build Coastguard Worker buffer[0] = 0x0D; 322*890232f2SAndroid Build Coastguard Worker buffer[1] = 0x0C; 323*890232f2SAndroid Build Coastguard Worker buffer[2] = 0x0B; 324*890232f2SAndroid Build Coastguard Worker buffer[3] = 0x0A; 325*890232f2SAndroid Build Coastguard Worker var uut = new ByteBuffer(buffer); 326*890232f2SAndroid Build Coastguard Worker Assert.ArrayEqual(buffer, uut.ToFullArray()); 327*890232f2SAndroid Build Coastguard Worker } 328*890232f2SAndroid Build Coastguard Worker 329*890232f2SAndroid Build Coastguard Worker [FlatBuffersTestMethod] ByteBuffer_Duplicate_MatchesBuffer()330*890232f2SAndroid Build Coastguard Worker public void ByteBuffer_Duplicate_MatchesBuffer() 331*890232f2SAndroid Build Coastguard Worker { 332*890232f2SAndroid Build Coastguard Worker var buffer = new byte[4]; 333*890232f2SAndroid Build Coastguard Worker buffer[0] = 0x0D; 334*890232f2SAndroid Build Coastguard Worker buffer[1] = 0x0C; 335*890232f2SAndroid Build Coastguard Worker buffer[2] = 0x0B; 336*890232f2SAndroid Build Coastguard Worker buffer[3] = 0x0A; 337*890232f2SAndroid Build Coastguard Worker var uut = new ByteBuffer(buffer); 338*890232f2SAndroid Build Coastguard Worker Assert.AreEqual(0x0A0B0C0D, uut.GetInt(0)); 339*890232f2SAndroid Build Coastguard Worker 340*890232f2SAndroid Build Coastguard Worker // Advance by two bytes 341*890232f2SAndroid Build Coastguard Worker uut.Position = 2; uut = uut.Duplicate(); 342*890232f2SAndroid Build Coastguard Worker Assert.AreEqual(0x0A0B, uut.GetShort(2)); 343*890232f2SAndroid Build Coastguard Worker 344*890232f2SAndroid Build Coastguard Worker // Advance by one more byte 345*890232f2SAndroid Build Coastguard Worker uut.Position = 1; uut = uut.Duplicate(); 346*890232f2SAndroid Build Coastguard Worker Assert.AreEqual(0x0A, uut.Get(3)); 347*890232f2SAndroid Build Coastguard Worker } 348*890232f2SAndroid Build Coastguard Worker 349*890232f2SAndroid Build Coastguard Worker [FlatBuffersTestMethod] ByteBuffer_To_Array_Float()350*890232f2SAndroid Build Coastguard Worker public void ByteBuffer_To_Array_Float() 351*890232f2SAndroid Build Coastguard Worker { 352*890232f2SAndroid Build Coastguard Worker const int len = 9; 353*890232f2SAndroid Build Coastguard Worker 354*890232f2SAndroid Build Coastguard Worker // Construct the data array 355*890232f2SAndroid Build Coastguard Worker var fData = new float[len]; 356*890232f2SAndroid Build Coastguard Worker fData[0] = 1.0079F; 357*890232f2SAndroid Build Coastguard Worker fData[1] = 4.0026F; 358*890232f2SAndroid Build Coastguard Worker fData[2] = 6.941F; 359*890232f2SAndroid Build Coastguard Worker fData[3] = 9.0122F; 360*890232f2SAndroid Build Coastguard Worker fData[4] = 10.811F; 361*890232f2SAndroid Build Coastguard Worker fData[5] = 12.0107F; 362*890232f2SAndroid Build Coastguard Worker fData[6] = 14.0067F; 363*890232f2SAndroid Build Coastguard Worker fData[7] = 15.9994F; 364*890232f2SAndroid Build Coastguard Worker fData[8] = 18.9984F; 365*890232f2SAndroid Build Coastguard Worker 366*890232f2SAndroid Build Coastguard Worker // Tranfer it to a byte array 367*890232f2SAndroid Build Coastguard Worker var buffer = new byte[sizeof(float) * fData.Length]; 368*890232f2SAndroid Build Coastguard Worker Buffer.BlockCopy(fData, 0, buffer, 0, buffer.Length); 369*890232f2SAndroid Build Coastguard Worker 370*890232f2SAndroid Build Coastguard Worker // Create the Byte Buffer from byte array 371*890232f2SAndroid Build Coastguard Worker var uut = new ByteBuffer(buffer); 372*890232f2SAndroid Build Coastguard Worker 373*890232f2SAndroid Build Coastguard Worker // Get the full array back out and ensure they are equivalent 374*890232f2SAndroid Build Coastguard Worker var bbArray = uut.ToArray<float>(0, len); 375*890232f2SAndroid Build Coastguard Worker Assert.ArrayEqual(fData, bbArray); 376*890232f2SAndroid Build Coastguard Worker 377*890232f2SAndroid Build Coastguard Worker // Get a portion of the full array back out and ensure the 378*890232f2SAndroid Build Coastguard Worker // subrange agrees 379*890232f2SAndroid Build Coastguard Worker var bbArray2 = uut.ToArray<float>(4, len - 1); 380*890232f2SAndroid Build Coastguard Worker Assert.AreEqual(bbArray2.Length, len - 1); 381*890232f2SAndroid Build Coastguard Worker for (int i = 1; i < len - 1; i++) 382*890232f2SAndroid Build Coastguard Worker { 383*890232f2SAndroid Build Coastguard Worker Assert.AreEqual(fData[i], bbArray2[i - 1]); 384*890232f2SAndroid Build Coastguard Worker } 385*890232f2SAndroid Build Coastguard Worker 386*890232f2SAndroid Build Coastguard Worker // Get a sub portion of the full array back out and ensure the 387*890232f2SAndroid Build Coastguard Worker // subrange agrees 388*890232f2SAndroid Build Coastguard Worker var bbArray3 = uut.ToArray<float>(8, len - 4); 389*890232f2SAndroid Build Coastguard Worker Assert.AreEqual(bbArray3.Length, len - 4); 390*890232f2SAndroid Build Coastguard Worker for (int i = 2; i < len - 4; i++) 391*890232f2SAndroid Build Coastguard Worker { 392*890232f2SAndroid Build Coastguard Worker Assert.AreEqual(fData[i], bbArray3[i - 2]); 393*890232f2SAndroid Build Coastguard Worker } 394*890232f2SAndroid Build Coastguard Worker } 395*890232f2SAndroid Build Coastguard Worker 396*890232f2SAndroid Build Coastguard Worker public void ByteBuffer_Put_Array_Helper<T>(T[] data, int typeSize) 397*890232f2SAndroid Build Coastguard Worker where T : struct 398*890232f2SAndroid Build Coastguard Worker { 399*890232f2SAndroid Build Coastguard Worker // Create the Byte Buffer 400*890232f2SAndroid Build Coastguard Worker var uut = new ByteBuffer(1024); 401*890232f2SAndroid Build Coastguard Worker 402*890232f2SAndroid Build Coastguard Worker // Put the data into the buffer and make sure the offset is 403*890232f2SAndroid Build Coastguard Worker // calculated correctly 404*890232f2SAndroid Build Coastguard Worker int nOffset = uut.Put(1024, data); 405*890232f2SAndroid Build Coastguard Worker Assert.AreEqual(1024 - typeSize * data.Length, nOffset); 406*890232f2SAndroid Build Coastguard Worker 407*890232f2SAndroid Build Coastguard Worker // Get the full array back out and ensure they are equivalent 408*890232f2SAndroid Build Coastguard Worker var bbArray = uut.ToArray<T>(nOffset, data.Length); Assert.ArrayEqualFlatBuffers.Test.ByteBufferTests.__anon1409*890232f2SAndroid Build Coastguard Worker Assert.ArrayEqual(data, bbArray); 410*890232f2SAndroid Build Coastguard Worker } 411*890232f2SAndroid Build Coastguard Worker 412*890232f2SAndroid Build Coastguard Worker public void ByteBuffer_Put_ArraySegment_Helper<T>(ArraySegment<T> data, int typeSize) 413*890232f2SAndroid Build Coastguard Worker where T : struct 414*890232f2SAndroid Build Coastguard Worker { 415*890232f2SAndroid Build Coastguard Worker // Create the Byte Buffer 416*890232f2SAndroid Build Coastguard Worker var uut = new ByteBuffer(1024); 417*890232f2SAndroid Build Coastguard Worker 418*890232f2SAndroid Build Coastguard Worker // Put the data into the buffer and make sure the offset is 419*890232f2SAndroid Build Coastguard Worker // calculated correctly 420*890232f2SAndroid Build Coastguard Worker int nOffset = uut.Put(1024, data); 421*890232f2SAndroid Build Coastguard Worker Assert.AreEqual(1024 - typeSize * data.Count, nOffset); 422*890232f2SAndroid Build Coastguard Worker 423*890232f2SAndroid Build Coastguard Worker // Get the full array back out and ensure they are equivalent 424*890232f2SAndroid Build Coastguard Worker var bbArray = uut.ToArray<T>(nOffset, data.Count); data.ToArrayFlatBuffers.Test.ByteBufferTests.__anon2425*890232f2SAndroid Build Coastguard Worker Assert.ArrayEqual(data.ToArray(), bbArray); 426*890232f2SAndroid Build Coastguard Worker } 427*890232f2SAndroid Build Coastguard Worker 428*890232f2SAndroid Build Coastguard Worker public unsafe void ByteBuffer_Put_IntPtr_Helper<T>(T[] data, int typeSize) 429*890232f2SAndroid Build Coastguard Worker where T : struct 430*890232f2SAndroid Build Coastguard Worker { 431*890232f2SAndroid Build Coastguard Worker GCHandle handle = GCHandle.Alloc(data, GCHandleType.Pinned); 432*890232f2SAndroid Build Coastguard Worker try 433*890232f2SAndroid Build Coastguard Worker { 434*890232f2SAndroid Build Coastguard Worker var dataPtr = handle.AddrOfPinnedObject(); 435*890232f2SAndroid Build Coastguard Worker var sizeInBytes = data.Length * typeSize; 436*890232f2SAndroid Build Coastguard Worker 437*890232f2SAndroid Build Coastguard Worker // Create the Byte Buffer 438*890232f2SAndroid Build Coastguard Worker var uut = new ByteBuffer(1024); 439*890232f2SAndroid Build Coastguard Worker 440*890232f2SAndroid Build Coastguard Worker // Put the data into the buffer and make sure the offset is 441*890232f2SAndroid Build Coastguard Worker // calculated correctly 442*890232f2SAndroid Build Coastguard Worker int nOffset = uut.Put<T>(1024, dataPtr, sizeInBytes); 443*890232f2SAndroid Build Coastguard Worker Assert.AreEqual(1024 - sizeInBytes, nOffset); 444*890232f2SAndroid Build Coastguard Worker 445*890232f2SAndroid Build Coastguard Worker // Get the full array back out and ensure they are equivalent 446*890232f2SAndroid Build Coastguard Worker var bbArray = uut.ToArray<T>(nOffset, data.Length); 447*890232f2SAndroid Build Coastguard Worker Assert.ArrayEqual(data, bbArray); 448*890232f2SAndroid Build Coastguard Worker } 449*890232f2SAndroid Build Coastguard Worker finally 450*890232f2SAndroid Build Coastguard Worker { 451*890232f2SAndroid Build Coastguard Worker handle.Free(); 452*890232f2SAndroid Build Coastguard Worker } 453*890232f2SAndroid Build Coastguard Worker } 454*890232f2SAndroid Build Coastguard Worker 455*890232f2SAndroid Build Coastguard Worker public void ByteBuffer_Put_ArrayTypes_Helper<T>(T[] data, int typeSize) 456*890232f2SAndroid Build Coastguard Worker where T : struct 457*890232f2SAndroid Build Coastguard Worker { ByteBuffer_Put_Array_HelperFlatBuffers.Test.ByteBufferTests.__anon4458*890232f2SAndroid Build Coastguard Worker ByteBuffer_Put_Array_Helper(data, typeSize); 459*890232f2SAndroid Build Coastguard Worker 460*890232f2SAndroid Build Coastguard Worker var arraySegment = CreateArraySegment(data); ByteBuffer_Put_ArraySegment_HelperFlatBuffers.Test.ByteBufferTests.__anon4461*890232f2SAndroid Build Coastguard Worker ByteBuffer_Put_ArraySegment_Helper(arraySegment, typeSize); 462*890232f2SAndroid Build Coastguard Worker ByteBuffer_Put_IntPtr_HelperFlatBuffers.Test.ByteBufferTests.__anon4463*890232f2SAndroid Build Coastguard Worker ByteBuffer_Put_IntPtr_Helper(data, typeSize); 464*890232f2SAndroid Build Coastguard Worker } 465*890232f2SAndroid Build Coastguard Worker 466*890232f2SAndroid Build Coastguard Worker [FlatBuffersTestMethod] ByteBuffer_Put_Array_Float()467*890232f2SAndroid Build Coastguard Worker public void ByteBuffer_Put_Array_Float() 468*890232f2SAndroid Build Coastguard Worker { 469*890232f2SAndroid Build Coastguard Worker const int len = 9; 470*890232f2SAndroid Build Coastguard Worker 471*890232f2SAndroid Build Coastguard Worker // Construct the data array 472*890232f2SAndroid Build Coastguard Worker var data = new float[len]; 473*890232f2SAndroid Build Coastguard Worker data[0] = 1.0079F; 474*890232f2SAndroid Build Coastguard Worker data[1] = 4.0026F; 475*890232f2SAndroid Build Coastguard Worker data[2] = 6.941F; 476*890232f2SAndroid Build Coastguard Worker data[3] = 9.0122F; 477*890232f2SAndroid Build Coastguard Worker data[4] = 10.811F; 478*890232f2SAndroid Build Coastguard Worker data[5] = 12.0107F; 479*890232f2SAndroid Build Coastguard Worker data[6] = 14.0067F; 480*890232f2SAndroid Build Coastguard Worker data[7] = 15.9994F; 481*890232f2SAndroid Build Coastguard Worker data[8] = 18.9984F; 482*890232f2SAndroid Build Coastguard Worker 483*890232f2SAndroid Build Coastguard Worker ByteBuffer_Put_ArrayTypes_Helper(data, sizeof(float)); 484*890232f2SAndroid Build Coastguard Worker } 485*890232f2SAndroid Build Coastguard Worker 486*890232f2SAndroid Build Coastguard Worker [FlatBuffersTestMethod] ByteBuffer_Put_Array_Double()487*890232f2SAndroid Build Coastguard Worker public void ByteBuffer_Put_Array_Double() 488*890232f2SAndroid Build Coastguard Worker { 489*890232f2SAndroid Build Coastguard Worker const int len = 9; 490*890232f2SAndroid Build Coastguard Worker 491*890232f2SAndroid Build Coastguard Worker // Construct the data array 492*890232f2SAndroid Build Coastguard Worker var data = new double[len]; 493*890232f2SAndroid Build Coastguard Worker data[0] = 1.0079; 494*890232f2SAndroid Build Coastguard Worker data[1] = 4.0026; 495*890232f2SAndroid Build Coastguard Worker data[2] = 6.941; 496*890232f2SAndroid Build Coastguard Worker data[3] = 9.0122; 497*890232f2SAndroid Build Coastguard Worker data[4] = 10.811; 498*890232f2SAndroid Build Coastguard Worker data[5] = 12.0107; 499*890232f2SAndroid Build Coastguard Worker data[6] = 14.0067; 500*890232f2SAndroid Build Coastguard Worker data[7] = 15.9994; 501*890232f2SAndroid Build Coastguard Worker data[8] = 18.9984; 502*890232f2SAndroid Build Coastguard Worker 503*890232f2SAndroid Build Coastguard Worker ByteBuffer_Put_ArrayTypes_Helper(data, sizeof(double)); 504*890232f2SAndroid Build Coastguard Worker } 505*890232f2SAndroid Build Coastguard Worker 506*890232f2SAndroid Build Coastguard Worker [FlatBuffersTestMethod] ByteBuffer_Put_Array_Int()507*890232f2SAndroid Build Coastguard Worker public void ByteBuffer_Put_Array_Int() 508*890232f2SAndroid Build Coastguard Worker { 509*890232f2SAndroid Build Coastguard Worker const int len = 9; 510*890232f2SAndroid Build Coastguard Worker 511*890232f2SAndroid Build Coastguard Worker // Construct the data array 512*890232f2SAndroid Build Coastguard Worker var data = new int[len]; 513*890232f2SAndroid Build Coastguard Worker data[0] = 1; 514*890232f2SAndroid Build Coastguard Worker data[1] = 4; 515*890232f2SAndroid Build Coastguard Worker data[2] = 6; 516*890232f2SAndroid Build Coastguard Worker data[3] = 9; 517*890232f2SAndroid Build Coastguard Worker data[4] = 10; 518*890232f2SAndroid Build Coastguard Worker data[5] = 12; 519*890232f2SAndroid Build Coastguard Worker data[6] = 14; 520*890232f2SAndroid Build Coastguard Worker data[7] = 15; 521*890232f2SAndroid Build Coastguard Worker data[8] = 18; 522*890232f2SAndroid Build Coastguard Worker 523*890232f2SAndroid Build Coastguard Worker ByteBuffer_Put_ArrayTypes_Helper(data, sizeof(int)); 524*890232f2SAndroid Build Coastguard Worker } 525*890232f2SAndroid Build Coastguard Worker 526*890232f2SAndroid Build Coastguard Worker 527*890232f2SAndroid Build Coastguard Worker [FlatBuffersTestMethod] ByteBuffer_Put_Array_UInt()528*890232f2SAndroid Build Coastguard Worker public void ByteBuffer_Put_Array_UInt() 529*890232f2SAndroid Build Coastguard Worker { 530*890232f2SAndroid Build Coastguard Worker const int len = 9; 531*890232f2SAndroid Build Coastguard Worker 532*890232f2SAndroid Build Coastguard Worker // Construct the data array 533*890232f2SAndroid Build Coastguard Worker var data = new uint[len]; 534*890232f2SAndroid Build Coastguard Worker data[0] = 1; 535*890232f2SAndroid Build Coastguard Worker data[1] = 4; 536*890232f2SAndroid Build Coastguard Worker data[2] = 6; 537*890232f2SAndroid Build Coastguard Worker data[3] = 9; 538*890232f2SAndroid Build Coastguard Worker data[4] = 10; 539*890232f2SAndroid Build Coastguard Worker data[5] = 12; 540*890232f2SAndroid Build Coastguard Worker data[6] = 14; 541*890232f2SAndroid Build Coastguard Worker data[7] = 15; 542*890232f2SAndroid Build Coastguard Worker data[8] = 18; 543*890232f2SAndroid Build Coastguard Worker 544*890232f2SAndroid Build Coastguard Worker ByteBuffer_Put_ArrayTypes_Helper(data, sizeof(uint)); 545*890232f2SAndroid Build Coastguard Worker } 546*890232f2SAndroid Build Coastguard Worker 547*890232f2SAndroid Build Coastguard Worker [FlatBuffersTestMethod] ByteBuffer_Put_Array_Bool()548*890232f2SAndroid Build Coastguard Worker public void ByteBuffer_Put_Array_Bool() 549*890232f2SAndroid Build Coastguard Worker { 550*890232f2SAndroid Build Coastguard Worker const int len = 9; 551*890232f2SAndroid Build Coastguard Worker 552*890232f2SAndroid Build Coastguard Worker // Construct the data array 553*890232f2SAndroid Build Coastguard Worker var data = new bool[len]; 554*890232f2SAndroid Build Coastguard Worker data[0] = true; 555*890232f2SAndroid Build Coastguard Worker data[1] = true; 556*890232f2SAndroid Build Coastguard Worker data[2] = false; 557*890232f2SAndroid Build Coastguard Worker data[3] = true; 558*890232f2SAndroid Build Coastguard Worker data[4] = false; 559*890232f2SAndroid Build Coastguard Worker data[5] = true; 560*890232f2SAndroid Build Coastguard Worker data[6] = true; 561*890232f2SAndroid Build Coastguard Worker data[7] = true; 562*890232f2SAndroid Build Coastguard Worker data[8] = false; 563*890232f2SAndroid Build Coastguard Worker 564*890232f2SAndroid Build Coastguard Worker ByteBuffer_Put_ArrayTypes_Helper(data, sizeof(bool)); 565*890232f2SAndroid Build Coastguard Worker } 566*890232f2SAndroid Build Coastguard Worker 567*890232f2SAndroid Build Coastguard Worker [FlatBuffersTestMethod] ByteBuffer_Put_Array_Long()568*890232f2SAndroid Build Coastguard Worker public void ByteBuffer_Put_Array_Long() 569*890232f2SAndroid Build Coastguard Worker { 570*890232f2SAndroid Build Coastguard Worker const int len = 9; 571*890232f2SAndroid Build Coastguard Worker 572*890232f2SAndroid Build Coastguard Worker // Construct the data array 573*890232f2SAndroid Build Coastguard Worker var data = new long[len]; 574*890232f2SAndroid Build Coastguard Worker data[0] = 1; 575*890232f2SAndroid Build Coastguard Worker data[1] = 4; 576*890232f2SAndroid Build Coastguard Worker data[2] = 6; 577*890232f2SAndroid Build Coastguard Worker data[3] = 9; 578*890232f2SAndroid Build Coastguard Worker data[4] = 10; 579*890232f2SAndroid Build Coastguard Worker data[5] = 12; 580*890232f2SAndroid Build Coastguard Worker data[6] = 14; 581*890232f2SAndroid Build Coastguard Worker data[7] = 15; 582*890232f2SAndroid Build Coastguard Worker data[8] = 18; 583*890232f2SAndroid Build Coastguard Worker 584*890232f2SAndroid Build Coastguard Worker ByteBuffer_Put_ArrayTypes_Helper(data, sizeof(long)); 585*890232f2SAndroid Build Coastguard Worker } 586*890232f2SAndroid Build Coastguard Worker 587*890232f2SAndroid Build Coastguard Worker [FlatBuffersTestMethod] ByteBuffer_Put_Array_Byte()588*890232f2SAndroid Build Coastguard Worker public void ByteBuffer_Put_Array_Byte() 589*890232f2SAndroid Build Coastguard Worker { 590*890232f2SAndroid Build Coastguard Worker const int len = 9; 591*890232f2SAndroid Build Coastguard Worker 592*890232f2SAndroid Build Coastguard Worker // Construct the data array 593*890232f2SAndroid Build Coastguard Worker var data = new byte[len]; 594*890232f2SAndroid Build Coastguard Worker data[0] = 1; 595*890232f2SAndroid Build Coastguard Worker data[1] = 4; 596*890232f2SAndroid Build Coastguard Worker data[2] = 6; 597*890232f2SAndroid Build Coastguard Worker data[3] = 9; 598*890232f2SAndroid Build Coastguard Worker data[4] = 10; 599*890232f2SAndroid Build Coastguard Worker data[5] = 12; 600*890232f2SAndroid Build Coastguard Worker data[6] = 14; 601*890232f2SAndroid Build Coastguard Worker data[7] = 15; 602*890232f2SAndroid Build Coastguard Worker data[8] = 18; 603*890232f2SAndroid Build Coastguard Worker 604*890232f2SAndroid Build Coastguard Worker ByteBuffer_Put_ArrayTypes_Helper(data, sizeof(byte)); 605*890232f2SAndroid Build Coastguard Worker } 606*890232f2SAndroid Build Coastguard Worker 607*890232f2SAndroid Build Coastguard Worker [FlatBuffersTestMethod] ByteBuffer_Put_Array_SByte()608*890232f2SAndroid Build Coastguard Worker public void ByteBuffer_Put_Array_SByte() 609*890232f2SAndroid Build Coastguard Worker { 610*890232f2SAndroid Build Coastguard Worker const int len = 9; 611*890232f2SAndroid Build Coastguard Worker 612*890232f2SAndroid Build Coastguard Worker // Construct the data array 613*890232f2SAndroid Build Coastguard Worker var data = new sbyte[len]; 614*890232f2SAndroid Build Coastguard Worker data[0] = 1; 615*890232f2SAndroid Build Coastguard Worker data[1] = 4; 616*890232f2SAndroid Build Coastguard Worker data[2] = 6; 617*890232f2SAndroid Build Coastguard Worker data[3] = 9; 618*890232f2SAndroid Build Coastguard Worker data[4] = 10; 619*890232f2SAndroid Build Coastguard Worker data[5] = 12; 620*890232f2SAndroid Build Coastguard Worker data[6] = 14; 621*890232f2SAndroid Build Coastguard Worker data[7] = 15; 622*890232f2SAndroid Build Coastguard Worker data[8] = 18; 623*890232f2SAndroid Build Coastguard Worker 624*890232f2SAndroid Build Coastguard Worker ByteBuffer_Put_ArrayTypes_Helper(data, sizeof(sbyte)); 625*890232f2SAndroid Build Coastguard Worker } 626*890232f2SAndroid Build Coastguard Worker 627*890232f2SAndroid Build Coastguard Worker private static ArraySegment<T> CreateArraySegment<T>(T[] data) 628*890232f2SAndroid Build Coastguard Worker where T : struct 629*890232f2SAndroid Build Coastguard Worker { 630*890232f2SAndroid Build Coastguard Worker const int arraySegmentPadding = 7; 631*890232f2SAndroid Build Coastguard Worker var newData = new T[data.Length + 2 * arraySegmentPadding]; Array.CopyFlatBuffers.Test.ByteBufferTests.__anon5632*890232f2SAndroid Build Coastguard Worker Array.Copy(data, 0, newData, arraySegmentPadding, data.Length); 633*890232f2SAndroid Build Coastguard Worker return new ArraySegment<T>(newData, arraySegmentPadding, data.Length); 634*890232f2SAndroid Build Coastguard Worker } 635*890232f2SAndroid Build Coastguard Worker 636*890232f2SAndroid Build Coastguard Worker [FlatBuffersTestMethod] ByteBuffer_Put_Array_Null_Throws()637*890232f2SAndroid Build Coastguard Worker public void ByteBuffer_Put_Array_Null_Throws() 638*890232f2SAndroid Build Coastguard Worker { 639*890232f2SAndroid Build Coastguard Worker // Create the Byte Buffer 640*890232f2SAndroid Build Coastguard Worker var uut = new ByteBuffer(1024); 641*890232f2SAndroid Build Coastguard Worker 642*890232f2SAndroid Build Coastguard Worker // create a null array and try to put it into the buffer 643*890232f2SAndroid Build Coastguard Worker float[] data = null; 644*890232f2SAndroid Build Coastguard Worker Assert.Throws<ArgumentNullException>(() => uut.Put(1024, data)); 645*890232f2SAndroid Build Coastguard Worker 646*890232f2SAndroid Build Coastguard Worker ArraySegment<float> dataArraySegment = default; 647*890232f2SAndroid Build Coastguard Worker Assert.Throws<ArgumentNullException>(() => uut.Put(1024, dataArraySegment)); 648*890232f2SAndroid Build Coastguard Worker 649*890232f2SAndroid Build Coastguard Worker IntPtr dataPtr = IntPtr.Zero; 650*890232f2SAndroid Build Coastguard Worker int dataPtrLength = 100; 651*890232f2SAndroid Build Coastguard Worker Assert.Throws<ArgumentNullException>(() => uut.Put<float>(1024, dataPtr, dataPtrLength)); 652*890232f2SAndroid Build Coastguard Worker } 653*890232f2SAndroid Build Coastguard Worker 654*890232f2SAndroid Build Coastguard Worker [FlatBuffersTestMethod] ByteBuffer_Put_Array_Empty_Throws()655*890232f2SAndroid Build Coastguard Worker public unsafe void ByteBuffer_Put_Array_Empty_Throws() 656*890232f2SAndroid Build Coastguard Worker { 657*890232f2SAndroid Build Coastguard Worker // Create the Byte Buffer 658*890232f2SAndroid Build Coastguard Worker var uut = new ByteBuffer(1024); 659*890232f2SAndroid Build Coastguard Worker 660*890232f2SAndroid Build Coastguard Worker // create an array of length == 0, and try to put it into the buffer 661*890232f2SAndroid Build Coastguard Worker float[] data = new float[0]; 662*890232f2SAndroid Build Coastguard Worker Assert.Throws<ArgumentException>(() => uut.Put(1024, data)); 663*890232f2SAndroid Build Coastguard Worker 664*890232f2SAndroid Build Coastguard Worker var dataArraySegment = new ArraySegment<float>(new float[10], 5, 0); 665*890232f2SAndroid Build Coastguard Worker Assert.Throws<ArgumentException>(() => uut.Put(1024, dataArraySegment)); 666*890232f2SAndroid Build Coastguard Worker 667*890232f2SAndroid Build Coastguard Worker fixed(float* floatPtr = data) 668*890232f2SAndroid Build Coastguard Worker { 669*890232f2SAndroid Build Coastguard Worker var dataPtr = (IntPtr)floatPtr; 670*890232f2SAndroid Build Coastguard Worker var dataPtrLength = 0; 671*890232f2SAndroid Build Coastguard Worker Assert.Throws<ArgumentException>(() => uut.Put<float>(1024, dataPtr, dataPtrLength)); 672*890232f2SAndroid Build Coastguard Worker } 673*890232f2SAndroid Build Coastguard Worker } 674*890232f2SAndroid Build Coastguard Worker 675*890232f2SAndroid Build Coastguard Worker [FlatBuffersTestMethod] ByteBuffer_Put_IntPtr_NegativeSize_Throws()676*890232f2SAndroid Build Coastguard Worker public unsafe void ByteBuffer_Put_IntPtr_NegativeSize_Throws() 677*890232f2SAndroid Build Coastguard Worker { 678*890232f2SAndroid Build Coastguard Worker // Create the Byte Buffer 679*890232f2SAndroid Build Coastguard Worker var uut = new ByteBuffer(1024); 680*890232f2SAndroid Build Coastguard Worker 681*890232f2SAndroid Build Coastguard Worker // create an array of length == 0, and try to put it into the buffer 682*890232f2SAndroid Build Coastguard Worker float[] data = new float[10]; 683*890232f2SAndroid Build Coastguard Worker fixed(float* floatPtr = data) 684*890232f2SAndroid Build Coastguard Worker { 685*890232f2SAndroid Build Coastguard Worker var dataPtr = (IntPtr)floatPtr; 686*890232f2SAndroid Build Coastguard Worker var dataPtrLength = -1; 687*890232f2SAndroid Build Coastguard Worker Assert.Throws<ArgumentException>(() => uut.Put<float>(1024, dataPtr, dataPtrLength)); 688*890232f2SAndroid Build Coastguard Worker } 689*890232f2SAndroid Build Coastguard Worker } 690*890232f2SAndroid Build Coastguard Worker 691*890232f2SAndroid Build Coastguard Worker #pragma warning disable 0169 692*890232f2SAndroid Build Coastguard Worker // These are purposely not used and the warning is suppress 693*890232f2SAndroid Build Coastguard Worker private struct dummyStruct 694*890232f2SAndroid Build Coastguard Worker { 695*890232f2SAndroid Build Coastguard Worker int a; 696*890232f2SAndroid Build Coastguard Worker float b; 697*890232f2SAndroid Build Coastguard Worker } 698*890232f2SAndroid Build Coastguard Worker #pragma warning restore 0169 699*890232f2SAndroid Build Coastguard Worker 700*890232f2SAndroid Build Coastguard Worker [FlatBuffersTestMethod] ByteBuffer_Put_Array_IncorrectType_Throws()701*890232f2SAndroid Build Coastguard Worker public unsafe void ByteBuffer_Put_Array_IncorrectType_Throws() 702*890232f2SAndroid Build Coastguard Worker { 703*890232f2SAndroid Build Coastguard Worker // Create the Byte Buffer 704*890232f2SAndroid Build Coastguard Worker var uut = new ByteBuffer(1024); 705*890232f2SAndroid Build Coastguard Worker 706*890232f2SAndroid Build Coastguard Worker // Create an array of dummy structures that shouldn't be 707*890232f2SAndroid Build Coastguard Worker // able to be put into the buffer 708*890232f2SAndroid Build Coastguard Worker var data = new dummyStruct[10]; 709*890232f2SAndroid Build Coastguard Worker Assert.Throws<ArgumentException>(() => uut.Put(1024, data)); 710*890232f2SAndroid Build Coastguard Worker 711*890232f2SAndroid Build Coastguard Worker var dataArraySegment = new ArraySegment<dummyStruct>(data); 712*890232f2SAndroid Build Coastguard Worker Assert.Throws<ArgumentException>(() => uut.Put(1024, dataArraySegment)); 713*890232f2SAndroid Build Coastguard Worker 714*890232f2SAndroid Build Coastguard Worker fixed(dummyStruct* floatPtr = data) 715*890232f2SAndroid Build Coastguard Worker { 716*890232f2SAndroid Build Coastguard Worker var dataPtr = (IntPtr)floatPtr; 717*890232f2SAndroid Build Coastguard Worker var dataPtrLength = data.Length * sizeof(dummyStruct); 718*890232f2SAndroid Build Coastguard Worker Assert.Throws<ArgumentException>(() => uut.Put<dummyStruct>(1024, dataPtr, dataPtrLength)); 719*890232f2SAndroid Build Coastguard Worker } 720*890232f2SAndroid Build Coastguard Worker } 721*890232f2SAndroid Build Coastguard Worker 722*890232f2SAndroid Build Coastguard Worker [FlatBuffersTestMethod] ByteBuffer_Get_Double()723*890232f2SAndroid Build Coastguard Worker public void ByteBuffer_Get_Double() 724*890232f2SAndroid Build Coastguard Worker { 725*890232f2SAndroid Build Coastguard Worker var uut = new ByteBuffer(1024); 726*890232f2SAndroid Build Coastguard Worker double value = 3.14159265; 727*890232f2SAndroid Build Coastguard Worker uut.PutDouble(900, value); 728*890232f2SAndroid Build Coastguard Worker double getValue = uut.GetDouble(900); 729*890232f2SAndroid Build Coastguard Worker Assert.AreEqual(value, getValue); 730*890232f2SAndroid Build Coastguard Worker } 731*890232f2SAndroid Build Coastguard Worker 732*890232f2SAndroid Build Coastguard Worker [FlatBuffersTestMethod] ByteBuffer_Get_Float()733*890232f2SAndroid Build Coastguard Worker public void ByteBuffer_Get_Float() 734*890232f2SAndroid Build Coastguard Worker { 735*890232f2SAndroid Build Coastguard Worker var uut = new ByteBuffer(1024); 736*890232f2SAndroid Build Coastguard Worker float value = 3.14159265F; 737*890232f2SAndroid Build Coastguard Worker uut.PutFloat(900, value); 738*890232f2SAndroid Build Coastguard Worker double getValue = uut.GetFloat(900); 739*890232f2SAndroid Build Coastguard Worker Assert.AreEqual(value, getValue); 740*890232f2SAndroid Build Coastguard Worker } 741*890232f2SAndroid Build Coastguard Worker } 742*890232f2SAndroid Build Coastguard Worker } 743