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/XorEncoderTest.kt

41 lines
1.2 KiB

package org.openrs2.protocol.js5
import io.netty.buffer.ByteBuf
import io.netty.buffer.PooledByteBufAllocator
import io.netty.channel.embedded.EmbeddedChannel
import org.openrs2.buffer.copiedBuffer
import org.openrs2.buffer.use
import org.openrs2.protocol.js5.downstream.XorEncoder
import kotlin.test.Test
import kotlin.test.assertEquals
class XorEncoderTest {
@Test
fun testEncode() {
testEncode(0, "OpenRS2", false)
testEncode(0, "OpenRS2", true)
testEncode(32, "oPENrs\u0012", false)
testEncode(32, "oPENrs\u0012", true)
}
private fun testEncode(key: Int, expected: String, direct: Boolean) {
val encoder = XorEncoder()
encoder.key = key
val channel = EmbeddedChannel(encoder)
if (direct) {
PooledByteBufAllocator.DEFAULT.ioBuffer().use { buf ->
buf.writeCharSequence("OpenRS2", Charsets.UTF_8)
channel.writeOutbound(buf.retain())
}
} else {
channel.writeOutbound(copiedBuffer("OpenRS2"))
}
channel.readOutbound<ByteBuf>().use { actual ->
copiedBuffer(expected).use { expected ->
assertEquals(expected, actual)
}
}
}
}