From 7c9764f7639945f3e5c84658724ee8fab9e99a6a Mon Sep 17 00:00:00 2001 From: DmitriyMX Date: Sun, 30 Dec 2018 14:26:44 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BF=D0=B0=D1=80=D0=B0=D0=BC=D0=B5=D1=82?= =?UTF-8?q?=D0=B5=D1=80=D0=B8=D0=B7=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=20?= =?UTF-8?q?ChunkDataPacketTest?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../packets/ChunkDataPacketTest.java | 158 ++++++++++-------- .../proto_1_12_2/packets/DumbChunkData.java | 8 + 2 files changed, 95 insertions(+), 71 deletions(-) diff --git a/proto_1.12.2/src/test/java/mc/core/network/proto_1_12_2/packets/ChunkDataPacketTest.java b/proto_1.12.2/src/test/java/mc/core/network/proto_1_12_2/packets/ChunkDataPacketTest.java index aea55bc..f275765 100644 --- a/proto_1.12.2/src/test/java/mc/core/network/proto_1_12_2/packets/ChunkDataPacketTest.java +++ b/proto_1.12.2/src/test/java/mc/core/network/proto_1_12_2/packets/ChunkDataPacketTest.java @@ -1,6 +1,7 @@ package mc.core.network.proto_1_12_2.packets; import com.flowpowered.nbt.*; +import javafx.util.Pair; import mc.core.network.proto_1_12_2.ByteArrayOutputNetStream; import mc.core.network.proto_1_12_2.packets.DumbChunkData.DumbChunkSection; import mc.core.world.Biome; @@ -9,67 +10,28 @@ import mc.core.world.chunk.Chunk; import mc.core.world.chunk.ChunkSection; import org.apache.commons.io.IOUtils; import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; import java.io.IOException; import java.io.InputStream; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Stream; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.Matchers.anyInt; import static org.mockito.Mockito.*; class ChunkDataPacketTest { - private static DumbChunkData expectedDumbChunkData; - private static DumbChunkData actualDumbChunkData; + private static List> listOfParams; - private static void setupExpectedData() throws IOException { + private static DumbChunkData createExpectedData() throws IOException { InputStream inputStream = ChunkDataPacketTest.class.getResourceAsStream("ChunkDataPacket.bin"); assertNotNull(inputStream); - expectedDumbChunkData = DumbChunkData.ReadFromNetInputStream(IOUtils.toByteArray(inputStream)); - } - - private static Chunk createMockChunk() { - final ChunkSection chunkSection0 = createChunkSection(0); - final ChunkSection chunkSection1 = createChunkSection(1); - - final Chunk chunk = mock(Chunk.class); - when(chunk.getX()).thenReturn(0); - when(chunk.getZ()).thenReturn(0); - when(chunk.getBiome(anyInt(), anyInt())).thenReturn(Biome.PLAINS); - when(chunk.getChunkSection(0)).thenReturn(chunkSection0); - when(chunk.getChunkSection(1)).thenReturn(chunkSection1); - - return chunk; - } - - private static void verifyMock(Chunk chunk) { - verify(chunk, atLeast(1)).getX(); - verify(chunk, atLeast(1)).getZ(); - verify(chunk, times(256)).getBiome(anyInt(), anyInt()); - verify(chunk, atLeast(2)).getChunkSection(anyInt()); - } - - private static void setupActualData() { - Chunk chunk = createMockChunk(); - - ChunkDataPacket packet = new ChunkDataPacket(); - packet.setX(chunk.getX()); - packet.setZ(chunk.getZ()); - packet.setChunk(chunk); - packet.setInitChunk(true); - - ByteArrayOutputNetStream netStream = new ByteArrayOutputNetStream(); - packet.writeSelf(netStream); - - verifyMock(chunk); - - actualDumbChunkData = DumbChunkData.ReadFromNetInputStream(netStream.toByteArray()); - } - - @BeforeAll - static void beforeClassTest() throws IOException { - setupExpectedData(); - setupActualData(); + return DumbChunkData.ReadFromNetInputStream(IOUtils.toByteArray(inputStream)); } private static Block createChestBlock(BlockType type, int x, int y, int z, int height) { @@ -153,42 +115,96 @@ class ChunkDataPacketTest { return chunkSection; } - @Test - void testGeneral() { - assertEquals(expectedDumbChunkData.getX(), actualDumbChunkData.getX()); - assertEquals(expectedDumbChunkData.getZ(), actualDumbChunkData.getZ()); - assertEquals(expectedDumbChunkData.isInitChunk(), actualDumbChunkData.isInitChunk()); - assertEquals(expectedDumbChunkData.getBitMask(), actualDumbChunkData.getBitMask()); - assertArrayEquals(expectedDumbChunkData.getBiomes(), actualDumbChunkData.getBiomes()); + private static Chunk createMockChunk() { + final ChunkSection chunkSection0 = createChunkSection(0); + final ChunkSection chunkSection1 = createChunkSection(1); + + final Chunk chunk = mock(Chunk.class); + when(chunk.getX()).thenReturn(0); + when(chunk.getZ()).thenReturn(0); + when(chunk.getBiome(anyInt(), anyInt())).thenReturn(Biome.PLAINS); + when(chunk.getChunkSection(0)).thenReturn(chunkSection0); + when(chunk.getChunkSection(1)).thenReturn(chunkSection1); + + return chunk; } - @Test - void testNBT() { - assertEquals(expectedDumbChunkData.getNumberNBT(), actualDumbChunkData.getNumberNBT()); - assertEquals(expectedDumbChunkData.getNbt().size(), actualDumbChunkData.getNbt().size()); + private static void verifyMock(Chunk chunk) { + verify(chunk, atLeast(1)).getX(); + verify(chunk, atLeast(1)).getZ(); + verify(chunk, times(256)).getBiome(anyInt(), anyInt()); + verify(chunk, atLeast(2)).getChunkSection(anyInt()); + } - for (Tag tag : actualDumbChunkData.getNbt()) { - assertTrue(expectedDumbChunkData.getNbt().contains(tag)); + private static DumbChunkData createActualData() { + Chunk chunk = createMockChunk(); + + ChunkDataPacket packet = new ChunkDataPacket(); + packet.setX(chunk.getX()); + packet.setZ(chunk.getZ()); + packet.setChunk(chunk); + packet.setInitChunk(true); + + ByteArrayOutputNetStream netStream = new ByteArrayOutputNetStream(); + packet.writeSelf(netStream); + + verifyMock(chunk); + + return DumbChunkData.ReadFromNetInputStream(netStream.toByteArray()); + } + + @BeforeAll + static void beforeClassTest() throws IOException { + listOfParams = new ArrayList<>(); + listOfParams.add(new Pair<>(createExpectedData(), createActualData())); + } + + private static Stream streamArguments() { + return listOfParams.stream().map(pair -> Arguments.of(pair.getKey(), pair.getValue())); + } + + @DisplayName("testGeneral") + @ParameterizedTest(name = "[{index}] => {0}") + @MethodSource("streamArguments") + void testGeneral(DumbChunkData expected, DumbChunkData actual) { + assertEquals(expected.getX(), actual.getX()); + assertEquals(expected.getZ(), actual.getZ()); + assertEquals(expected.isInitChunk(), actual.isInitChunk()); + assertEquals(expected.getBitMask(), actual.getBitMask()); + assertArrayEquals(expected.getBiomes(), actual.getBiomes()); + } + + @DisplayName("testNBT") + @ParameterizedTest(name = "[{index}] => {0}") + @MethodSource("streamArguments") + void testNBT(DumbChunkData expected, DumbChunkData actual) { + assertEquals(expected.getNumberNBT(), actual.getNumberNBT()); + assertEquals(expected.getNbt().size(), actual.getNbt().size()); + + for (Tag tag : actual.getNbt()) { + assertTrue(expected.getNbt().contains(tag)); } } - @Test - void testData() { - assertEquals(expectedDumbChunkData.getData().length, actualDumbChunkData.getData().length); + @DisplayName("testData (disabled light test)") + @ParameterizedTest(name = "[{index}] => {0}") + @MethodSource("streamArguments") + void testData(DumbChunkData expected, DumbChunkData actual) { + assertEquals(expected.getData().length, actual.getData().length); - for (int numberSection = 0; numberSection < expectedDumbChunkData.getData().length; numberSection++) { - final DumbChunkSection expectedDumbChunkSection = expectedDumbChunkData.getData()[numberSection]; - final DumbChunkSection actualDumbChunkSection = actualDumbChunkData.getData()[numberSection]; + for (int numberSection = 0; numberSection < expected.getData().length; numberSection++) { + final DumbChunkSection expectedSection = expected.getData()[numberSection]; + final DumbChunkSection actualSection = actual.getData()[numberSection]; // Palette - testPalette(expectedDumbChunkSection, actualDumbChunkSection, numberSection); + testPalette(expectedSection, actualSection, numberSection); // Data - testDataBlock(expectedDumbChunkSection, actualDumbChunkSection, numberSection); + testDataBlock(expectedSection, actualSection, numberSection); // Block and Sky light // DISABLE // - //testLight(expectedDumbChunkSection, actualDumbChunkSection, numberSection); + //testLight(expectedSection, actualSection, numberSection); } } diff --git a/proto_1.12.2/src/test/java/mc/core/network/proto_1_12_2/packets/DumbChunkData.java b/proto_1.12.2/src/test/java/mc/core/network/proto_1_12_2/packets/DumbChunkData.java index 4c087c0..4649761 100644 --- a/proto_1.12.2/src/test/java/mc/core/network/proto_1_12_2/packets/DumbChunkData.java +++ b/proto_1.12.2/src/test/java/mc/core/network/proto_1_12_2/packets/DumbChunkData.java @@ -111,6 +111,14 @@ class DumbChunkData { return dumbChunkData; } + @Override + public String toString() { + return "DumbChunkData{" + + "x=" + x + + ", z=" + z + + '}'; + } + @NoArgsConstructor(access = AccessLevel.PRIVATE) @Getter static class DumbChunkSection {