blob: b44d95608d37bec4d8b43499c570cd3b557bfe8c [file]
# 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.
import unittest
from etch.python.Types import *
from etch.python.Exceptions import *
from etch.util.FlexBuffer import *
class Test_EtchUtilFlexBuffer(unittest.TestCase):
def setUp(self):
self.buf = FlexBuffer()
def _checkBuf(self, length, index, avail):
self.assertEqual(length, self.buf.length(), "Length")
self.assertEqual(index, self.buf.index(), "Index")
self.assertEqual(avail, self.buf.avail(), "Avail")
def test_initial1(self):
self._checkBuf(0, 0, 0)
def test_initial2(self):
self.buf = FlexBuffer(ByteArray(5))
self._checkBuf(5, 0, 5)
def test_initial3(self):
self.buf = FlexBuffer(ByteArray(5), 2)
self._checkBuf(2, 0, 2)
def test_initial4(self):
self.buf = FlexBuffer(ByteArray(5), 1, 3)
self._checkBuf(4, 1, 3)
def test_setLength0(self):
self.buf.setLength(0)
self._checkBuf(0, 0, 0)
def test_setLength1(self):
self.buf.setLength(1)
self._checkBuf(1, 0, 1)
def test_setLength2(self):
self.buf.setLength(2)
self._checkBuf(2, 0, 2)
def test_setLength3(self):
self.buf.setLength(2)
self.buf.setLength(0)
self._checkBuf(0, 0, 0)
def test_setLength4(self):
self.assertRaises(IllegalArgumentException, self.buf.setLength, -1)
def test_setIndex0(self):
self.buf.setIndex(0)
self._checkBuf(0, 0, 0)
def test_setIndex1(self):
self.assertRaises(IllegalArgumentException, self.buf.setIndex, 1)
def test_setIndex2(self):
self.assertRaises(IllegalArgumentException, self.buf.setIndex, -1)
def test_setIndex3(self):
self.buf.setLength(5)
self.buf.setIndex(1)
self._checkBuf(5, 1, 4)
def test_setIndex4(self):
self.buf.setLength(5)
self.buf.setIndex(4)
self._checkBuf(5, 4, 1)
def test_setIndex5(self):
self.buf.setLength(5)
self.buf.setIndex(5)
self._checkBuf(5, 5, 0)
def test_setIndex5(self):
self.buf.setLength(5)
self.buf.setIndex(5)
self.buf.setLength(0)
self._checkBuf(0, 0, 0)
def test_setIndex7(self):
self.buf.setLength(5)
self.buf.setIndex(5)
self.buf.setLength(2)
self._checkBuf(2, 2, 0)
def test_reset(self):
self.buf.setLength(2)
self.buf.setIndex(1)
self.buf.reset()
self._checkBuf(0, 0, 0)
def test_put1a(self):
self.buf.put(1)
self._checkBuf(1, 1, 0)
def test_put1b(self):
self.buf.put(1)
self.buf.put(2)
self._checkBuf(2, 2, 0)
def _testPutBytes(self, bufLength):
self.buf.put(1)
if bufLength >= 0:
self.buf.put(ByteArray(bufLength))
else:
self.buf.put(None)
self._checkBuf(bufLength+1, bufLength+1, 0)
def test_put2a(self):
self.assertRaises(NullPointerException, self._testPutBytes, -1)
def test_put2b(self):
self._testPutBytes(0)
def test_put2c(self):
self._testPutBytes(1)
def test_put2d(self):
self._testPutBytes(2)
#// ------------------------------------------------------
#// cases for put( byte[] buf, int off, int len ):
#// buf.length, off, len // failure reason
#// --- group 3:
#// null, 0, 0 // fail (buf is null)
#// null, 0, 1 // fail (buf is null)
#// null, 1, 0 // fail (buf is null)
#// --- group 4:
#// 0, 0, 0
#// 0, 0, 1 // fail (off+len > buf.length)
#// 0, 1, 0 // fail (off > buf.length)
#// --- group 5:
#// 1, 0, 0
#// 1, 0, 1
#// 1, 0, 2 // fail (off+len > buf.length)
#// 1, 1, 0
#// 1, 1, 1 // fail (off+len > buf.length)
#// 1, 1, 2 // fail (off+len > buf.length)
#// 1, 2, 0 // fail (off > buf.length)
#// 1, 2, 1 // fail (off > buf.length)
#// 1, 2, 2 // fail (off > buf.length)
#// --- group 6:
#// 2, 0, 0
#// 2, 0, 1
#// 2, 0, 2
#// 2, 1, 0
#// 2, 1, 1
#// 2, 1, 2 // fail (off+len > buf.length)
#// 2, 2, 0
#// 2, 2, 1 // fail (off+len > buf.length)
#// 2, 2, 2 // fail (off+len > buf.length)
def _testPutBytesOffLen(self, bufLength, offset, length):
self.buf.put(1)
if bufLength >= 0:
self.buf.put(ByteArray(bufLength), offset, length)
else:
self.buf.put(None, offset, length)
self._checkBuf(length+1, length+1, 0)
def test_put3a(self):
self.assertRaises(NullPointerException, self._testPutBytesOffLen, -1, 0, 0)
def test_put3b(self):
self.assertRaises(NullPointerException, self._testPutBytesOffLen, -1, 0, 0)
def test_put3c(self):
self.assertRaises(NullPointerException, self._testPutBytesOffLen, -1, 1, 0)
def test_put4a(self):
self._testPutBytesOffLen(0, 0, 0)
def test_put4b(self):
self.assertRaises(IllegalArgumentException, self._testPutBytesOffLen, 0, 0, 1)
def test_put4c(self):
self.assertRaises(IllegalArgumentException, self._testPutBytesOffLen, 0, 1, 0)
def test_put5a(self):
self._testPutBytesOffLen(1, 0, 0)
def test_put5b(self):
self._testPutBytesOffLen(1, 0, 1)
def test_put5c(self):
self.assertRaises(IllegalArgumentException, self._testPutBytesOffLen, 1, 0, 2)
def test_put5d(self):
self._testPutBytesOffLen(1, 1, 0)
def test_put5e(self):
self.assertRaises(IllegalArgumentException, self._testPutBytesOffLen, 1, 1, 1)
def test_put5f(self):
self.assertRaises(IllegalArgumentException, self._testPutBytesOffLen, 1, 1, 2)
def test_put5g(self):
self.assertRaises(IllegalArgumentException, self._testPutBytesOffLen, 1, 2, 0)
def test_put5h(self):
self.assertRaises(IllegalArgumentException, self._testPutBytesOffLen, 1, 2, 1)
def test_put5i(self):
self.assertRaises(IllegalArgumentException, self._testPutBytesOffLen, 1, 2, 2)
def test_put6a(self):
self._testPutBytesOffLen(2, 0, 0)
def test_put6b(self):
self._testPutBytesOffLen(2, 0, 1)
def test_put6c(self):
self._testPutBytesOffLen(2, 0, 2)
def test_put6d(self):
self._testPutBytesOffLen(2, 1, 0)
def test_put6e(self):
self._testPutBytesOffLen(2, 1, 1)
def test_put6f(self):
self.assertRaises(IllegalArgumentException, self._testPutBytesOffLen, 2, 1, 2)
def test_put6g(self):
self._testPutBytesOffLen(2, 2, 0)
def test_put6h(self):
self.assertRaises(IllegalArgumentException, self._testPutBytesOffLen, 2, 2, 1)
def test_put6i(self):
self.assertRaises(IllegalArgumentException, self._testPutBytesOffLen, 2, 2, 2)
#// ------------------------------------------------------
#// cases for put(int), get():
#// put 0, get 0. // already tested above
#// put 0, get 1. // fails with EOFException
#// put 1, get 0.
#// put 1, get 1.
#// put 1, get 2. // fails with EOFException
#// put 2, get 0.
#// put 2, get 1.
#// put 2, get 2.
#// put 2, get 3. // fails with EOFException
#// put 10000, get 10000.
#// just like above, putting byte array instead
#// just like above, getting byte array instead.
#// just like above, putting and getting byte array.
def _testPutGet(self, nPuts, nGets):
for i in range(0, nPuts):
self.buf.put(i)
self.buf.setIndex(0)
for i in range(0, nGets):
self.assertEqual(Byte(i), Byte(self.buf.get()))
self._checkBuf(nPuts, nGets, nPuts-nGets)
def _testPutBytesGet(self, nPuts, nGets):
buffer = ByteArray(nPuts)
for i in range(0, nPuts):
buffer[i] = Byte(i)
self.buf.put(buffer)
self.buf.setIndex(0)
for i in range(0, nGets):
self.assertEquals(Byte(i), Byte(self.buf.get()))
self._checkBuf(nPuts, nGets, nPuts - nGets)
def _testPutGetBytes(self, nPuts, nGets):
for i in range(0, nPuts):
#print "%s" % repr(i)
self.buf.put(i)
self.buf.setIndex(0)
buffer = ByteArray(nGets)
n = self.buf.get(buffer)
self.assertEquals(min(nPuts, nGets), n)
for i in range(0, n):
self.assertEquals(Byte(i), buffer[i])
self._checkBuf(nPuts, n, nPuts-n)
def _testPutBytesGetBytes(self, nPuts, nGets):
buffer = ByteArray(nPuts)
for i in range(0, nPuts):
buffer[i] = Byte(i)
self.buf.put(buffer)
self.buf.setIndex(0)
buffer = ByteArray(nGets)
n = self.buf.get(buffer)
self.assertEquals(min(nPuts, nGets), n)
for i in range(0, n):
self.assertEquals(Byte(i), buffer[i])
self._checkBuf(nPuts, n, nPuts-n)
def test_get1a(self):
self.assertRaises(EOFException, self._testPutGet, 0, 1)
def test_get1b(self):
self._testPutGet(1, 0)
def test_get1c(self):
self._testPutGet(1, 1)
def test_get1d(self):
self.assertRaises(EOFException, self._testPutGet, 1, 2)
def test_get1e(self):
self._testPutGet(2, 0)
def test_get1f(self):
self._testPutGet(2, 1)
def test_get1g(self):
self._testPutGet(2, 2)
def test_get1h(self):
self.assertRaises(EOFException, self._testPutGet, 2, 3)
def test_get1i(self):
self._testPutGet(10000, 9995)
def test_get1j(self):
self._testPutGet(10000, 10000)
def test_get1k(self):
self._testPutGet(100000, 100000)
def test_get2a(self):
self.assertRaises(EOFException, self._testPutBytesGet, 0, 1)
def test_get2b(self):
self._testPutBytesGet(1, 0)
def test_get2d(self):
self.assertRaises(EOFException, self._testPutBytesGet, 1, 2)
def test_get2e(self):
self._testPutBytesGet(2, 0)
def test_get2f(self):
self._testPutBytesGet(2, 1)
def test_get2g(self):
self._testPutBytesGet(2, 2)
def test_get2h(self):
self.assertRaises(EOFException, self._testPutBytesGet, 2, 3)
def test_get2i(self):
self._testPutBytesGet(10000, 9995)
def test_get2j(self):
self._testPutBytesGet(10000, 10000)
def test_get2k(self):
self._testPutBytesGet(100000, 100000)
def test_get3a(self):
self.assertRaises(EOFException, self._testPutBytesGet, 0, 1)
def test_get3b(self):
self._testPutGetBytes(1, 0)
def test_get3c(self):
self._testPutGetBytes(1, 1)
def test_get3d(self):
self._testPutGetBytes(1, 2)
def test_get3e(self):
self._testPutGetBytes(2, 0)
def test_get3f(self):
self._testPutGetBytes(2, 1)
def test_get3g(self):
self._testPutGetBytes(2, 2)
def test_get3h(self):
self._testPutGetBytes(2, 3)
def test_get3i(self):
self._testPutGetBytes(10000, 9995)
def test_get3j(self):
self._testPutGetBytes(10000, 10000)
def test_get3k(self):
self._testPutGetBytes(100000, 100000)
def test_get4a(self):
self.assertRaises(EOFException, self._testPutBytesGetBytes, 0, 1)
def test_get4b(self):
self._testPutBytesGetBytes(1, 0)
def test_get4c(self):
self._testPutBytesGetBytes(1, 1)
def test_get4d(self):
self._testPutBytesGetBytes(1, 2)
def test_get4e(self):
self._testPutBytesGetBytes(2, 0)
def test_get4f(self):
self._testPutBytesGetBytes(2, 1)
def test_get4g(self):
self._testPutBytesGetBytes(2, 2)
def test_get4h(self):
self._testPutBytesGetBytes(2, 3)
def test_get4i(self):
self._testPutBytesGetBytes(10000, 9995)
def test_get4j(self):
self._testPutBytesGetBytes(10000, 10000)
def test_get4k(self):
self._testPutBytesGetBytes(100000, 100000)
def test_get5a(self):
self.buf = FlexBuffer(ByteArray([1,2,3]))
self.assertEquals(1, self.buf.get())
self.assertEquals(2, self.buf.get())
self.assertEquals(3, self.buf.get())
self._checkBuf(3, 3, 0)
def test_get5b(self):
self.buf = FlexBuffer(ByteArray([1,2,3]), 2)
self.assertEquals(1, self.buf.get())
self.assertEquals(2, self.buf.get())
self._checkBuf(2, 2, 0)
def test_get5c(self):
self.buf = FlexBuffer(ByteArray([1,2,3,4,5]),1,2)
self.assertEquals(2, self.buf.get())
self.assertEquals(3, self.buf.get())
self._checkBuf(3, 3, 0)
def test_get6(self):
self.buf = FlexBuffer(ByteArray([5,6,7,8]))
buffer = ByteArray([11,12,13,14,15])
self.buf.get(buffer, 1, 3)
self.assertEquals(11, buffer[0])
self.assertEquals(5, buffer[1])
self.assertEquals(6, buffer[2])
self.assertEquals(7, buffer[3])
self.assertEquals(15, buffer[4])
def test_compact(self):
self.buf = FlexBuffer(ByteArray([1,2,3,4,5]), 1, 3)
self.buf.compact()
self._checkBuf(3, 0, 3)
self.assertEquals(2, self.buf.get())
self.assertEquals(3, self.buf.get())
self.assertEquals(4, self.buf.get())
def test_getByte1(self):
self.buf = FlexBuffer(ByteArray([127, 1, 0, -1, -128]))
self.assertEquals(127, self.buf.getByte())
self.assertEquals(1, self.buf.getByte())
self.assertEquals(0, self.buf.getByte())
self.assertEquals(-1, self.buf.getByte())
self.assertEquals(-128, self.buf.getByte())
self._checkBuf(5, 5, 0)
def test_getByte2(self):
self.assertRaises(EOFException, self.buf.getByte)
def test_getShort1(self):
self.buf = FlexBuffer(ByteArray([1,2,-1,-2]))
self.assertEquals(Short(0x0102), self.buf.getShort())
self.assertEquals(Short(0xfffe), self.buf.getShort())
self._checkBuf(4, 4, 0)
def test_getShort2(self):
self.assertRaises(EOFException, self.buf.getShort)
def test_getInt1(self):
self.buf = FlexBuffer(ByteArray([1,2,3,4,-1,-2,-3,-4]))
self.assertEquals(Integer(0x01020304), self.buf.getInt())
self.assertEquals(Integer(0xfffefdfc), self.buf.getInt())
self._checkBuf(8, 8, 0)
def test_getInt2(self):
self.assertRaises(EOFException, self.buf.getInt)
def test_getLong1(self):
self.buf = FlexBuffer(ByteArray([1,2,3,4,5,6,7,8,-1,-2,-3,-4,-5,-6,-7,-8]))
self.assertEquals(Long(0x0102030405060708), self.buf.getLong())
self.assertEquals(Long(0xfffefdfcfbfaf9f8), self.buf.getLong())
self._checkBuf(16, 16, 0)
def test_getLong2(self):
self.assertRaises(EOFException, self.buf.getLong)
def test_getFloat1(self):
self.buf = FlexBuffer(ByteArray([
0, 0, 0, 0, 63, -128, 0, 0, 83, -113, 48, -37, 100, -98, -112, -120,
117, -120, 20, 25, -65, -128, 0, 0, -45, -113, 48, -37, -28, -98, -112, -120,
-11, -120, 20, 25, 50, 83, 79, -7, 34, 44, -87, 90, 17, -38, -85, 115,
-78, 83, 79, -7, -94, 44, -87, 90, -111, -38, -85, 115]))
self.assertEquals( 0.0, self.buf.getFloat() )
self.assertEquals( 1.0, self.buf.getFloat() )
self.assertEquals( 123e10, self.buf.getFloat() )
self.assertEquals( 234e20, self.buf.getFloat() )
self.assertEquals( 345e30, self.buf.getFloat() )
self.assertEquals( -1.0, self.buf.getFloat() )
self.assertEquals( -123e10, self.buf.getFloat() )
self.assertEquals( -234e20, self.buf.getFloat() )
self.assertEquals( -345e30, self.buf.getFloat() )
self.assertEquals( 123e-10, self.buf.getFloat() )
self.assertEquals( 234e-20, self.buf.getFloat() )
self.assertEquals( 345e-30, self.buf.getFloat() )
self.assertEquals( -123e-10, self.buf.getFloat() )
self.assertEquals( -234e-20, self.buf.getFloat() )
self.assertEquals( -345e-30, self.buf.getFloat() )
self._checkBuf(15*4, 15*4, 0)
def test_getFloat2(self):
self.assertRaises(EOFException, self.buf.getFloat)
def test_getDouble1(self):
# TODO - double conversions appear to be off compared to Java
self.buf = FlexBuffer(ByteArray([
0, 0, 0, 0, 0, 0, 0, 0
, 63, -16, 0, 0, 0, 0, 0, 0
, 66, 113, -26, 27, 104, -64, 0, 0
, 85, 48, -73, 88, 68, 89, -6, -80
, 105, -4, 43, 112, 122, -31, 67, -116
, -65, -16, 0, 0, 0, 0, 0, 0
, -62, 113, -26, 27, 104, -64, 0, 0
, -43, 48, -73, 88, 68, 89, -6, -80
, -23, -4, 43, 112, 122, -31, 67, -116
, 62, 74, 105, -1, 27, 85, 80, 81
, 43, -87, -105, 64, -36, -23, -48, -66
, 22, -16, -127, 73, 111, 91, -75, -29
, -66, 74, 105, -1, 27, 85, 80, 81
, -85, -87, -105, 64, -36, -23, -48, -66
, -106, -16, -127, 73, 111, 91, -75, -29
]))
self.assertEquals( 0.0, self.buf.getDouble())
self.assertEquals( 1.0, self.buf.getDouble())
self.assertEquals( 123e10, self.buf.getDouble())
self.assertEquals( 234e100, self.buf.getDouble())
self.assertEquals( 345e200, self.buf.getDouble())
self.assertEquals( -1.0, self.buf.getDouble())
self.assertEquals( -123e10, self.buf.getDouble())
self.assertEquals( -234e100, self.buf.getDouble())
self.assertEquals( -345e200, self.buf.getDouble())
self.assertEquals( 123e-10, self.buf.getDouble())
self.assertEquals( 234e-100, self.buf.getDouble())
self.assertEquals( 345e-200, self.buf.getDouble())
self.assertEquals( -123e-10, self.buf.getDouble())
self.assertEquals( -234e-100, self.buf.getDouble())
self.assertEquals( -345e-200, self.buf.getDouble())
self._checkBuf(15*8, 15*8, 0)
def test_getDouble2(self):
self.assertRaises(EOFException, self.buf.getDouble)
def test_getFully1(self):
self.buf = FlexBuffer(ByteArray([1,2,3,4,5,6]))
b = ByteArray(3)
self.buf.getFully(b)
self.assertEquals(1, b[0])
self.assertEquals(2, b[1])
self.assertEquals(3, b[2])
self.buf.getFully(b)
self.assertEquals(4, b[0])
self.assertEquals(5, b[1])
self.assertEquals(6, b[2])
self._checkBuf(6, 6, 0)
def test_getFully2(self):
self.buf = FlexBuffer(ByteArray([1,2]))
b = ByteArray(3)
#self.buf = self.buf.getFully(b)
self.assertRaises(EOFException, self.buf.getFully, b)
# // ------------------------------------------------------
# // cases for FlexBuffer put( FlexBuffer ):
# // put, put FlexBuffer with valid buffer
# // put, put Flexbuffer to a Flexbuffer approaching max length, fails with IOException.
def test_putFlexBuffer1(self):
buf0 = FlexBuffer(ByteArray([1,2]))
self.buf = FlexBuffer(ByteArray([]))
self.buf.put(buf0)
self._checkBuf(buf0.length(), buf0.length(), 0)
def test_putFlexBuffer2(self):
buf0 = FlexBuffer(ByteArray([1,2]))
max = 4*1024*1024
self.buf = FlexBuffer(ByteArray(max))
self.buf.setIndex(max)
# TODO - Confirm this is the correct test
self.assertRaises(IOException, self.buf.put, buf0)
#self._checkBuf(max + buf0.length(), max + buf0.length(), 0)
#// ------------------------------------------------------
#// cases for FlexBuffer put( FlexBuffer, int ):
#// put, put FlexBuffer with length larger than available bytes, fails with IllegalArgumentException
#// put, put FlexBuffer with valid length value
#// put, put Flexbuffer to a Flexbuffer approaching max length, fails with IOException.
def test_putFlexBuffer3(self):
buf0 = FlexBuffer(ByteArray([1,2]))
self.buf = FlexBuffer(ByteArray([]))
self.buf.setIndex(0)
# TODO - confirm this is the correct test
self.assertRaises(IllegalArgumentException, self.buf.put, buf0, 3)
#self._checkBuf(3,3,0)
def test_putFlexBuffer4(self):
buf0 = FlexBuffer(ByteArray([1,2]))
self.buf = FlexBuffer(ByteArray([]))
self.buf.put(buf0, 1)
self._checkBuf(1,1,0)
def test_putFlexBuffer5(self):
buf0 = FlexBuffer(ByteArray([1,2]))
max = 4*1024*1024
self.buf = FlexBuffer(ByteArray(max))
self.buf.setIndex(max)
self.assertRaises(IOException, self.buf.put, buf0, 1)
#self._checkBuf(max+1, max+1, 0)
#// ------------------------------------------------------
#// cases for void putByte( byte ):
#// putByte, put byte value and expect getByte to return matched value.
#// putByte to a Flexbuffer approaching max length, fails with IOException.
def test_putByte1(self):
self.buf = FlexBuffer(ByteArray())
self.buf.putByte(0x01)
self._checkBuf(1, 1, 0)
self.buf.setIndex(0)
self.assertEquals(0x01, self.buf.getByte())
self._checkBuf(1, 1, 0)
def test_putByte2(self):
max = 4*1024*1024
self.buf = FlexBuffer(ByteArray(max))
self.buf.setIndex(max)
self.assertRaises(IOException, self.buf.putByte, 0x01)
#self._checkBuf(max+1, max+1, 0)
#// ------------------------------------------------------
#// cases for void putDouble( double ):
#// putDouble, put Double and expect getDouble to return matched value.
#// putDouble to a Flexbuffer approaching max length, fails with IOException.
def test_putDouble1(self):
self.buf = FlexBuffer(ByteArray([]))
self.buf.putDouble(Double.MAX_VALUE)
self._checkBuf(8,8,0)
self.buf.setIndex(0)
self.assertEquals(Double.MAX_VALUE, self.buf.getDouble())
self._checkBuf(8,8,0)
def test_putDouble2(self):
max = 4*1024*1024
self.buf = FlexBuffer(ByteArray(max))
self.buf.setIndex(max)
self.assertRaises(IOException, self.buf.putDouble, Double.MIN_VALUE)
#self._checkBuf(max+8, max+8, 0)
#// ------------------------------------------------------
#// cases for void putFloat( float ):
#// putFloat, put Float and expect getFloat to return matched value.
#// putFloat to a Flexbuffer approaching max length, fails with IOException.
def test_putFloat1(self):
self.buf = FlexBuffer(ByteArray([]))
self.buf.putFloat(Float.MAX_VALUE)
self._checkBuf(4, 4, 0)
self.buf.setIndex(0)
self.assertEquals(Float.MAX_VALUE, self.buf.getFloat())
self._checkBuf(4, 4, 0)
def test_putFloat2(self):
max = 4*1024*1024
self.buf = FlexBuffer(ByteArray(max))
self.buf.setIndex(max)
# TODO - confirm this is the correct test
self.assertRaises(IOException, self.buf.putFloat, Float.MIN_VALUE)
#self._checkBuf(max+4, max+4, 0)
#// ------------------------------------------------------
#// cases for void putInt( int ):
#// putInt, put Int and expect getInt to return matched value.
#// putInt to a Flexbuffer approaching max length, fails with IOException.
def test_putInt1(self):
self.buf = FlexBuffer(ByteArray([]))
self.buf.putInt(Integer.MAX_VALUE)
self._checkBuf(4, 4, 0)
self.buf.setIndex(0)
self.assertEquals(Integer.MAX_VALUE, self.buf.getInt())
self._checkBuf(4 ,4, 0)
def test_putInt2(self):
max = 4*1024*1024
self.buf = FlexBuffer(ByteArray(max))
self.buf.setIndex(max)
# TODO - validate test
self.assertRaises(IOException, self.buf.putInt, Integer.MIN_VALUE)
#self._checkBuf(max+4, max+4, 0)
#// ------------------------------------------------------
#// cases for void putLong( long ):
#// putLong, put Long and expect getLong to return matched value.
#// putShort to a Flexbuffer approaching max length, fails with IOException.
def test_putLong1(self):
self.buf = FlexBuffer(ByteArray([]))
self.buf.putLong(Long.MAX_VALUE)
self._checkBuf(8, 8, 0)
self.buf.setIndex(0)
self.assertEquals(Long.MAX_VALUE, self.buf.getLong())
self._checkBuf(8, 8, 0)
def test_putLong2(self):
max = 4*1024*1024
self.buf = FlexBuffer(ByteArray(max))
self.buf.setIndex(max)
# TODO - confirm this is the correct test
self.assertRaises(IOException, self.buf.putLong, Long.MIN_VALUE)
#self._checkBuf(max+8, max+8, 0)
#// ------------------------------------------------------
#// cases for void putShort( short ):
#// putShort, put short and expect getShort to return matched value.
#// putShort to a Flexbuffer approaching max length, fails with IOException.
def test_putShort1(self):
self.buf = FlexBuffer(ByteArray([]))
self.buf.putShort(Short.MAX_VALUE)
self._checkBuf(2, 2, 0)
self.buf.setIndex(0)
self.assertEquals(Short.MAX_VALUE, self.buf.getShort())
self._checkBuf(2, 2, 0)
def test_putShort2(self):
max = 4*1024*1024
self.buf = FlexBuffer(ByteArray(max))
self.buf.setIndex(max)
# TODO - confirm this correct test
self.assertRaises(IOException, self.buf.putShort, 1)
#self._checkBuf(max+2, max+2, 0)
#// ------------------------------------------------------
#// cases for FlexBuffer skip( int, boolean ):
#// skip length < 0, put = false. // fails with illegal argument
#// skip length > buffer length, put = false. // fails with EOFException
#// skip length = 0, put = false.
#// skip length = buffer length, put = false.
#// skip length < buffer length, put = false.
#// skip length > buffer length, put = true.
#// skip length < buffer length, put = true.
#// skip length = max buffer length, put = true. // fails with IOException
def test_skip1(self):
self.buf = FlexBuffer(ByteArray([]))
self.assertRaises(IllegalArgumentException, self.buf.skip, -1, False)
def test_skip2(self):
self.buf = FlexBuffer(ByteArray([]))
self.assertRaises(EOFException, self.buf.skip, 2, False)
def test_skip3(self):
self.buf = FlexBuffer(ByteArray([1, 2]))
self.buf.skip(2, False)
self._checkBuf(2, 2, 0)
def test_skip4(self):
self.buf = FlexBuffer(ByteArray([1,2]))
self.buf.skip(2, False)
self._checkBuf(2, 2, 0)
def test_skip5(self):
self.buf = FlexBuffer(ByteArray([1,2]))
self.buf.skip(1, False)
self._checkBuf(2, 1, 1)
def test_skip6(self):
self.buf = FlexBuffer(ByteArray([1,2]))
self.buf.skip(1, True)
self._checkBuf(2, 1, 1)
def test_skip7(self):
self.buf = FlexBuffer(ByteArray([1,2]))
self.buf.skip(5, True)
self._checkBuf(5, 5, 0)
def test_skip8(self):
self.buf = FlexBuffer(ByteArray([1,2]))
max = 4*1024*1024
# TODO - confirm this is the correct test
self.assertRaises(IOException, self.buf.skip, max+1, True)
#self._checkBuf(max+1, max+1, 0)
if __name__ == '__main__':
unittest.main()