Finished task 3
This commit is contained in:
parent
d8470790b2
commit
f973e4db11
@ -4,7 +4,7 @@ name = MichaelChen
|
||||
|
||||
solutionname = Solution_Phase$(phase)_$(name)
|
||||
target = $(solutionname)_V$(version).zip
|
||||
package = $(solutionname).pdf
|
||||
package = $(solutionname).pdf PlayerTest.java
|
||||
latexmkflags =
|
||||
|
||||
.PHONY : all dev
|
||||
|
@ -0,0 +1,79 @@
|
||||
package nl.tudelft.jpacman.level;
|
||||
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
|
||||
import nl.tudelft.jpacman.board.Board;
|
||||
import nl.tudelft.jpacman.board.BoardFactory;
|
||||
import nl.tudelft.jpacman.board.Direction;
|
||||
import nl.tudelft.jpacman.board.Square;
|
||||
import nl.tudelft.jpacman.game.Game;
|
||||
import nl.tudelft.jpacman.game.GameFactory;
|
||||
import nl.tudelft.jpacman.npc.ghost.GhostFactory;
|
||||
import nl.tudelft.jpacman.sprite.PacManSprites;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
/**
|
||||
* Test suite to confirm the correct behaviour of pellet consumtion as
|
||||
* described in Scenario S2.1.
|
||||
*
|
||||
* @author Michael Chen
|
||||
*/
|
||||
class PlayerTest {
|
||||
private MapParser parser;
|
||||
private GameFactory gameFact;
|
||||
|
||||
/**
|
||||
* Prepare the game factory
|
||||
*/
|
||||
@BeforeEach
|
||||
void setUpTest() {
|
||||
PacManSprites sprites = new PacManSprites();
|
||||
parser = new MapParser(new LevelFactory(sprites,
|
||||
new GhostFactory(sprites)), new BoardFactory(sprites));
|
||||
gameFact = new GameFactory(new PlayerFactory(sprites));
|
||||
}
|
||||
|
||||
/**
|
||||
* Scenario S2.1: The player consumes
|
||||
*/
|
||||
@Test
|
||||
void playerConsumeTest() {
|
||||
Level level = parser.parseMap(
|
||||
Lists.newArrayList("####", "#P.#", "####"));
|
||||
Board board = level.getBoard();
|
||||
Game game = gameFact.createSinglePlayerGame(level);
|
||||
Player player = game.getPlayers().get(0);
|
||||
Square playerStart = board.squareAt(1, 1);
|
||||
Square pelletPos = board.squareAt(2, 1);
|
||||
|
||||
// Given the game has started,
|
||||
game.start();
|
||||
assertThat(game.isInProgress()).isTrue();
|
||||
assertThat(player.getScore()).isZero();
|
||||
|
||||
// and my Pacman is next to a square containing a pellet;
|
||||
assertThat(pelletPos.getOccupants())
|
||||
.hasAtLeastOneElementOfType(Pellet.class);
|
||||
assertThat(pelletPos.getOccupants()).hasSize(1);
|
||||
Pellet pellet = (Pellet) pelletPos.getOccupants().get(0);
|
||||
assertThat(playerStart.getOccupants()).contains(player);
|
||||
|
||||
// When I press an arrow key towards that square;
|
||||
game.move(player, Direction.EAST);
|
||||
|
||||
// Then my Pacman can move to that square,
|
||||
assertThat(pelletPos.getOccupants()).contains(player);
|
||||
|
||||
// and I earn the points for the pellet,
|
||||
assertThat(player.getScore()).isEqualTo(pellet.getValue());
|
||||
|
||||
// and the pellet disappears from that square.
|
||||
assertThat(pelletPos.getOccupants()).doesNotContain(pellet);
|
||||
|
||||
game.stop();
|
||||
}
|
||||
}
|
@ -87,12 +87,9 @@
|
||||
\begin{question}{Write your own JUnit Test}%[0]
|
||||
Inside the \texttt{src/test/java} folder, create a new test file "CustomTest.java", and write your own JUnit test for one scenario picked from "scenarios.md" (located in the \texttt{doc/} folder). The test is supposed to call the sequence of functions corresponding to the steps described in the chosen scenario, and should include reasonable \textit{assertions} to check if the intermediate program states meet the scenario requirements.
|
||||
\begin{answer}
|
||||
[TODO: Add answer here]
|
||||
I picked the scenarion \texttt{S2.1} to verify that the pellets are successfully consumed by the player once the player moves towards them.
|
||||
|
||||
\begin{lstlisting}[language=Java,belowskip=-0.8\baselineskip]
|
||||
/* Add code here */
|
||||
\end{lstlisting}
|
||||
% or: \lstinputlisting[language=Java,belowskip=-0.8\baselineskip]{file_name.java}
|
||||
\lstinputlisting[firstline=43,lastline=78,language=Java,belowskip=-0.8\baselineskip]{PlayerTest.java}
|
||||
\end{answer}
|
||||
\end{question}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user