Archived
0

исправлена сериализация пакета PlayerAbilities (+тест)

This commit is contained in:
2018-09-08 14:26:05 +03:00
parent 09c7626c2d
commit 27c40e86e6
4 changed files with 175 additions and 9 deletions

View File

@@ -0,0 +1,73 @@
package mc.core.network.proto_1_12_2.packets;
import mc.core.network.proto_1_12_2.NetInputStream_p340;
import java.io.ByteArrayInputStream;
import java.io.EOFException;
public class ByteArrayInputNetStream extends NetInputStream_p340 {
private ByteArrayInputStream bais;
public ByteArrayInputNetStream(byte[] buff) {
bais = new ByteArrayInputStream(buff);
}
@Override
public boolean readBoolean() {
return false;
}
@Override
public byte readByte() {
return (byte) bais.read();
}
@Override
public void readBytes(byte[] buffer) {
}
@Override
public int readUnsignedByte() {
return 0;
}
@Override
public int readUnsignedShort() {
return 0;
}
@Override
public short readShort() {
return 0;
}
@Override
public int readInt() {
int ch1 = bais.read();
int ch2 = bais.read();
int ch3 = bais.read();
int ch4 = bais.read();
if ((ch1 | ch2 | ch3 | ch4) < 0) return 0;
return ((ch1 << 24) + (ch2 << 16) + (ch3 << 8) + (ch4 << 0));
}
@Override
public long readLong() {
return 0;
}
@Override
public float readFloat() {
return Float.intBitsToFloat(readInt());
}
@Override
public double readDouble() {
return 0;
}
@Override
public void skipBytes(int count) {
}
}

View File

@@ -0,0 +1,49 @@
package mc.core.network.proto_1_12_2.packets;
import mc.core.network.proto_1_12_2.ByteArrayOutputNetStream;
import org.junit.Test;
import java.io.ByteArrayInputStream;
import java.util.Random;
import static org.junit.Assert.*;
public class TestByteArrayInputNetStream {
private Random rnd = new Random();
@Test
public void testReadByte() {
final byte b0 = (byte) rnd.nextInt();
ByteArrayOutputNetStream netStream = new ByteArrayOutputNetStream();
netStream.writeByte(b0);
byte[] buffer = netStream.toByteArray();
ByteArrayInputNetStream netInputStream = new ByteArrayInputNetStream(buffer);
byte b1 = netInputStream.readByte();
assertEquals(b0, b1);
}
@Test
public void testReadInt() {
final int i0 = rnd.nextInt();
ByteArrayOutputNetStream netStream = new ByteArrayOutputNetStream();
netStream.writeInt(i0);
byte[] buffer = netStream.toByteArray();
ByteArrayInputNetStream netInputStream = new ByteArrayInputNetStream(buffer);
int i1 = netInputStream.readInt();
assertEquals(i0, i1);
}
@Test
public void testReadFloat() {
final float f0 = rnd.nextFloat();
ByteArrayOutputNetStream netStream = new ByteArrayOutputNetStream();
netStream.writeFloat(f0);
byte[] buffer = netStream.toByteArray();
ByteArrayInputNetStream netInputStream = new ByteArrayInputNetStream(buffer);
float f1 = netInputStream.readFloat();
assertEquals(f0, f1, 0.0f);
}
}

View File

@@ -0,0 +1,40 @@
package mc.core.network.proto_1_12_2.packets;
import mc.core.network.proto_1_12_2.ByteArrayOutputNetStream;
import org.junit.Before;
import org.junit.Test;
import java.util.Random;
import static org.junit.Assert.assertEquals;
public class TestPlayerAbilitiesPacket {
private Random rnd = new Random();
private PlayerAbilitiesPacket packet;
@Before
public void before() {
packet = new PlayerAbilitiesPacket();
packet.setGodMode(rnd.nextBoolean());
packet.setFlying(rnd.nextBoolean());
packet.setCanFly(rnd.nextBoolean());
packet.setInstantDestroyBlocks(rnd.nextBoolean());
packet.setFlyingSpeed(rnd.nextFloat());
}
@Test
public void test() {
ByteArrayOutputNetStream netOutputStream = new ByteArrayOutputNetStream();
packet.writeSelf(netOutputStream);
ByteArrayInputNetStream netInputStream = new ByteArrayInputNetStream(netOutputStream.toByteArray());
PlayerAbilitiesPacket outPkt = new PlayerAbilitiesPacket();
outPkt.readSelf(netInputStream);
assertEquals("god mode", packet.isGodMode(), outPkt.isGodMode());
assertEquals("flying", packet.isFlying(), outPkt.isFlying());
assertEquals("can fly", packet.isCanFly(), outPkt.isCanFly());
assertEquals("instant destroy block", packet.isInstantDestroyBlocks(), outPkt.isInstantDestroyBlocks());
assertEquals("flying speed", packet.getFlyingSpeed(), outPkt.getFlyingSpeed(), 0.0f);
}
}