/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package ge.edu.freeuni.sdp.snake.view; import ge.edu.freeuni.sdp.snake.presenter.GameOverPresenter; import ge.edu.freeuni.sdp.snake.presenter.HighScorePresenter; import ge.edu.freeuni.sdp.snake.presenter.LevelPresenter; import ge.edu.freeuni.sdp.snake.presenter.MazePresenter; import ge.edu.freeuni.sdp.snake.presenter.PresenterFactory; import org.junit.Before; import org.junit.Test; import static org.mockito.Mockito.*; /** * * @author toka */ public class ViewControllerTest { private ViewFactory _viewFactory; private PresenterFactory _presenterRegistry; private ViewController _controller; public ViewControllerTest() { } @Before public void setUp() { _viewFactory = mock(ViewFactory.class); _presenterRegistry = mock(PresenterFactory.class); _controller = new ViewController(_viewFactory, _presenterRegistry); } @Test public void loopTest1() { LevelPresenter levelPresenter = mock(LevelPresenter.class); LevelView levelView = mock(LevelView.class); when(_presenterRegistry.getLevelPresenter()).thenReturn(levelPresenter); when(_viewFactory.getLevelView(levelPresenter)).thenReturn(levelView); MazePresenter mazePresenter = mock(MazePresenter.class); MazeView mazeView = mock(MazeView.class); when(_presenterRegistry.getMazePresenter()).thenReturn(mazePresenter); when(_viewFactory.getMazeView(mazePresenter)).thenReturn(mazeView); HighScorePresenter highScorePresenter = mock(HighScorePresenter.class); HighScoreView highScoreView = mock(HighScoreView.class); when(_presenterRegistry.getHighScorePresenter()).thenReturn(highScorePresenter); when(_viewFactory.getHighScoreView(highScorePresenter)).thenReturn(highScoreView); GameOverPresenter gameOverPresenter = mock(GameOverPresenter.class); GameOverView gameOverView = mock(GameOverView.class); when(gameOverView.continueGameOrNot()).thenReturn(Boolean.FALSE); when(_presenterRegistry.getGameOverPresenter()).thenReturn(gameOverPresenter); when(_viewFactory.getGameOverView(gameOverPresenter)).thenReturn(gameOverView); _controller.run(); verify(levelView, times(1)).show(); verify(mazeView, times(1)).show(); verify(highScoreView, times(1)).show(); verify(gameOverView, times(1)).show(); } @Test public void loopTest2(){ LevelPresenter levelPresenter = mock(LevelPresenter.class); LevelView levelView = mock(LevelView.class); when(_presenterRegistry.getLevelPresenter()).thenReturn(levelPresenter); when(_viewFactory.getLevelView(levelPresenter)).thenReturn(levelView); MazePresenter mazePresenter = mock(MazePresenter.class); MazeView mazeView = mock(MazeView.class); when(_presenterRegistry.getMazePresenter()).thenReturn(mazePresenter); when(_viewFactory.getMazeView(mazePresenter)).thenReturn(mazeView); HighScorePresenter highScorePresenter = mock(HighScorePresenter.class); HighScoreView highScoreView = mock(HighScoreView.class); when(_presenterRegistry.getHighScorePresenter()).thenReturn(highScorePresenter); when(_viewFactory.getHighScoreView(highScorePresenter)).thenReturn(highScoreView); GameOverPresenter gameOverPresenter = mock(GameOverPresenter.class); GameOverView gameOverView = mock(GameOverView.class); when(gameOverView.continueGameOrNot()).thenReturn(Boolean.TRUE).thenReturn(Boolean.FALSE); when(_presenterRegistry.getGameOverPresenter()).thenReturn(gameOverPresenter); when(_viewFactory.getGameOverView(gameOverPresenter)).thenReturn(gameOverView); _controller.run(); verify(levelView, times(2)).show(); verify(mazeView, times(2)).show(); verify(highScoreView, times(2)).show(); verify(gameOverView, times(2)).show(); } }