Merge pull request #29 from PM2-IT21bWIN-ruiz-mach-krea/GameTest
Game test
This commit is contained in:
		
						commit
						de91717a48
					
				| 
						 | 
					@ -222,10 +222,9 @@ public class Game implements GameSpecification {
 | 
				
			||||||
            direction = track.getCar(currentCarIndex).getMoveStrategy().nextMove();
 | 
					            direction = track.getCar(currentCarIndex).getMoveStrategy().nextMove();
 | 
				
			||||||
            if (direction == null) {
 | 
					            if (direction == null) {
 | 
				
			||||||
                track.getCar(currentCarIndex).setMoveStrategy(new DoNotMoveStrategy());
 | 
					                track.getCar(currentCarIndex).setMoveStrategy(new DoNotMoveStrategy());
 | 
				
			||||||
                direction = track.getCar(currentCarIndex).getMoveStrategy().nextMove(); //TODO: Entfernen?
 | 
					                direction = track.getCar(currentCarIndex).getMoveStrategy().nextMove();
 | 
				
			||||||
            }else {
 | 
					 | 
				
			||||||
                doCarTurn(direction);
 | 
					 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					            doCarTurn(direction);
 | 
				
			||||||
            switchToNextActiveCar();
 | 
					            switchToNextActiveCar();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        userInterface.printTrack(track);
 | 
					        userInterface.printTrack(track);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,59 +1,74 @@
 | 
				
			||||||
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.jupiter.api.*;
 | 
					import org.junit.jupiter.api.Nested;
 | 
				
			||||||
 | 
					import org.junit.jupiter.api.DisplayName;
 | 
				
			||||||
 | 
					import org.junit.jupiter.api.BeforeEach;
 | 
				
			||||||
 | 
					import org.junit.jupiter.api.Test;
 | 
				
			||||||
 | 
					import org.junit.jupiter.api.Assertions;
 | 
				
			||||||
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.*;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Test for Class Game
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
class GameTest {
 | 
					class GameTest {
 | 
				
			||||||
    private UserInterface userInterface;
 | 
					    private UserInterface userInterface;
 | 
				
			||||||
    private Game game;
 | 
					    private Game game;
 | 
				
			||||||
    private Track track;
 | 
					    private Track track;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private String TRACK_FILE_PATH = ".\\tracks\\challenge.txt";
 | 
				
			||||||
 | 
					    private int CAR_INDEX_ONE = 0;
 | 
				
			||||||
 | 
					    private int CAR_INDEX_TWO = 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * This nested Class tests if the game gets initiatet correctly
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
    @Nested
 | 
					    @Nested
 | 
				
			||||||
    @DisplayName("Test correct Setup")
 | 
					    @DisplayName("Test correct Setup")
 | 
				
			||||||
    class Setup {
 | 
					    class Setup {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        @BeforeEach
 | 
					        @BeforeEach
 | 
				
			||||||
        void setup() {
 | 
					        void setup() {
 | 
				
			||||||
            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(TRACK_FILE_PATH));
 | 
				
			||||||
            game.selectMoveStrategy(track.getCar(0),new UserMoveStrategy(new UserInterface("Testing"),0, track.getCarId(0)));
 | 
					            game.selectMoveStrategy(track.getCar(CAR_INDEX_ONE), new UserMoveStrategy(new UserInterface("Testing"), CAR_INDEX_ONE, track.getCarId(CAR_INDEX_ONE)));
 | 
				
			||||||
            game.selectMoveStrategy(track.getCar(1),new UserMoveStrategy(new UserInterface("Testing"),1, track.getCarId(1)));
 | 
					            game.selectMoveStrategy(track.getCar(CAR_INDEX_TWO), new UserMoveStrategy(new UserInterface("Testing"), CAR_INDEX_TWO, track.getCarId(CAR_INDEX_TWO)));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
        @Test
 | 
					        @Test
 | 
				
			||||||
        void getCurrentCarIndex() {
 | 
					        void getCurrentCarIndex() {
 | 
				
			||||||
            Assertions.assertEquals(0,game.getCurrentCarIndex());
 | 
					            Assertions.assertEquals(CAR_INDEX_ONE, game.getCurrentCarIndex());
 | 
				
			||||||
            game.switchToNextActiveCar();
 | 
					            game.switchToNextActiveCar();
 | 
				
			||||||
            Assertions.assertEquals(1,game.getCurrentCarIndex());
 | 
					            Assertions.assertEquals(CAR_INDEX_TWO, 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
 | 
				
			||||||
| 
						 | 
					@ -67,24 +82,28 @@ class GameTest {
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * This nested Class makes basic manipulation after Game init.
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
    @Nested
 | 
					    @Nested
 | 
				
			||||||
    @DisplayName("Basic manipulation")
 | 
					    @DisplayName("Basic manipulation")
 | 
				
			||||||
    class manipulation {
 | 
					    class Manipulation {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        @BeforeEach
 | 
					        @BeforeEach
 | 
				
			||||||
        void setup() {
 | 
					        void setup() {
 | 
				
			||||||
            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(TRACK_FILE_PATH));
 | 
				
			||||||
            game.selectMoveStrategy(track.getCar(0),new UserMoveStrategy(new UserInterface("Testing"),0, track.getCarId(0)));
 | 
					            game.selectMoveStrategy(track.getCar(CAR_INDEX_ONE), new UserMoveStrategy(new UserInterface("Testing"), CAR_INDEX_ONE, track.getCarId(CAR_INDEX_ONE)));
 | 
				
			||||||
            game.selectMoveStrategy(track.getCar(1),new UserMoveStrategy(new UserInterface("Testing"),1, track.getCarId(1)));
 | 
					            game.selectMoveStrategy(track.getCar(CAR_INDEX_TWO), new UserMoveStrategy(new UserInterface("Testing"), CAR_INDEX_TWO, track.getCarId(CAR_INDEX_TWO)));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        @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 +118,116 @@ class GameTest {
 | 
				
			||||||
                positionVectorNotValid.printStackTrace();
 | 
					                positionVectorNotValid.printStackTrace();
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * This nested Class tests a Playtrough. And implements a UserInterface interagtion to pretend a real player
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    @Nested
 | 
				
			||||||
 | 
					    @DisplayName("Playtrough")
 | 
				
			||||||
 | 
					    class Play {
 | 
				
			||||||
 | 
					        private Game game;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        @Test
 | 
				
			||||||
 | 
					        void winner() {
 | 
				
			||||||
 | 
					            game = new Game(new interFace("Test",new Integer[]{0,2,1},new PositionVector.Direction[]{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}));
 | 
				
			||||||
 | 
					            try {
 | 
				
			||||||
 | 
					                game.initPhase();
 | 
				
			||||||
 | 
					                Assertions.assertEquals("a",game.gamePhase());
 | 
				
			||||||
 | 
					            } catch (InvalidTrackFormatException | PositionVectorNotValid e) {
 | 
				
			||||||
 | 
					                e.printStackTrace();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        @Test
 | 
				
			||||||
 | 
					        void crashA() {
 | 
				
			||||||
 | 
					            game = new Game(new interFace("Test",new Integer[]{0,2,2},new PositionVector.Direction[]{UP}));
 | 
				
			||||||
 | 
					            try {
 | 
				
			||||||
 | 
					                game.initPhase();
 | 
				
			||||||
 | 
					                Assertions.assertEquals("b",game.gamePhase());
 | 
				
			||||||
 | 
					            } catch (InvalidTrackFormatException | PositionVectorNotValid e) {
 | 
				
			||||||
 | 
					                e.printStackTrace();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private class interFace extends UserInterface {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private final PositionVector.Direction[] directions;
 | 
				
			||||||
 | 
					        private final Integer[] instructions;
 | 
				
			||||||
 | 
					        private int pointerDir,pointerInstruction;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public interFace(String welcometxt, Integer[] instructions, PositionVector.Direction[] directions) {
 | 
				
			||||||
 | 
					            super(welcometxt);
 | 
				
			||||||
 | 
					            pointerDir = -1;
 | 
				
			||||||
 | 
					            pointerInstruction = -1;
 | 
				
			||||||
 | 
					            this.instructions = instructions;
 | 
				
			||||||
 | 
					            this.directions = directions;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        @Override
 | 
				
			||||||
 | 
					        public int selectOption(String text, List<String> options) {
 | 
				
			||||||
 | 
					            pointerInstruction++;
 | 
				
			||||||
 | 
					            return instructions[pointerInstruction];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public void printInformation(String text) {
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public void printTrack(Track track) {
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public void quit(String text) {
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public PositionVector.Direction selectDirection(int playingCarIndex, char playingCarID) {
 | 
				
			||||||
 | 
					            pointerDir += 1;
 | 
				
			||||||
 | 
					            if(pointerDir < directions.length) {
 | 
				
			||||||
 | 
					                return directions[pointerDir];
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            return NONE;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue