From bd7c60725cdd0ad94f4854b67adf89dda5e4af57 Mon Sep 17 00:00:00 2001 From: Timothée Floure Date: Mon, 25 Apr 2016 12:43:52 +0200 Subject: Week 7 + basic tests --- test/ch/epfl/xblast/painter/BoardPainterTest.java | 57 ++++++++++++++++++++ .../epfl/xblast/painter/ExplosionPainterTest.java | 37 +++++++++++++ test/ch/epfl/xblast/painter/PlayerPainterTest.java | 61 ++++++++++++++++++++++ 3 files changed, 155 insertions(+) create mode 100644 test/ch/epfl/xblast/painter/BoardPainterTest.java create mode 100644 test/ch/epfl/xblast/painter/ExplosionPainterTest.java create mode 100644 test/ch/epfl/xblast/painter/PlayerPainterTest.java (limited to 'test') diff --git a/test/ch/epfl/xblast/painter/BoardPainterTest.java b/test/ch/epfl/xblast/painter/BoardPainterTest.java new file mode 100644 index 0000000..9ac8ad4 --- /dev/null +++ b/test/ch/epfl/xblast/painter/BoardPainterTest.java @@ -0,0 +1,57 @@ +package ch.epfl.xblast.painter; + +import ch.epfl.xblast.*; +import ch.epfl.xblast.server.*; +import ch.epfl.xblast.server.painter.*; + +import java.util.Arrays; +import java.util.HashMap; + +import org.junit.Assert; +import org.junit.Test; + +/** + * @author Timothée Floure (257420) + */ +public class BoardPainterTest { + + public static Board createBoard() { + Block __ = Block.FREE; + Block XX = Block.INDESTRUCTIBLE_WALL; + Block xx = Block.DESTRUCTIBLE_WALL; + return Board.ofQuadrantNWBlocksWalled(Arrays.asList(Arrays.asList(__, __, __, __, __, xx, __), + Arrays.asList(__, XX, xx, XX, xx, XX, xx), Arrays.asList(__, xx, __, __, __, xx, __), + Arrays.asList(xx, XX, __, XX, XX, XX, XX), Arrays.asList(__, xx, __, xx, __, __, __), + Arrays.asList(xx, XX, xx, XX, xx, XX, __))); + } + + @Test + public void byteForCellTest() { + // Create the blocks map + HashMap blocksMap = new HashMap<>(); + + // Fill the blocks map + blocksMap.put(Block.FREE, BlockImage.IRON_FLOOR); + blocksMap.put(Block.DESTRUCTIBLE_WALL, BlockImage.EXTRA); + blocksMap.put(Block.CRUMBLING_WALL, BlockImage.EXTRA_O); + blocksMap.put(Block.INDESTRUCTIBLE_WALL, BlockImage.DARK_BLOCK); + blocksMap.put(Block.BONUS_BOMB, BlockImage.BONUS_BOMB); + blocksMap.put(Block.BONUS_RANGE, BlockImage.BONUS_RANGE); + + // Instanciates the painter + BoardPainter painter = new BoardPainter(blocksMap, BlockImage.IRON_FLOOR_S); + + // Create a dummy board + Board board = createBoard(); + Cell freeCell = new Cell(2,1); + Cell shadowedFreeCell = new Cell(1,1); + Cell walledCell = new Cell(0,0); + + Assert.assertEquals(painter.byteForCell(board, freeCell), BlockImage.IRON_FLOOR.ordinal()); + Assert.assertEquals(painter.byteForCell(board, shadowedFreeCell), BlockImage.IRON_FLOOR_S.ordinal()); + Assert.assertEquals(painter.byteForCell(board, walledCell), BlockImage.DARK_BLOCK.ordinal()); + + } + + +} diff --git a/test/ch/epfl/xblast/painter/ExplosionPainterTest.java b/test/ch/epfl/xblast/painter/ExplosionPainterTest.java new file mode 100644 index 0000000..204b1ad --- /dev/null +++ b/test/ch/epfl/xblast/painter/ExplosionPainterTest.java @@ -0,0 +1,37 @@ +package ch.epfl.xblast.painter; + +import ch.epfl.xblast.*; +import ch.epfl.xblast.server.*; +import ch.epfl.xblast.server.painter.*; + +import org.junit.Assert; +import org.junit.Test; + +/** + * @author Timothée Floure (257420) + */ +public class ExplosionPainterTest { + @Test + public void byteForBombTest() { + Cell cell = new Cell(1,1); + int range = 5; + + Bomb bomb1 = new Bomb(PlayerID.PLAYER_1, cell, 8, range); + Bomb bomb2 = new Bomb(PlayerID.PLAYER_1, cell, 6, range); + Bomb bomb3 = new Bomb(PlayerID.PLAYER_1, cell, 2, range); + Bomb bomb4 = new Bomb(PlayerID.PLAYER_1, cell, 1, range); + + Assert.assertEquals(ExplosionPainter.byteForBomb(bomb1), (byte) 21); // white + Assert.assertEquals(ExplosionPainter.byteForBomb(bomb2), (byte) 20); // black + Assert.assertEquals(ExplosionPainter.byteForBomb(bomb3), (byte) 21); // white + Assert.assertEquals(ExplosionPainter.byteForBomb(bomb4), (byte) 21); // white + } + + @Test + public void byteForBlastTest() { + Assert.assertEquals((byte) 15,ExplosionPainter.byteForBlast(true,true,true,true)); // NESW + Assert.assertEquals((byte) 0,ExplosionPainter.byteForBlast(false,false,false,false)); // nesw + Assert.assertEquals((byte) 13,ExplosionPainter.byteForBlast(true,true,false,true)); // NEsW + Assert.assertEquals((byte) 4,ExplosionPainter.byteForBlast(false,true,false,false)); // nEsw + } +} \ No newline at end of file diff --git a/test/ch/epfl/xblast/painter/PlayerPainterTest.java b/test/ch/epfl/xblast/painter/PlayerPainterTest.java new file mode 100644 index 0000000..32b14a9 --- /dev/null +++ b/test/ch/epfl/xblast/painter/PlayerPainterTest.java @@ -0,0 +1,61 @@ +package ch.epfl.xblast.painter; + +import ch.epfl.cs108.Sq; +import ch.epfl.xblast.*; +import ch.epfl.xblast.server.*; +import ch.epfl.xblast.server.painter.*; + +import org.junit.Assert; +import org.junit.Test; + +/** + * @author Timothée Floure (257420) + */ +public class PlayerPainterTest { + + private Player playerGenerator(PlayerID id,Direction direction,Player.LifeState.State state,SubCell position,int lives) { + Sq lifeStates = Sq.constant(new Player.LifeState(lives, state)); + Sq directedPositions = Player.DirectedPosition.stopped( + new Player.DirectedPosition(position,direction) + ); + // id, lifeStates, DirectedPositions, MaxBombs, BombRange + return new Player(id, lifeStates, directedPositions, 1, 1); + } + + @Test + public void byteForPlayerTest() { + SubCell position = new SubCell(1,1); + + // Build the players + Player player1 = playerGenerator(PlayerID.PLAYER_1, + Direction.S, + Player.LifeState.State.VULNERABLE, + position, + 5 //lives + ); + Player player2 = playerGenerator(PlayerID.PLAYER_2, + Direction.S, + Player.LifeState.State.DYING, + position, + 1 //lives + ); + Player player3 = playerGenerator(PlayerID.PLAYER_3, + Direction.N, + Player.LifeState.State.VULNERABLE, + position, + 5 // lives + ); + Player player4 = playerGenerator(PlayerID.PLAYER_4, + Direction.E, + Player.LifeState.State.VULNERABLE, + position, + 5 // lives + ); + + // Assert + Assert.assertEquals((byte) 7,PlayerPainter.byteForPlayer(player1,1)); // P1 S1 + Assert.assertEquals((byte) 32,PlayerPainter.byteForPlayer(player2,1)); // P2 losing life + Assert.assertEquals((byte) 40,PlayerPainter.byteForPlayer(player3,2)); // P3 N0 + Assert.assertEquals((byte) 65,PlayerPainter.byteForPlayer(player4,3)); // P4 E2 + } +} \ No newline at end of file -- cgit v1.2.3