2017-08-21 19:26:41 -04:00
|
|
|
// Copyright (c) 2017 PSForever
|
|
|
|
|
package control
|
|
|
|
|
|
|
|
|
|
import org.specs2.mutable._
|
|
|
|
|
import net.psforever.packet.control._
|
|
|
|
|
import org.specs2.specification.core.Fragment
|
|
|
|
|
import scodec.bits._
|
|
|
|
|
|
|
|
|
|
class MultiPacketExTest extends Specification {
|
|
|
|
|
val strings = Vector(
|
|
|
|
|
hex"00",
|
|
|
|
|
hex"01 41",
|
|
|
|
|
hex"01 41" ++ hex"02 4142",
|
|
|
|
|
hex"fe" ++ ByteVector.fill(0xfe)(0x41),
|
|
|
|
|
hex"ffff00" ++ ByteVector.fill(0xff)(0x41),
|
|
|
|
|
hex"ff0001" ++ ByteVector.fill(0x100)(0x41),
|
|
|
|
|
hex"ff ffff ffff 0000" ++ ByteVector.fill(0x0000ffff)(0x41),
|
|
|
|
|
hex"ff ffff 0000 0100" ++ ByteVector.fill(0x00010000)(0x41)
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
val packets = Vector(
|
|
|
|
|
MultiPacketEx(Vector(ByteVector.empty)),
|
|
|
|
|
MultiPacketEx(Vector(hex"41")),
|
|
|
|
|
MultiPacketEx(Vector(hex"41", hex"4142")),
|
|
|
|
|
MultiPacketEx(Vector(ByteVector.fill(0xfe)(0x41))),
|
|
|
|
|
MultiPacketEx(Vector(ByteVector.fill(0xff)(0x41))),
|
|
|
|
|
MultiPacketEx(Vector(ByteVector.fill(0x100)(0x41))),
|
|
|
|
|
MultiPacketEx(Vector(ByteVector.fill(0x0000ffff)(0x41))),
|
|
|
|
|
MultiPacketEx(Vector(ByteVector.fill(0x00010000)(0x41)))
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
"decode" in {
|
|
|
|
|
Fragment.foreach(strings.indices) { i =>
|
2020-07-14 05:54:05 +02:00
|
|
|
"test " + i ! { MultiPacketEx.decode(strings { i }.bits).require.value mustEqual packets { i } }
|
2017-08-21 19:26:41 -04:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
"encode" in {
|
|
|
|
|
Fragment.foreach(packets.indices) { i =>
|
2020-07-14 05:54:05 +02:00
|
|
|
"test " + i ! { MultiPacketEx.encode(packets { i }).require.toByteVector mustEqual strings { i } }
|
2017-08-21 19:26:41 -04:00
|
|
|
}
|
|
|
|
|
}
|
2017-12-05 00:37:24 -05:00
|
|
|
|
|
|
|
|
"sizeCodec description" in {
|
|
|
|
|
MultiPacketEx.sizeCodec.toString mustEqual "variable-bit unsigned integer"
|
|
|
|
|
}
|
2017-08-21 19:26:41 -04:00
|
|
|
}
|