Open-source multiplayer game server compatible with the RuneScape client https://www.openrs2.org/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
openrs2/protocol/src/test/kotlin/org/openrs2/protocol/js5/Js5RequestDecoderTest.kt

48 lines
1.7 KiB

package org.openrs2.protocol.js5
import io.netty.buffer.Unpooled
import io.netty.channel.embedded.EmbeddedChannel
import io.netty.handler.codec.DecoderException
import org.openrs2.buffer.wrappedBuffer
import org.openrs2.protocol.js5.upstream.Js5Request
import org.openrs2.protocol.js5.upstream.Js5RequestDecoder
import kotlin.test.Test
import kotlin.test.assertEquals
import kotlin.test.assertFailsWith
class Js5RequestDecoderTest {
@Test
fun testDecode() {
testDecode(byteArrayOf(0, 2, 0, 3), Js5Request.Group(true, 2, 3))
testDecode(byteArrayOf(1, 2, 0, 3), Js5Request.Group(false, 2, 3))
testDecode(byteArrayOf(4, 0x55, 0, 0), Js5Request.Rekey(0x55))
testDecode(byteArrayOf(2, 0, 0, 0), Js5Request.LoggedIn)
testDecode(byteArrayOf(3, 0, 0, 0), Js5Request.LoggedOut)
testDecode(byteArrayOf(6, 0, 0, 3), Js5Request.Connected)
testDecode(byteArrayOf(7, 0, 0, 0), Js5Request.Disconnect)
}
@Test
fun testFragmented() {
val channel = EmbeddedChannel(Js5RequestDecoder())
channel.writeInbound(wrappedBuffer(0, 2))
channel.writeInbound(wrappedBuffer(0, 3))
assertEquals(Js5Request.Group(true, 2, 3), channel.readInbound())
}
@Test
fun testUnknownOpcode() {
val channel = EmbeddedChannel(Js5RequestDecoder())
assertFailsWith<DecoderException> {
channel.writeInbound(wrappedBuffer(8, 0, 0, 0))
}
}
private fun testDecode(bytes: ByteArray, expected: Js5Request) {
val channel = EmbeddedChannel(Js5RequestDecoder())
channel.writeInbound(Unpooled.wrappedBuffer(bytes))
assertEquals(expected, channel.readInbound())
}
}