192 lines
4.7 KiB
Java
192 lines
4.7 KiB
Java
package net.packet;
|
|
|
|
import io.netty.buffer.ByteBuf;
|
|
import io.netty.buffer.Unpooled;
|
|
import org.junit.jupiter.api.BeforeEach;
|
|
import org.junit.jupiter.api.Test;
|
|
|
|
import java.awt.*;
|
|
|
|
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
|
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
|
|
class ByteBufInPacketTest {
|
|
private ByteBuf byteBuf;
|
|
private InPacket inPacket;
|
|
|
|
@BeforeEach
|
|
void reset() {
|
|
this.byteBuf = Unpooled.buffer();
|
|
this.inPacket = new ByteBufInPacket(byteBuf);
|
|
}
|
|
|
|
private void givenWrittenBytes(int... bytes) {
|
|
for (int b : bytes) {
|
|
byteBuf.writeByte(b);
|
|
}
|
|
}
|
|
|
|
@Test
|
|
void readByte() {
|
|
final byte writtenByte = 123;
|
|
byteBuf.writeByte(writtenByte);
|
|
|
|
byte readByte = inPacket.readByte();
|
|
|
|
assertEquals(writtenByte, readByte);
|
|
}
|
|
|
|
@Test
|
|
void readShort() {
|
|
final short writtenShort = 12_345;
|
|
byteBuf.writeShortLE(writtenShort);
|
|
|
|
short readShort = inPacket.readShort();
|
|
|
|
assertEquals(writtenShort, readShort);
|
|
}
|
|
|
|
@Test
|
|
void readInt() {
|
|
final int writtenInt = 1_234_567_890;
|
|
byteBuf.writeIntLE(writtenInt);
|
|
|
|
int readInt = inPacket.readInt();
|
|
|
|
assertEquals(writtenInt, readInt);
|
|
}
|
|
|
|
@Test
|
|
void readLong() {
|
|
final long writtenLong = 9_223_372_036_854_775_807L;
|
|
byteBuf.writeLongLE(writtenLong);
|
|
|
|
long readLong = inPacket.readLong();
|
|
|
|
assertEquals(writtenLong, readLong);
|
|
}
|
|
|
|
@Test
|
|
void readPoint() {
|
|
final Point writtenPoint = new Point(111, 222);
|
|
byteBuf.writeShortLE((short) writtenPoint.getX());
|
|
byteBuf.writeShortLE((short) writtenPoint.getY());
|
|
|
|
Point readPoint = inPacket.readPoint();
|
|
|
|
assertEquals(writtenPoint, readPoint);
|
|
}
|
|
|
|
@Test
|
|
void readString() {
|
|
final String writtenString = "You have gained experience (+3200)";
|
|
byteBuf.writeShortLE(writtenString.length());
|
|
byte[] writtenStringBytes = writtenString.getBytes(Packet.STRING_CHARSET);
|
|
byteBuf.writeBytes(writtenStringBytes);
|
|
|
|
String readString = inPacket.readString();
|
|
|
|
assertEquals(writtenString, readString);
|
|
}
|
|
|
|
@Test
|
|
void readBytes() {
|
|
givenWrittenBytes(10, 11, 12, 13, 14, 15);
|
|
|
|
byte[] byteBatch1 = inPacket.readBytes(1);
|
|
assertEquals(1, byteBatch1.length);
|
|
assertEquals(10, byteBatch1[0]);
|
|
|
|
byte[] byteBatch2 = inPacket.readBytes(2);
|
|
assertEquals(2, byteBatch2.length);
|
|
assertEquals(11, byteBatch2[0]);
|
|
assertEquals(12, byteBatch2[1]);
|
|
|
|
byte[] byteBatch3 = inPacket.readBytes(3);
|
|
assertEquals(3, byteBatch3.length);
|
|
assertEquals(13, byteBatch3[0]);
|
|
assertEquals(14, byteBatch3[1]);
|
|
assertEquals(15, byteBatch3[2]);
|
|
}
|
|
|
|
@Test
|
|
void skip() {
|
|
givenWrittenBytes(20, 21, 22, 23, 24, 25);
|
|
|
|
byte firstByte = inPacket.readByte();
|
|
assertEquals(20, firstByte);
|
|
|
|
inPacket.skip(3);
|
|
|
|
byte fifthByte = inPacket.readByte();
|
|
assertEquals(24, fifthByte);
|
|
}
|
|
|
|
@Test
|
|
void available() {
|
|
givenWrittenBytes(30, 31, 32, 33, 34, 35);
|
|
|
|
assertEquals(6, inPacket.available());
|
|
|
|
inPacket.readByte();
|
|
assertEquals(5, inPacket.available());
|
|
|
|
inPacket.readInt();
|
|
assertEquals(1, inPacket.available());
|
|
}
|
|
|
|
@Test
|
|
void seek() {
|
|
givenWrittenBytes(40, 41, 42, 43, 44, 45);
|
|
|
|
inPacket.seek(2);
|
|
assertEquals(4, inPacket.available());
|
|
byte byteAtSeek = inPacket.readByte();
|
|
assertEquals(42, byteAtSeek);
|
|
|
|
inPacket.seek(0);
|
|
byte byteAtReset = inPacket.readByte();
|
|
assertEquals(40, byteAtReset);
|
|
}
|
|
|
|
@Test
|
|
void getPosition() {
|
|
givenWrittenBytes(50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60);
|
|
|
|
assertEquals(0, inPacket.getPosition());
|
|
|
|
inPacket.readByte();
|
|
assertEquals(1, inPacket.getPosition());
|
|
|
|
inPacket.readShort();
|
|
assertEquals(3, inPacket.getPosition());
|
|
|
|
inPacket.readInt();
|
|
assertEquals(7, inPacket.getPosition());
|
|
|
|
inPacket.seek(5);
|
|
assertEquals(5, inPacket.getPosition());
|
|
}
|
|
|
|
@Test
|
|
void getBytes() {
|
|
givenWrittenBytes(20, 19, 21, 18, 22);
|
|
|
|
byte[] bytes = inPacket.getBytes();
|
|
|
|
assertArrayEquals(new byte[]{20, 19, 21, 18, 22}, bytes);
|
|
}
|
|
|
|
@Test
|
|
void whenGetBytes_shouldBeRepeatable() {
|
|
givenWrittenBytes(1, 2, 3, 4, 5);
|
|
|
|
byte[] bytes = inPacket.getBytes();
|
|
assertEquals(5, bytes.length);
|
|
|
|
byte[] sameBytes = inPacket.getBytes();
|
|
assertEquals(5, sameBytes.length);
|
|
|
|
assertArrayEquals(bytes, sameBytes);
|
|
}
|
|
} |