Archived
0

Hello, Mockito!

This commit is contained in:
2018-08-26 00:24:59 +03:00
parent adbb006ec7
commit bf8d820848
6 changed files with 79 additions and 236 deletions

View File

@@ -1,138 +0,0 @@
package mc.core.network.proto_1_12_2.packets;
import mc.core.EntityLocation;
import mc.core.world.Biome;
import mc.core.world.World;
import mc.core.world.WorldType;
import mc.core.world.block.Block;
import mc.core.world.block.BlockFactory;
import mc.core.world.block.BlockType;
import mc.core.world.chunk.Chunk;
import mc.core.world.chunk.ChunkSection;
public class DummyWorld implements World {
private class DummyChunkSection implements ChunkSection {
@Override
public int getSkyLight(int x, int y, int z) {
if (y <= 3) return 0;
else return 15;
}
@Override
public void setSkyLight(int x, int y, int z, int lightLevel) {
}
@Override
public int getAddition(int x, int y, int z) {
return 0;
}
@Override
public void setAddition(int x, int y, int z, int value) {
}
@Override
public Biome getBiome(int localX, int localZ) {
return Biome.PLAINS;
}
@Override
public int getX() {
return 0;
}
@Override
public int getY() {
return 0;
}
@Override
public int getZ() {
return 0;
}
@Override
public void setBlock(Block block) {
}
@Override
public Block getBlock(int x, int y, int z) {
BlockFactory blockFactory = new BlockFactory();
if (y == 0) return blockFactory.create(BlockType.BEDROCK, x, y, z, getWorld());
else if (y >= 1 && y <= 2) return blockFactory.create(BlockType.DIRT, x, y, z, getWorld());
else if (y == 3) return blockFactory.create(BlockType.GRASS, x, y, z, getWorld());
else return blockFactory.create(BlockType.AIR, x, y, z, getWorld());
}
@Override
public World getWorld() {
return DummyWorld.this;
}
}
private class DummyChunk implements Chunk {
@Override
public World getWorld() {
return DummyWorld.this;
}
@Override
public void setWorld(World world) {
}
@Override
public ChunkSection getChunkSection(int height) {
if (height < 1) return new DummyChunkSection();
else return null;
}
@Override
public void setChunkSection(int height, ChunkSection chunkSection) {
}
@Override
public Biome getBiome(int localX, int localZ) {
return Biome.PLAINS;
}
@Override
public void setBiome(int localX, int localZ, Biome biome) {
}
@Override
public int getX() {
return 0;
}
@Override
public int getZ() {
return 0;
}
}
private final Chunk chunk = new DummyChunk();
@Override
public WorldType getWorldType() {
return WorldType.FLAT;
}
@Override
public EntityLocation getSpawn() {
return null;
}
@Override
public void setSpawn(EntityLocation location) {
}
@Override
public Chunk getChunk(int x, int z) {
return chunk;
}
@Override
public void setChunk(int x, int z, Chunk chunk) {
}
}

View File

@@ -2,15 +2,27 @@ package mc.core.network.proto_1_12_2.packets;
import com.google.common.io.ByteStreams;
import mc.core.network.proto_1_12_2.ByteArrayOutputNetStream;
import mc.core.world.Biome;
import mc.core.world.World;
import mc.core.world.WorldType;
import mc.core.world.block.BlockFactory;
import mc.core.world.block.BlockType;
import mc.core.world.chunk.Chunk;
import mc.core.world.chunk.ChunkSection;
import org.junit.Assert;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import java.io.*;
import static org.mockito.Matchers.anyInt;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
public class TestChunkdataPacket {
private static byte[] expectedPacketData;
private World world;
@BeforeClass
public static void beforeClassTest() throws IOException {
@@ -18,8 +30,48 @@ public class TestChunkdataPacket {
expectedPacketData = ByteStreams.toByteArray(inputStream);
}
private World createDummyWorld() {
return new DummyWorld();
@Before
public void prepareWorld() {
final ChunkSection chunkSection = mock(ChunkSection.class);
when(chunkSection.getSkyLight(anyInt(), anyInt(), anyInt())).thenAnswer(invocation -> {
int y = (int)invocation.getArguments()[1];
if (y <= 3) return 0;
else return 15;
});
when(chunkSection.getBiome(anyInt(), anyInt())).thenReturn(Biome.PLAINS);
when(chunkSection.getBlock(anyInt(), anyInt(), anyInt())).thenAnswer(invocation -> {
Object[] args = invocation.getArguments();
int x = (int) args[0];
int y = (int) args[1];
int z = (int) args[2];
BlockFactory blockFactory = new BlockFactory();
if (y == 0) return blockFactory.create(BlockType.BEDROCK, x, y, z, null);
else if (y >= 1 && y <= 2) return blockFactory.create(BlockType.DIRT, x, y, z, null);
else if (y == 3) return blockFactory.create(BlockType.GRASS, x, y, z, null);
else return blockFactory.create(BlockType.AIR, x, y, z, null);
});
world = mock(World.class);
when(world.getWorldType()).thenReturn(WorldType.FLAT);
when(world.getChunk(anyInt(), anyInt())).thenAnswer(invocation -> {
Object[] args = invocation.getArguments();
Chunk chunk = mock(Chunk.class);
when(chunk.getX()).thenReturn((int) args[0]);
when(chunk.getZ()).thenReturn((int) args[1]);
when(chunk.getBiome(anyInt(), anyInt())).thenReturn(Biome.PLAINS);
when(chunk.getChunkSection(anyInt())).thenAnswer(invocation1 -> {
int height = (int)invocation1.getArguments()[0];
if (height < 1) return chunkSection;
else return null;
});
return chunk;
});
}
@Test
@@ -27,7 +79,7 @@ public class TestChunkdataPacket {
ChunkDataPacket packet = new ChunkDataPacket();
packet.setX(0);
packet.setZ(0);
packet.setChunk(createDummyWorld().getChunk(0, 0));
packet.setChunk(world.getChunk(0, 0));
packet.setInitChunk(true);
ByteArrayOutputNetStream netStream = new ByteArrayOutputNetStream();