Files
sweetgum-server/src/test/java/net/packet/ByteBufInPacketTest.java
2021-06-21 22:03:20 +02:00

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);
}
}