Network/test/dorkboxTest/network/kryo/InputOutputByteBufTest.kt
2021-04-25 22:01:36 +02:00

970 lines
48 KiB
Kotlin

/* Copyright (c) 2008-2018, Nathan Sweet
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following
* conditions are met:
*
* - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
* - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided with the distribution.
* - Neither the name of Esoteric Software nor the names of its contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
* BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
* SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
package dorkboxTest.network.kryo
import com.esotericsoftware.kryo.Kryo
import com.esotericsoftware.kryo.io.Input
import com.esotericsoftware.kryo.io.Output
import dorkbox.network.serialization.AeronInput
import dorkbox.network.serialization.AeronOutput
import org.junit.Assert
import org.junit.Test
import java.io.IOException
import java.util.*
/** @author Nathan Sweet
*/
class InputOutputByteBufTest : KryoTestCase() {
@Test
fun testByteBufferInputEnd() {
val `in` = AeronInput(byteArrayOf(123, 0, 0, 0))
Assert.assertFalse(`in`.end())
`in`.setPosition(4)
Assert.assertTrue(`in`.end())
}
@Test
@Throws(IOException::class)
fun testOutputBytes() {
val output = AeronOutput(0)
output.writeBytes(byteArrayOf(11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26))
output.writeBytes(byteArrayOf(31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46))
output.writeBytes(byteArrayOf(51, 52, 53, 54, 55, 56, 57, 58))
output.writeBytes(byteArrayOf(61, 62, 63, 64, 65))
output.flush()
Assert.assertArrayEquals(
byteArrayOf( //
11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, //
31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, //
51, 52, 53, 54, 55, 56, 57, 58, //
61, 62, 63, 64, 65
), output.toBytes()
)
}
@Test
@Throws(IOException::class)
fun testOutputBytesArray() {
val buffer = byteArrayOf( //
11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, //
31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, //
51, 52, 53, 54, 55, 56, 57, 58, //
61, 62, 63, 64, 65
)
val output = AeronOutput(buffer)
output.setPosition(buffer.size)
Assert.assertArrayEquals(
byteArrayOf( //
11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, //
31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, //
51, 52, 53, 54, 55, 56, 57, 58, //
61, 62, 63, 64, 65
), output.toBytes()
)
}
@Test
@Throws(IOException::class)
fun testInputBytes() {
val bytes = byteArrayOf( //
11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, //
31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, //
51, 52, 53, 54, 55, 56, 57, 58, //
61, 62, 63, 64, 65
)
var input = AeronInput(bytes)
val temp = ByteArray(1024)
var count = input.read(temp, 512, bytes.size)
Assert.assertEquals(bytes.size.toLong(), count.toLong())
var temp2 = ByteArray(count)
System.arraycopy(temp, 512, temp2, 0, count)
Assert.assertArrayEquals(bytes, temp2)
input = AeronInput(bytes)
count = input.read(temp, 512, 512)
Assert.assertEquals(bytes.size.toLong(), count.toLong())
temp2 = ByteArray(count)
System.arraycopy(temp, 512, temp2, 0, count)
Assert.assertArrayEquals(bytes, temp2)
}
@Test
@Throws(IOException::class)
fun testWriteBytes() {
val buffer = AeronOutput(512)
buffer.writeBytes(byteArrayOf(11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26))
buffer.writeBytes(byteArrayOf(31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46))
buffer.writeByte(51)
buffer.writeBytes(byteArrayOf(52, 53, 54, 55, 56, 57, 58))
buffer.writeByte(61)
buffer.writeByte(62)
buffer.writeByte(63)
buffer.writeByte(64)
buffer.writeByte(65)
buffer.flush()
Assert.assertArrayEquals(
byteArrayOf( //
11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, //
31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, //
51, 52, 53, 54, 55, 56, 57, 58, //
61, 62, 63, 64, 65
), buffer.toBytes()
)
}
@Test
@Throws(IOException::class)
fun testStrings() {
runStringTest(AeronOutput(4096))
runStringTest(AeronOutput(897))
val write: Output = AeronOutput(21)
val value = "abcdef\u00E1\u00E9\u00ED\u00F3\u00FA\u1234"
write.writeString(value)
var read: Input = AeronInput(write.toBytes())
Assert.assertEquals(value, read.readString())
write.reset()
write.writeString(null)
read = Input(write.toBytes())
Assert.assertNull(read.readString())
for (i in 0..258) runStringTest(i)
runStringTest(1)
runStringTest(2)
runStringTest(127)
runStringTest(256)
runStringTest(1024 * 1023)
runStringTest(1024 * 1024)
runStringTest(1024 * 1025)
runStringTest(1024 * 1026)
runStringTest(1024 * 1024 * 2)
}
@Test
fun testGrowingBufferForAscii() {
// Initial size of 2.
val output = AeronOutput(2)
// Check that it is possible to write an ASCII string into the output buffer.
output.writeString("node/read")
val input: Input = AeronInput(output.toBytes(), 0, output.position())
Assert.assertEquals("node/read", input.readString())
}
@Throws(IOException::class)
private fun runStringTest(length: Int) {
val write = Output(1024, -1)
val buffer = StringBuilder()
for (i in 0 until length) buffer.append(i.toChar())
val value = buffer.toString()
write.writeString(value)
write.writeString(value)
var read = AeronInput(write.toBytes())
Assert.assertEquals(value, read.readString())
Assert.assertEquals(value, read.readStringBuilder().toString())
write.reset()
write.writeString(buffer.toString())
write.writeString(buffer.toString())
read = AeronInput(write.toBytes())
Assert.assertEquals(value, read.readStringBuilder().toString())
Assert.assertEquals(value, read.readString())
if (length <= 127) {
write.reset()
write.writeAscii(value)
write.writeAscii(value)
read = AeronInput(write.toBytes())
Assert.assertEquals(value, read.readStringBuilder().toString())
Assert.assertEquals(value, read.readString())
}
}
@Throws(IOException::class)
private fun runStringTest(write: AeronOutput) {
val value1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ\rabcdefghijklmnopqrstuvwxyz\n1234567890\t\"!`?'.,;:()[]{}<>|/@\\^$-%+=#_&~*"
val value2 = "abcdef\u00E1\u00E9\u00ED\u00F3\u00FA\u1234"
write.writeString("")
write.writeString("1")
write.writeString("22")
write.writeString("uno")
write.writeString("dos")
write.writeString("tres")
write.writeString(null)
write.writeString(value1)
write.writeString(value2)
for (i in 0..126) write.writeString(i.toChar().toString())
for (i in 0..126) write.writeString(i.toChar().toString() + "abc")
val read = AeronInput(write.toBytes())
Assert.assertEquals("", read.readString())
Assert.assertEquals("1", read.readString())
Assert.assertEquals("22", read.readString())
Assert.assertEquals("uno", read.readString())
Assert.assertEquals("dos", read.readString())
Assert.assertEquals("tres", read.readString())
Assert.assertNull(read.readString())
Assert.assertEquals(value1, read.readString())
Assert.assertEquals(value2, read.readString())
for (i in 0..126) Assert.assertEquals(i.toChar().toString(), read.readString())
for (i in 0..126) Assert.assertEquals(i.toChar().toString() + "abc", read.readString())
// now test string builder
read.reset()
Assert.assertEquals("", read.readStringBuilder().toString())
Assert.assertEquals("1", read.readStringBuilder().toString())
Assert.assertEquals("22", read.readStringBuilder().toString())
Assert.assertEquals("uno", read.readStringBuilder().toString())
Assert.assertEquals("dos", read.readStringBuilder().toString())
Assert.assertEquals("tres", read.readStringBuilder().toString())
Assert.assertNull(read.readStringBuilder())
Assert.assertEquals(value1, read.readStringBuilder().toString())
Assert.assertEquals(value2, read.readStringBuilder().toString())
for (i in 0..126) Assert.assertEquals(i.toChar().toString(), read.readStringBuilder().toString())
for (i in 0..126) Assert.assertEquals(i.toChar().toString() + "abc", read.readStringBuilder().toString())
}
@Test
@Throws(IOException::class)
fun testCanReadInt() {
val write = AeronOutput(32)
var read = AeronInput(write.toBytes())
Assert.assertFalse(read.canReadVarInt())
write.writeVarInt(400, true)
read = AeronInput(write.toBytes())
Assert.assertTrue(read.canReadVarInt())
read.setLimit(read.limit() - 1)
Assert.assertFalse(read.canReadVarInt())
}
@Test
@Throws(IOException::class)
fun testVarIntFlagOutput() {
val output = AeronOutput(4096)
val input = AeronInput(output.internalBuffer)
runVarIntFlagsTest(output, input)
}
@Test
@Throws(IOException::class)
fun testVarIntFlagByteBufferOutput() {
val output = AeronOutput(4096)
val input = AeronInput(output.internalBuffer)
runVarIntFlagsTest(output, input)
}
@Throws(IOException::class)
private fun runVarIntFlagsTest(output: Output, input: Input) {
Assert.assertEquals(1, output.writeVarIntFlag(true, 63, true).toLong())
Assert.assertEquals(2, output.writeVarIntFlag(true, 64, true).toLong())
Assert.assertEquals(1, output.writeVarIntFlag(false, 63, true).toLong())
Assert.assertEquals(2, output.writeVarIntFlag(false, 64, true).toLong())
Assert.assertEquals(1, output.writeVarIntFlag(true, 31, false).toLong())
Assert.assertEquals(2, output.writeVarIntFlag(true, 32, false).toLong())
Assert.assertEquals(1, output.writeVarIntFlag(false, 31, false).toLong())
Assert.assertEquals(2, output.writeVarIntFlag(false, 32, false).toLong())
input.setPosition(0)
input.setLimit(output.position())
Assert.assertTrue(input.readVarIntFlag())
Assert.assertEquals(63, input.readVarIntFlag(true).toLong())
Assert.assertTrue(input.readVarIntFlag())
Assert.assertEquals(64, input.readVarIntFlag(true).toLong())
Assert.assertFalse(input.readVarIntFlag())
Assert.assertEquals(63, input.readVarIntFlag(true).toLong())
Assert.assertFalse(input.readVarIntFlag())
Assert.assertEquals(64, input.readVarIntFlag(true).toLong())
Assert.assertTrue(input.readVarIntFlag())
Assert.assertEquals(31, input.readVarIntFlag(false).toLong())
Assert.assertTrue(input.readVarIntFlag())
Assert.assertEquals(32, input.readVarIntFlag(false).toLong())
Assert.assertFalse(input.readVarIntFlag())
Assert.assertEquals(31, input.readVarIntFlag(false).toLong())
Assert.assertFalse(input.readVarIntFlag())
Assert.assertEquals(32, input.readVarIntFlag(false).toLong())
}
@Test
@Throws(IOException::class)
fun testInts() {
runIntTest(AeronOutput(4096))
runIntTest(AeronOutput(32))
}
@Throws(IOException::class)
private fun runIntTest(write: Output) {
write.writeInt(0)
write.writeInt(63)
write.writeInt(64)
write.writeInt(127)
write.writeInt(128)
write.writeInt(8192)
write.writeInt(16384)
write.writeInt(2097151)
write.writeInt(1048575)
write.writeInt(134217727)
write.writeInt(268435455)
write.writeInt(134217728)
write.writeInt(268435456)
write.writeInt(-2097151)
write.writeInt(-1048575)
write.writeInt(-134217727)
write.writeInt(-268435455)
write.writeInt(-134217728)
write.writeInt(-268435456)
Assert.assertEquals(1, write.writeVarInt(0, true).toLong())
Assert.assertEquals(1, write.writeVarInt(0, false).toLong())
Assert.assertEquals(1, write.writeVarInt(63, true).toLong())
Assert.assertEquals(1, write.writeVarInt(63, false).toLong())
Assert.assertEquals(1, write.writeVarInt(64, true).toLong())
Assert.assertEquals(2, write.writeVarInt(64, false).toLong())
Assert.assertEquals(1, write.writeVarInt(127, true).toLong())
Assert.assertEquals(2, write.writeVarInt(127, false).toLong())
Assert.assertEquals(2, write.writeVarInt(128, true).toLong())
Assert.assertEquals(2, write.writeVarInt(128, false).toLong())
Assert.assertEquals(2, write.writeVarInt(8191, true).toLong())
Assert.assertEquals(2, write.writeVarInt(8191, false).toLong())
Assert.assertEquals(2, write.writeVarInt(8192, true).toLong())
Assert.assertEquals(3, write.writeVarInt(8192, false).toLong())
Assert.assertEquals(2, write.writeVarInt(16383, true).toLong())
Assert.assertEquals(3, write.writeVarInt(16383, false).toLong())
Assert.assertEquals(3, write.writeVarInt(16384, true).toLong())
Assert.assertEquals(3, write.writeVarInt(16384, false).toLong())
Assert.assertEquals(3, write.writeVarInt(2097151, true).toLong())
Assert.assertEquals(4, write.writeVarInt(2097151, false).toLong())
Assert.assertEquals(3, write.writeVarInt(1048575, true).toLong())
Assert.assertEquals(3, write.writeVarInt(1048575, false).toLong())
Assert.assertEquals(4, write.writeVarInt(134217727, true).toLong())
Assert.assertEquals(4, write.writeVarInt(134217727, false).toLong())
Assert.assertEquals(4, write.writeVarInt(268435455, true).toLong())
Assert.assertEquals(5, write.writeVarInt(268435455, false).toLong())
Assert.assertEquals(4, write.writeVarInt(134217728, true).toLong())
Assert.assertEquals(5, write.writeVarInt(134217728, false).toLong())
Assert.assertEquals(5, write.writeVarInt(268435456, true).toLong())
Assert.assertEquals(5, write.writeVarInt(268435456, false).toLong())
Assert.assertEquals(1, write.writeVarInt(-64, false).toLong())
Assert.assertEquals(5, write.writeVarInt(-64, true).toLong())
Assert.assertEquals(2, write.writeVarInt(-65, false).toLong())
Assert.assertEquals(5, write.writeVarInt(-65, true).toLong())
Assert.assertEquals(2, write.writeVarInt(-8192, false).toLong())
Assert.assertEquals(5, write.writeVarInt(-8192, true).toLong())
Assert.assertEquals(3, write.writeVarInt(-1048576, false).toLong())
Assert.assertEquals(5, write.writeVarInt(-1048576, true).toLong())
Assert.assertEquals(4, write.writeVarInt(-134217728, false).toLong())
Assert.assertEquals(5, write.writeVarInt(-134217728, true).toLong())
Assert.assertEquals(5, write.writeVarInt(-134217729, false).toLong())
Assert.assertEquals(5, write.writeVarInt(-134217729, true).toLong())
Assert.assertEquals(5, write.writeVarInt(1000000000, false).toLong())
Assert.assertEquals(5, write.writeVarInt(1000000000, true).toLong())
Assert.assertEquals(5, write.writeVarInt(Int.MAX_VALUE - 1, false).toLong())
Assert.assertEquals(5, write.writeVarInt(Int.MAX_VALUE - 1, true).toLong())
Assert.assertEquals(5, write.writeVarInt(Int.MAX_VALUE, false).toLong())
Assert.assertEquals(5, write.writeVarInt(Int.MAX_VALUE, true).toLong())
val read = AeronInput(write.toBytes())
Assert.assertEquals(0, read.readInt().toLong())
Assert.assertEquals(63, read.readInt().toLong())
Assert.assertEquals(64, read.readInt().toLong())
Assert.assertEquals(127, read.readInt().toLong())
Assert.assertEquals(128, read.readInt().toLong())
Assert.assertEquals(8192, read.readInt().toLong())
Assert.assertEquals(16384, read.readInt().toLong())
Assert.assertEquals(2097151, read.readInt().toLong())
Assert.assertEquals(1048575, read.readInt().toLong())
Assert.assertEquals(134217727, read.readInt().toLong())
Assert.assertEquals(268435455, read.readInt().toLong())
Assert.assertEquals(134217728, read.readInt().toLong())
Assert.assertEquals(268435456, read.readInt().toLong())
Assert.assertEquals(-2097151, read.readInt().toLong())
Assert.assertEquals(-1048575, read.readInt().toLong())
Assert.assertEquals(-134217727, read.readInt().toLong())
Assert.assertEquals(-268435455, read.readInt().toLong())
Assert.assertEquals(-134217728, read.readInt().toLong())
Assert.assertEquals(-268435456, read.readInt().toLong())
Assert.assertTrue(read.canReadVarInt())
Assert.assertTrue(read.canReadVarInt())
Assert.assertTrue(read.canReadVarInt())
Assert.assertEquals(0, read.readVarInt(true).toLong())
Assert.assertEquals(0, read.readVarInt(false).toLong())
Assert.assertEquals(63, read.readVarInt(true).toLong())
Assert.assertEquals(63, read.readVarInt(false).toLong())
Assert.assertEquals(64, read.readVarInt(true).toLong())
Assert.assertEquals(64, read.readVarInt(false).toLong())
Assert.assertEquals(127, read.readVarInt(true).toLong())
Assert.assertEquals(127, read.readVarInt(false).toLong())
Assert.assertEquals(128, read.readVarInt(true).toLong())
Assert.assertEquals(128, read.readVarInt(false).toLong())
Assert.assertEquals(8191, read.readVarInt(true).toLong())
Assert.assertEquals(8191, read.readVarInt(false).toLong())
Assert.assertEquals(8192, read.readVarInt(true).toLong())
Assert.assertEquals(8192, read.readVarInt(false).toLong())
Assert.assertEquals(16383, read.readVarInt(true).toLong())
Assert.assertEquals(16383, read.readVarInt(false).toLong())
Assert.assertEquals(16384, read.readVarInt(true).toLong())
Assert.assertEquals(16384, read.readVarInt(false).toLong())
Assert.assertEquals(2097151, read.readVarInt(true).toLong())
Assert.assertEquals(2097151, read.readVarInt(false).toLong())
Assert.assertEquals(1048575, read.readVarInt(true).toLong())
Assert.assertEquals(1048575, read.readVarInt(false).toLong())
Assert.assertEquals(134217727, read.readVarInt(true).toLong())
Assert.assertEquals(134217727, read.readVarInt(false).toLong())
Assert.assertEquals(268435455, read.readVarInt(true).toLong())
Assert.assertEquals(268435455, read.readVarInt(false).toLong())
Assert.assertEquals(134217728, read.readVarInt(true).toLong())
Assert.assertEquals(134217728, read.readVarInt(false).toLong())
Assert.assertEquals(268435456, read.readVarInt(true).toLong())
Assert.assertEquals(268435456, read.readVarInt(false).toLong())
Assert.assertEquals(-64, read.readVarInt(false).toLong())
Assert.assertEquals(-64, read.readVarInt(true).toLong())
Assert.assertEquals(-65, read.readVarInt(false).toLong())
Assert.assertEquals(-65, read.readVarInt(true).toLong())
Assert.assertEquals(-8192, read.readVarInt(false).toLong())
Assert.assertEquals(-8192, read.readVarInt(true).toLong())
Assert.assertEquals(-1048576, read.readVarInt(false).toLong())
Assert.assertEquals(-1048576, read.readVarInt(true).toLong())
Assert.assertEquals(-134217728, read.readVarInt(false).toLong())
Assert.assertEquals(-134217728, read.readVarInt(true).toLong())
Assert.assertEquals(-134217729, read.readVarInt(false).toLong())
Assert.assertEquals(-134217729, read.readVarInt(true).toLong())
Assert.assertEquals(1000000000, read.readVarInt(false).toLong())
Assert.assertEquals(1000000000, read.readVarInt(true).toLong())
Assert.assertEquals((Int.MAX_VALUE - 1).toLong(), read.readVarInt(false).toLong())
Assert.assertEquals((Int.MAX_VALUE - 1).toLong(), read.readVarInt(true).toLong())
Assert.assertEquals(Int.MAX_VALUE.toLong(), read.readVarInt(false).toLong())
Assert.assertEquals(Int.MAX_VALUE.toLong(), read.readVarInt(true).toLong())
Assert.assertFalse(read.canReadVarInt())
val random = Random()
for (i in 0..9999) {
val value = random.nextInt()
write.reset()
write.writeInt(value)
write.writeVarInt(value, true)
write.writeVarInt(value, false)
read.buffer = write.toBytes()
Assert.assertEquals(value.toLong(), read.readInt().toLong())
Assert.assertEquals(value.toLong(), read.readVarInt(true).toLong())
Assert.assertEquals(value.toLong(), read.readVarInt(false).toLong())
}
}
@Test
@Throws(IOException::class)
fun testLongs() {
runLongTest(AeronOutput(4096))
runLongTest(AeronOutput(32))
}
@Throws(IOException::class)
private fun runLongTest(write: Output) {
write.writeLong(0)
write.writeLong(63)
write.writeLong(64)
write.writeLong(127)
write.writeLong(128)
write.writeLong(8192)
write.writeLong(16384)
write.writeLong(2097151)
write.writeLong(1048575)
write.writeLong(134217727)
write.writeLong(268435455)
write.writeLong(134217728)
write.writeLong(268435456)
write.writeLong(-2097151)
write.writeLong(-1048575)
write.writeLong(-134217727)
write.writeLong(-268435455)
write.writeLong(-134217728)
write.writeLong(-268435456)
Assert.assertEquals(1, write.writeVarLong(0, true).toLong())
Assert.assertEquals(1, write.writeVarLong(0, false).toLong())
Assert.assertEquals(1, write.writeVarLong(63, true).toLong())
Assert.assertEquals(1, write.writeVarLong(63, false).toLong())
Assert.assertEquals(1, write.writeVarLong(64, true).toLong())
Assert.assertEquals(2, write.writeVarLong(64, false).toLong())
Assert.assertEquals(1, write.writeVarLong(127, true).toLong())
Assert.assertEquals(2, write.writeVarLong(127, false).toLong())
Assert.assertEquals(2, write.writeVarLong(128, true).toLong())
Assert.assertEquals(2, write.writeVarLong(128, false).toLong())
Assert.assertEquals(2, write.writeVarLong(8191, true).toLong())
Assert.assertEquals(2, write.writeVarLong(8191, false).toLong())
Assert.assertEquals(2, write.writeVarLong(8192, true).toLong())
Assert.assertEquals(3, write.writeVarLong(8192, false).toLong())
Assert.assertEquals(2, write.writeVarLong(16383, true).toLong())
Assert.assertEquals(3, write.writeVarLong(16383, false).toLong())
Assert.assertEquals(3, write.writeVarLong(16384, true).toLong())
Assert.assertEquals(3, write.writeVarLong(16384, false).toLong())
Assert.assertEquals(3, write.writeVarLong(2097151, true).toLong())
Assert.assertEquals(4, write.writeVarLong(2097151, false).toLong())
Assert.assertEquals(3, write.writeVarLong(1048575, true).toLong())
Assert.assertEquals(3, write.writeVarLong(1048575, false).toLong())
Assert.assertEquals(4, write.writeVarLong(134217727, true).toLong())
Assert.assertEquals(4, write.writeVarLong(134217727, false).toLong())
Assert.assertEquals(4, write.writeVarLong(268435455L, true).toLong())
Assert.assertEquals(5, write.writeVarLong(268435455L, false).toLong())
Assert.assertEquals(4, write.writeVarLong(134217728L, true).toLong())
Assert.assertEquals(5, write.writeVarLong(134217728L, false).toLong())
Assert.assertEquals(5, write.writeVarLong(268435456L, true).toLong())
Assert.assertEquals(5, write.writeVarLong(268435456L, false).toLong())
Assert.assertEquals(1, write.writeVarLong(-64, false).toLong())
Assert.assertEquals(9, write.writeVarLong(-64, true).toLong())
Assert.assertEquals(2, write.writeVarLong(-65, false).toLong())
Assert.assertEquals(9, write.writeVarLong(-65, true).toLong())
Assert.assertEquals(2, write.writeVarLong(-8192, false).toLong())
Assert.assertEquals(9, write.writeVarLong(-8192, true).toLong())
Assert.assertEquals(3, write.writeVarLong(-1048576, false).toLong())
Assert.assertEquals(9, write.writeVarLong(-1048576, true).toLong())
Assert.assertEquals(4, write.writeVarLong(-134217728, false).toLong())
Assert.assertEquals(9, write.writeVarLong(-134217728, true).toLong())
Assert.assertEquals(5, write.writeVarLong(-134217729, false).toLong())
Assert.assertEquals(9, write.writeVarLong(-134217729, true).toLong())
val read = AeronInput(write.toBytes())
Assert.assertEquals(0, read.readLong())
Assert.assertEquals(63, read.readLong())
Assert.assertEquals(64, read.readLong())
Assert.assertEquals(127, read.readLong())
Assert.assertEquals(128, read.readLong())
Assert.assertEquals(8192, read.readLong())
Assert.assertEquals(16384, read.readLong())
Assert.assertEquals(2097151, read.readLong())
Assert.assertEquals(1048575, read.readLong())
Assert.assertEquals(134217727, read.readLong())
Assert.assertEquals(268435455, read.readLong())
Assert.assertEquals(134217728, read.readLong())
Assert.assertEquals(268435456, read.readLong())
Assert.assertEquals(-2097151, read.readLong())
Assert.assertEquals(-1048575, read.readLong())
Assert.assertEquals(-134217727, read.readLong())
Assert.assertEquals(-268435455, read.readLong())
Assert.assertEquals(-134217728, read.readLong())
Assert.assertEquals(-268435456, read.readLong())
Assert.assertEquals(0, read.readVarLong(true))
Assert.assertEquals(0, read.readVarLong(false))
Assert.assertEquals(63, read.readVarLong(true))
Assert.assertEquals(63, read.readVarLong(false))
Assert.assertEquals(64, read.readVarLong(true))
Assert.assertEquals(64, read.readVarLong(false))
Assert.assertEquals(127, read.readVarLong(true))
Assert.assertEquals(127, read.readVarLong(false))
Assert.assertEquals(128, read.readVarLong(true))
Assert.assertEquals(128, read.readVarLong(false))
Assert.assertEquals(8191, read.readVarLong(true))
Assert.assertEquals(8191, read.readVarLong(false))
Assert.assertEquals(8192, read.readVarLong(true))
Assert.assertEquals(8192, read.readVarLong(false))
Assert.assertEquals(16383, read.readVarLong(true))
Assert.assertEquals(16383, read.readVarLong(false))
Assert.assertEquals(16384, read.readVarLong(true))
Assert.assertEquals(16384, read.readVarLong(false))
Assert.assertEquals(2097151, read.readVarLong(true))
Assert.assertEquals(2097151, read.readVarLong(false))
Assert.assertEquals(1048575, read.readVarLong(true))
Assert.assertEquals(1048575, read.readVarLong(false))
Assert.assertEquals(134217727, read.readVarLong(true))
Assert.assertEquals(134217727, read.readVarLong(false))
Assert.assertEquals(268435455, read.readVarLong(true))
Assert.assertEquals(268435455, read.readVarLong(false))
Assert.assertEquals(134217728, read.readVarLong(true))
Assert.assertEquals(134217728, read.readVarLong(false))
Assert.assertEquals(268435456, read.readVarLong(true))
Assert.assertEquals(268435456, read.readVarLong(false))
Assert.assertEquals(-64, read.readVarLong(false))
Assert.assertEquals(-64, read.readVarLong(true))
Assert.assertEquals(-65, read.readVarLong(false))
Assert.assertEquals(-65, read.readVarLong(true))
Assert.assertEquals(-8192, read.readVarLong(false))
Assert.assertEquals(-8192, read.readVarLong(true))
Assert.assertEquals(-1048576, read.readVarLong(false))
Assert.assertEquals(-1048576, read.readVarLong(true))
Assert.assertEquals(-134217728, read.readVarLong(false))
Assert.assertEquals(-134217728, read.readVarLong(true))
Assert.assertEquals(-134217729, read.readVarLong(false))
Assert.assertEquals(-134217729, read.readVarLong(true))
val random = Random()
for (i in 0..9999) {
val value = random.nextLong()
write.reset()
write.writeLong(value)
write.writeVarLong(value, true)
write.writeVarLong(value, false)
read.buffer = write.toBytes()
Assert.assertEquals(value, read.readLong())
Assert.assertEquals(value, read.readVarLong(true))
Assert.assertEquals(value, read.readVarLong(false))
}
}
@Test
@Throws(IOException::class)
fun testShorts() {
runShortTest(AeronOutput(4096))
runShortTest(AeronOutput(32))
}
@Throws(IOException::class)
private fun runShortTest(write: Output) {
write.writeShort(0)
write.writeShort(63)
write.writeShort(64)
write.writeShort(127)
write.writeShort(128)
write.writeShort(8192)
write.writeShort(16384)
write.writeShort(32767)
write.writeShort(-63)
write.writeShort(-64)
write.writeShort(-127)
write.writeShort(-128)
write.writeShort(-8192)
write.writeShort(-16384)
write.writeShort(-32768)
val read = AeronInput(write.toBytes())
Assert.assertEquals(0, read.readShort().toLong())
Assert.assertEquals(63, read.readShort().toLong())
Assert.assertEquals(64, read.readShort().toLong())
Assert.assertEquals(127, read.readShort().toLong())
Assert.assertEquals(128, read.readShort().toLong())
Assert.assertEquals(8192, read.readShort().toLong())
Assert.assertEquals(16384, read.readShort().toLong())
Assert.assertEquals(32767, read.readShort().toLong())
Assert.assertEquals(-63, read.readShort().toLong())
Assert.assertEquals(-64, read.readShort().toLong())
Assert.assertEquals(-127, read.readShort().toLong())
Assert.assertEquals(-128, read.readShort().toLong())
Assert.assertEquals(-8192, read.readShort().toLong())
Assert.assertEquals(-16384, read.readShort().toLong())
Assert.assertEquals(-32768, read.readShort().toLong())
}
@Test
@Throws(IOException::class)
fun testFloats() {
runFloatTest(AeronOutput(4096))
runFloatTest(AeronOutput(32))
}
@Throws(IOException::class)
private fun runFloatTest(write: Output) {
write.writeFloat(0f)
write.writeFloat(63f)
write.writeFloat(64f)
write.writeFloat(127f)
write.writeFloat(128f)
write.writeFloat(8192f)
write.writeFloat(16384f)
write.writeFloat(32767f)
write.writeFloat(-63f)
write.writeFloat(-64f)
write.writeFloat(-127f)
write.writeFloat(-128f)
write.writeFloat(-8192f)
write.writeFloat(-16384f)
write.writeFloat(-32768f)
Assert.assertEquals(1, write.writeVarFloat(0f, 1000f, true).toLong())
Assert.assertEquals(1, write.writeVarFloat(0f, 1000f, false).toLong())
Assert.assertEquals(3, write.writeVarFloat(63f, 1000f, true).toLong())
Assert.assertEquals(3, write.writeVarFloat(63f, 1000f, false).toLong())
Assert.assertEquals(3, write.writeVarFloat(64f, 1000f, true).toLong())
Assert.assertEquals(3, write.writeVarFloat(64f, 1000f, false).toLong())
Assert.assertEquals(3, write.writeVarFloat(127f, 1000f, true).toLong())
Assert.assertEquals(3, write.writeVarFloat(127f, 1000f, false).toLong())
Assert.assertEquals(3, write.writeVarFloat(128f, 1000f, true).toLong())
Assert.assertEquals(3, write.writeVarFloat(128f, 1000f, false).toLong())
Assert.assertEquals(4, write.writeVarFloat(8191f, 1000f, true).toLong())
Assert.assertEquals(4, write.writeVarFloat(8191f, 1000f, false).toLong())
Assert.assertEquals(4, write.writeVarFloat(8192f, 1000f, true).toLong())
Assert.assertEquals(4, write.writeVarFloat(8192f, 1000f, false).toLong())
Assert.assertEquals(4, write.writeVarFloat(16383f, 1000f, true).toLong())
Assert.assertEquals(4, write.writeVarFloat(16383f, 1000f, false).toLong())
Assert.assertEquals(4, write.writeVarFloat(16384f, 1000f, true).toLong())
Assert.assertEquals(4, write.writeVarFloat(16384f, 1000f, false).toLong())
Assert.assertEquals(4, write.writeVarFloat(32767f, 1000f, true).toLong())
Assert.assertEquals(4, write.writeVarFloat(32767f, 1000f, false).toLong())
Assert.assertEquals(3, write.writeVarFloat(-64f, 1000f, false).toLong())
Assert.assertEquals(5, write.writeVarFloat(-64f, 1000f, true).toLong())
Assert.assertEquals(3, write.writeVarFloat(-65f, 1000f, false).toLong())
Assert.assertEquals(5, write.writeVarFloat(-65f, 1000f, true).toLong())
Assert.assertEquals(4, write.writeVarFloat(-8192f, 1000f, false).toLong())
Assert.assertEquals(5, write.writeVarFloat(-8192f, 1000f, true).toLong())
val read = AeronInput(write.toBytes())
KryoAssert.assertFloatEquals(read.readFloat(), 0.0)
KryoAssert.assertFloatEquals(read.readFloat(), 63.0)
KryoAssert.assertFloatEquals(read.readFloat(), 64.0)
KryoAssert.assertFloatEquals(read.readFloat(), 127.0)
KryoAssert.assertFloatEquals(read.readFloat(), 128.0)
KryoAssert.assertFloatEquals(read.readFloat(), 8192.0)
KryoAssert.assertFloatEquals(read.readFloat(), 16384.0)
KryoAssert.assertFloatEquals(read.readFloat(), 32767.0)
KryoAssert.assertFloatEquals(read.readFloat(), -63.0)
KryoAssert.assertFloatEquals(read.readFloat(), -64.0)
KryoAssert.assertFloatEquals(read.readFloat(), -127.0)
KryoAssert.assertFloatEquals(read.readFloat(), -128.0)
KryoAssert.assertFloatEquals(read.readFloat(), -8192.0)
KryoAssert.assertFloatEquals(read.readFloat(), -16384.0)
KryoAssert.assertFloatEquals(read.readFloat(), -32768.0)
KryoAssert.assertFloatEquals(read.readVarFloat(1000f, true), 0.0)
KryoAssert.assertFloatEquals(read.readVarFloat(1000f, false), 0.0)
KryoAssert.assertFloatEquals(read.readVarFloat(1000f, true), 63.0)
KryoAssert.assertFloatEquals(read.readVarFloat(1000f, false), 63.0)
KryoAssert.assertFloatEquals(read.readVarFloat(1000f, true), 64.0)
KryoAssert.assertFloatEquals(read.readVarFloat(1000f, false), 64.0)
KryoAssert.assertFloatEquals(read.readVarFloat(1000f, true), 127.0)
KryoAssert.assertFloatEquals(read.readVarFloat(1000f, false), 127.0)
KryoAssert.assertFloatEquals(read.readVarFloat(1000f, true), 128.0)
KryoAssert.assertFloatEquals(read.readVarFloat(1000f, false), 128.0)
KryoAssert.assertFloatEquals(read.readVarFloat(1000f, true), 8191.0)
KryoAssert.assertFloatEquals(read.readVarFloat(1000f, false), 8191.0)
KryoAssert.assertFloatEquals(read.readVarFloat(1000f, true), 8192.0)
KryoAssert.assertFloatEquals(read.readVarFloat(1000f, false), 8192.0)
KryoAssert.assertFloatEquals(read.readVarFloat(1000f, true), 16383.0)
KryoAssert.assertFloatEquals(read.readVarFloat(1000f, false), 16383.0)
KryoAssert.assertFloatEquals(read.readVarFloat(1000f, true), 16384.0)
KryoAssert.assertFloatEquals(read.readVarFloat(1000f, false), 16384.0)
KryoAssert.assertFloatEquals(read.readVarFloat(1000f, true), 32767.0)
KryoAssert.assertFloatEquals(read.readVarFloat(1000f, false), 32767.0)
KryoAssert.assertFloatEquals(read.readVarFloat(1000f, false), -64.0)
KryoAssert.assertFloatEquals(read.readVarFloat(1000f, true), -64.0)
KryoAssert.assertFloatEquals(read.readVarFloat(1000f, false), -65.0)
KryoAssert.assertFloatEquals(read.readVarFloat(1000f, true), -65.0)
KryoAssert.assertFloatEquals(read.readVarFloat(1000f, false), -8192.0)
KryoAssert.assertFloatEquals(read.readVarFloat(1000f, true), -8192.0)
}
@Test
@Throws(IOException::class)
fun testDoubles() {
runDoubleTest(AeronOutput(4096))
runDoubleTest(AeronOutput(32))
}
@Throws(IOException::class)
private fun runDoubleTest(write: Output) {
write.writeDouble(0.0)
write.writeDouble(63.0)
write.writeDouble(64.0)
write.writeDouble(127.0)
write.writeDouble(128.0)
write.writeDouble(8192.0)
write.writeDouble(16384.0)
write.writeDouble(32767.0)
write.writeDouble(-63.0)
write.writeDouble(-64.0)
write.writeDouble(-127.0)
write.writeDouble(-128.0)
write.writeDouble(-8192.0)
write.writeDouble(-16384.0)
write.writeDouble(-32768.0)
Assert.assertEquals(1, write.writeVarDouble(0.0, 1000.0, true).toLong())
Assert.assertEquals(1, write.writeVarDouble(0.0, 1000.0, false).toLong())
Assert.assertEquals(3, write.writeVarDouble(63.0, 1000.0, true).toLong())
Assert.assertEquals(3, write.writeVarDouble(63.0, 1000.0, false).toLong())
Assert.assertEquals(3, write.writeVarDouble(64.0, 1000.0, true).toLong())
Assert.assertEquals(3, write.writeVarDouble(64.0, 1000.0, false).toLong())
Assert.assertEquals(3, write.writeVarDouble(127.0, 1000.0, true).toLong())
Assert.assertEquals(3, write.writeVarDouble(127.0, 1000.0, false).toLong())
Assert.assertEquals(3, write.writeVarDouble(128.0, 1000.0, true).toLong())
Assert.assertEquals(3, write.writeVarDouble(128.0, 1000.0, false).toLong())
Assert.assertEquals(4, write.writeVarDouble(8191.0, 1000.0, true).toLong())
Assert.assertEquals(4, write.writeVarDouble(8191.0, 1000.0, false).toLong())
Assert.assertEquals(4, write.writeVarDouble(8192.0, 1000.0, true).toLong())
Assert.assertEquals(4, write.writeVarDouble(8192.0, 1000.0, false).toLong())
Assert.assertEquals(4, write.writeVarDouble(16383.0, 1000.0, true).toLong())
Assert.assertEquals(4, write.writeVarDouble(16383.0, 1000.0, false).toLong())
Assert.assertEquals(4, write.writeVarDouble(16384.0, 1000.0, true).toLong())
Assert.assertEquals(4, write.writeVarDouble(16384.0, 1000.0, false).toLong())
Assert.assertEquals(4, write.writeVarDouble(32767.0, 1000.0, true).toLong())
Assert.assertEquals(4, write.writeVarDouble(32767.0, 1000.0, false).toLong())
Assert.assertEquals(3, write.writeVarDouble(-64.0, 1000.0, false).toLong())
Assert.assertEquals(9, write.writeVarDouble(-64.0, 1000.0, true).toLong())
Assert.assertEquals(3, write.writeVarDouble(-65.0, 1000.0, false).toLong())
Assert.assertEquals(9, write.writeVarDouble(-65.0, 1000.0, true).toLong())
Assert.assertEquals(4, write.writeVarDouble(-8192.0, 1000.0, false).toLong())
Assert.assertEquals(9, write.writeVarDouble(-8192.0, 1000.0, true).toLong())
write.writeDouble(1.23456)
val read = AeronInput(write.toBytes())
KryoAssert.assertDoubleEquals(read.readDouble(), 0.0)
KryoAssert.assertDoubleEquals(read.readDouble(), 63.0)
KryoAssert.assertDoubleEquals(read.readDouble(), 64.0)
KryoAssert.assertDoubleEquals(read.readDouble(), 127.0)
KryoAssert.assertDoubleEquals(read.readDouble(), 128.0)
KryoAssert.assertDoubleEquals(read.readDouble(), 8192.0)
KryoAssert.assertDoubleEquals(read.readDouble(), 16384.0)
KryoAssert.assertDoubleEquals(read.readDouble(), 32767.0)
KryoAssert.assertDoubleEquals(read.readDouble(), -63.0)
KryoAssert.assertDoubleEquals(read.readDouble(), -64.0)
KryoAssert.assertDoubleEquals(read.readDouble(), -127.0)
KryoAssert.assertDoubleEquals(read.readDouble(), -128.0)
KryoAssert.assertDoubleEquals(read.readDouble(), -8192.0)
KryoAssert.assertDoubleEquals(read.readDouble(), -16384.0)
KryoAssert.assertDoubleEquals(read.readDouble(), -32768.0)
KryoAssert.assertDoubleEquals(read.readVarDouble(1000.0, true), 0.0)
KryoAssert.assertDoubleEquals(read.readVarDouble(1000.0, false), 0.0)
KryoAssert.assertDoubleEquals(read.readVarDouble(1000.0, true), 63.0)
KryoAssert.assertDoubleEquals(read.readVarDouble(1000.0, false), 63.0)
KryoAssert.assertDoubleEquals(read.readVarDouble(1000.0, true), 64.0)
KryoAssert.assertDoubleEquals(read.readVarDouble(1000.0, false), 64.0)
KryoAssert.assertDoubleEquals(read.readVarDouble(1000.0, true), 127.0)
KryoAssert.assertDoubleEquals(read.readVarDouble(1000.0, false), 127.0)
KryoAssert.assertDoubleEquals(read.readVarDouble(1000.0, true), 128.0)
KryoAssert.assertDoubleEquals(read.readVarDouble(1000.0, false), 128.0)
KryoAssert.assertDoubleEquals(read.readVarDouble(1000.0, true), 8191.0)
KryoAssert.assertDoubleEquals(read.readVarDouble(1000.0, false), 8191.0)
KryoAssert.assertDoubleEquals(read.readVarDouble(1000.0, true), 8192.0)
KryoAssert.assertDoubleEquals(read.readVarDouble(1000.0, false), 8192.0)
KryoAssert.assertDoubleEquals(read.readVarDouble(1000.0, true), 16383.0)
KryoAssert.assertDoubleEquals(read.readVarDouble(1000.0, false), 16383.0)
KryoAssert.assertDoubleEquals(read.readVarDouble(1000.0, true), 16384.0)
KryoAssert.assertDoubleEquals(read.readVarDouble(1000.0, false), 16384.0)
KryoAssert.assertDoubleEquals(read.readVarDouble(1000.0, true), 32767.0)
KryoAssert.assertDoubleEquals(read.readVarDouble(1000.0, false), 32767.0)
KryoAssert.assertDoubleEquals(read.readVarDouble(1000.0, false), -64.0)
KryoAssert.assertDoubleEquals(read.readVarDouble(1000.0, true), -64.0)
KryoAssert.assertDoubleEquals(read.readVarDouble(1000.0, false), -65.0)
KryoAssert.assertDoubleEquals(read.readVarDouble(1000.0, true), -65.0)
KryoAssert.assertDoubleEquals(read.readVarDouble(1000.0, false), -8192.0)
KryoAssert.assertDoubleEquals(read.readVarDouble(1000.0, true), -8192.0)
KryoAssert.assertDoubleEquals(1.23456, read.readDouble())
}
@Test
@Throws(IOException::class)
fun testBooleans() {
runBooleanTest(AeronOutput(4096))
runBooleanTest(AeronOutput(32))
}
@Throws(IOException::class)
private fun runBooleanTest(write: Output) {
for (i in 0..99) {
write.writeBoolean(true)
write.writeBoolean(false)
}
val read = AeronInput(write.toBytes())
for (i in 0..99) {
Assert.assertTrue(read.readBoolean())
Assert.assertFalse(read.readBoolean())
}
}
@Test
@Throws(IOException::class)
fun testChars() {
runCharTest(AeronOutput(4096))
runCharTest(AeronOutput(32))
}
@Throws(IOException::class)
private fun runCharTest(write: Output) {
write.writeChar(0.toChar())
write.writeChar(63.toChar())
write.writeChar(64.toChar())
write.writeChar(127.toChar())
write.writeChar(128.toChar())
write.writeChar(8192.toChar())
write.writeChar(16384.toChar())
write.writeChar(32767.toChar())
write.writeChar(65535.toChar())
val read = AeronInput(write.toBytes())
Assert.assertEquals(0, read.readChar().toLong())
Assert.assertEquals(63, read.readChar().toLong())
Assert.assertEquals(64, read.readChar().toLong())
Assert.assertEquals(127, read.readChar().toLong())
Assert.assertEquals(128, read.readChar().toLong())
Assert.assertEquals(8192, read.readChar().toLong())
Assert.assertEquals(16384, read.readChar().toLong())
Assert.assertEquals(32767, read.readChar().toLong())
Assert.assertEquals(65535, read.readChar().toLong())
}
@Test
@Throws(Exception::class)
fun testInputWithOffset() {
val buf = ByteArray(30)
val `in` = AeronInput(buf, 10, 10)
Assert.assertEquals(10, `in`.available().toLong())
}
@Test
@Throws(Exception::class)
fun testSmallBuffers() {
val testOutput = AeronOutput(32)
testOutput.writeBytes(ByteArray(512))
testOutput.writeBytes(ByteArray(512))
testOutput.flush()
val input = AeronInput(testOutput.internalBuffer)
val toRead = ByteArray(512)
input.readBytes(toRead)
input.readBytes(toRead)
}
@Test
@Throws(Exception::class)
fun testVerySmallBuffers() {
val out1 = Output(4, -1)
val out2: Output = AeronOutput(4)
for (i in 0..15) {
out1.writeVarInt(92, false)
}
for (i in 0..15) {
out2.writeVarInt(92, false)
}
Assert.assertArrayEquals(out1.toBytes(), out2.toBytes())
}
@Test
@Throws(Exception::class)
fun testZeroLengthOutputs() {
val output = Output(0, 10000)
kryo!!.writeClassAndObject(output, "Test string")
val byteBufferOutput = AeronOutput(0)
kryo!!.writeClassAndObject(byteBufferOutput, "Test string")
}
@Test
@Throws(Exception::class)
fun testFlushRoundTrip() {
val kryo = Kryo()
val s1 = "12345"
val output = AeronOutput(32)
kryo.writeClass(output, s1.javaClass)
kryo.writeObject(output, s1)
val input = AeronInput(output.internalBuffer)
val r = kryo.readClass(input)
val s2 = kryo.readObject(input, r.type) as String
Assert.assertEquals(s1, s2)
}
@Test(expected = IllegalArgumentException::class)
fun testSetOutputBufferMinusOne() {
val bufferSize = 2
val output = AeronOutput(-1)
Assert.assertNotNull(output)
output.buffer = ByteArray(bufferSize)
}
@Test
fun testNewOutputMaxBufferSizeIsMinusOne() {
val bufferSize = 2
val maxBufferSize = -1
val output = Output(bufferSize, maxBufferSize)
Assert.assertNotNull(output)
// This test should pass as long as no exception thrown
}
@Test
fun testSetOutputMaxBufferSizeIsMinusOne() {
val bufferSize = 2
val maxBufferSize = -1
val output: Output = AeronOutput(bufferSize)
Assert.assertNotNull(output)
output.setBuffer(ByteArray(bufferSize), maxBufferSize)
// This test should pass as long as no exception thrown
}
}