Game test #29

Merged
fassband merged 4 commits from GameTest into main 2022-03-23 09:19:00 +01:00
1 changed files with 114 additions and 15 deletions
Showing only changes of commit 8877f1476f - Show all commits

View File

@ -1,11 +1,14 @@
package ch.zhaw.pm2.racetrack; package ch.zhaw.pm2.racetrack;
import ch.zhaw.pm2.racetrack.strategy.UserMoveStrategy; import ch.zhaw.pm2.racetrack.strategy.UserMoveStrategy;
import org.junit.Before;
import org.junit.jupiter.api.*; import org.junit.jupiter.api.*;
import java.io.File; import java.io.File;
import java.util.List;
import static ch.zhaw.pm2.racetrack.Game.NO_WINNER; import static ch.zhaw.pm2.racetrack.Game.NO_WINNER;
import static ch.zhaw.pm2.racetrack.PositionVector.Direction.*;
class GameTest { class GameTest {
private UserInterface userInterface; private UserInterface userInterface;
@ -20,40 +23,40 @@ class GameTest {
userInterface = new UserInterface("Test"); userInterface = new UserInterface("Test");
game = new Game(userInterface); game = new Game(userInterface);
track = game.selectTrack(new File(".\\tracks\\challenge.txt")); track = game.selectTrack(new File(".\\tracks\\challenge.txt"));
game.selectMoveStrategy(track.getCar(0),new UserMoveStrategy(new UserInterface("Testing"),0, track.getCarId(0))); game.selectMoveStrategy(track.getCar(0), new UserMoveStrategy(new UserInterface("Testing"), 0, track.getCarId(0)));
game.selectMoveStrategy(track.getCar(1),new UserMoveStrategy(new UserInterface("Testing"),1, track.getCarId(1))); game.selectMoveStrategy(track.getCar(1), new UserMoveStrategy(new UserInterface("Testing"), 1, track.getCarId(1)));
} }
@Test @Test
void getCurrentCarIndex() { void getCurrentCarIndex() {
Assertions.assertEquals(0,game.getCurrentCarIndex()); Assertions.assertEquals(0, game.getCurrentCarIndex());
game.switchToNextActiveCar(); game.switchToNextActiveCar();
Assertions.assertEquals(1,game.getCurrentCarIndex()); Assertions.assertEquals(1, game.getCurrentCarIndex());
} }
@Test @Test
void getCarId() { void getCarId() {
Assertions.assertEquals('a',game.getCarId(0)); Assertions.assertEquals('a', game.getCarId(0));
Assertions.assertEquals('b',game.getCarId(1)); Assertions.assertEquals('b', game.getCarId(1));
} }
@Test @Test
void getCarPosition() { void getCarPosition() {
Assertions.assertEquals(new PositionVector(24,22),game.getCarPosition(0)); Assertions.assertEquals(new PositionVector(24, 22), game.getCarPosition(0));
Assertions.assertEquals(new PositionVector(24,24),game.getCarPosition(1)); Assertions.assertEquals(new PositionVector(24, 24), game.getCarPosition(1));
} }
@Test @Test
void getCarVelocity() { void getCarVelocity() {
Assertions.assertEquals(new PositionVector(0,0),game.getCarVelocity(0)); Assertions.assertEquals(new PositionVector(0, 0), game.getCarVelocity(0));
Assertions.assertEquals(new PositionVector(0,0),game.getCarVelocity(1)); Assertions.assertEquals(new PositionVector(0, 0), game.getCarVelocity(1));
} }
@Test @Test
void getWinner() { void getWinner() {
Assertions.assertEquals(NO_WINNER,game.getWinner()); Assertions.assertEquals(NO_WINNER, game.getWinner());
} }
@Test @Test
@ -75,16 +78,16 @@ class GameTest {
userInterface = new UserInterface("Test"); userInterface = new UserInterface("Test");
game = new Game(userInterface); game = new Game(userInterface);
track = game.selectTrack(new File(".\\tracks\\challenge.txt")); track = game.selectTrack(new File(".\\tracks\\challenge.txt"));
game.selectMoveStrategy(track.getCar(0),new UserMoveStrategy(new UserInterface("Testing"),0, track.getCarId(0))); game.selectMoveStrategy(track.getCar(0), new UserMoveStrategy(new UserInterface("Testing"), 0, track.getCarId(0)));
game.selectMoveStrategy(track.getCar(1),new UserMoveStrategy(new UserInterface("Testing"),1, track.getCarId(1))); game.selectMoveStrategy(track.getCar(1), new UserMoveStrategy(new UserInterface("Testing"), 1, track.getCarId(1)));
} }
@Test @Test
void carTurnCorrect() { void carTurnCorrect() {
try { try {
game.doCarTurn(PositionVector.Direction.RIGHT); game.doCarTurn(RIGHT);
Assertions.assertEquals(new PositionVector(1,0),game.getCarVelocity(0)); Assertions.assertEquals(new PositionVector(1, 0), game.getCarVelocity(0));
} catch (PositionVectorNotValid positionVectorNotValid) { } catch (PositionVectorNotValid positionVectorNotValid) {
positionVectorNotValid.printStackTrace(); positionVectorNotValid.printStackTrace();
} }
@ -99,6 +102,102 @@ class GameTest {
positionVectorNotValid.printStackTrace(); positionVectorNotValid.printStackTrace();
} }
} }
}
@Nested
@DisplayName("Playtrough")
class Play {
private Game game;
@Test
void winner() {
game = new Game(new interFace("Test"));
try {
game.initPhase();
Assertions.assertEquals('a',game.gamePhase());
} catch (InvalidTrackFormatException | PositionVectorNotValid e) {
e.printStackTrace();
}
}
}
private class interFace extends UserInterface {
private static PositionVector.Direction[] directions = {RIGHT,
RIGHT,
RIGHT,
NONE,
NONE,
NONE,
NONE,
UP,
LEFT,
LEFT,
LEFT,
LEFT,
UP_LEFT,
NONE,
RIGHT,
RIGHT,
RIGHT,
NONE,
LEFT,
DOWN_LEFT,
DOWN_LEFT,
LEFT,
LEFT,
NONE,
RIGHT,
NONE,
DOWN,
DOWN,
RIGHT,
NONE,
RIGHT,
DOWN,
NONE,
UP_RIGHT,
RIGHT,
UP_RIGHT,
UP_RIGHT,
RIGHT,
RIGHT};
private static int pointer = -1;
public interFace(String welcometxt) {
super(welcometxt);
}
@Override
public int selectOption(String text, List<String> options) {
if (text.equals("Select Track file")) {
return 1;
} else if (text.contains("Select Strategy for Car")) {
return 2;
}
return 0;
}
public void printInformation(String text) {
}
public void printTrack(Track track) {
}
public void quit(String text) {
}
public PositionVector.Direction selectDirection(int playingCarIndex, char playingCarID) {
pointer += 1;
if(pointer < directions.length) {
return directions[pointer];
}
return NONE;
}
} }
} }