Uncensored-HackerCoding-GPT
/
app
/src
/test
/java
/com
/tacticmaster
/ChessboardControllerTest.java
| package com.tacticmaster; | |
| import static org.mockito.Mockito.anyInt; | |
| import static org.mockito.Mockito.anySet; | |
| import static org.mockito.Mockito.atLeastOnce; | |
| import static org.mockito.Mockito.verify; | |
| import static org.mockito.Mockito.when; | |
| import com.tacticmaster.board.ChessboardView; | |
| import com.tacticmaster.db.DatabaseAccessor; | |
| import com.tacticmaster.puzzle.Puzzle; | |
| import org.junit.jupiter.api.BeforeEach; | |
| import org.junit.jupiter.api.Test; | |
| import org.mockito.InjectMocks; | |
| import org.mockito.Mock; | |
| import org.mockito.MockitoAnnotations; | |
| import java.util.ArrayList; | |
| import java.util.List; | |
| import java.util.Random; | |
| public class ChessboardControllerTest { | |
| private DatabaseAccessor databaseAccessor; | |
| private ChessboardView chessboardView; | |
| private PuzzleTextViews puzzleTextViews; | |
| private Random randomNumberGenerator; | |
| private ChessboardController chessboardController; | |
| private Puzzle puzzle; | |
| private List<Puzzle> puzzles; | |
| public void setUp() { | |
| MockitoAnnotations.openMocks(this); | |
| when(databaseAccessor.getPlayerRating()).thenReturn(2333); | |
| String fen = "1rb2rk1/q5P1/4p2p/3p3p/3P1P2/2P5/2QK3P/3R2R1 b - - 0 29"; | |
| String moves = "f8f7 c2h7 g8h7 g7g8q"; | |
| this.puzzle = new Puzzle("1", fen, moves, 1049, 80, 85, 208, "opening", "url", "tags"); | |
| this.puzzles = new ArrayList<>(); | |
| this.puzzles.add(puzzle); | |
| this.puzzles.add(new Puzzle("1", "fen1", "moves1", 1500, 100, 10, 1000, "themes1", "url1", "opening1")); | |
| this.puzzles.add(new Puzzle("2", "fen2", "moves2", 1600, 100, 10, 1000, "themes2", "url2", "opening2")); | |
| this.puzzles.add(new Puzzle("3", "fen3", "moves3", 1400, 100, 10, 1000, "themes3", "url3", "opening3")); | |
| chessboardController = new ChessboardController(databaseAccessor, chessboardView, puzzleTextViews, randomNumberGenerator); | |
| } | |
| public void testLoadNextPuzzles() { | |
| when(databaseAccessor.getPuzzlesWithinRange(anyInt(), anyInt(), anySet())).thenReturn(puzzles); | |
| when(databaseAccessor.getAllPuzzleCount()).thenReturn(256); | |
| when(databaseAccessor.getSolvedPuzzleCount()).thenReturn(5); | |
| when(databaseAccessor.getPlayerRating()).thenReturn(2333); | |
| chessboardController.loadNextPuzzle(); | |
| verify(chessboardView).setPuzzle(puzzle); | |
| verify(puzzleTextViews).setPuzzleId(puzzle.puzzleId()); | |
| verify(puzzleTextViews).setPuzzleRating(puzzle.rating()); | |
| verify(puzzleTextViews).setPuzzlesSolved(5, 256); | |
| verify(puzzleTextViews).setPuzzleThemes(puzzle.themes()); | |
| verify(puzzleTextViews).setPuzzleMoves(puzzle.moves()); | |
| verify(puzzleTextViews).setPuzzlePopularity(puzzle.popularity()); | |
| verify(puzzleTextViews).setPuzzleNbPlays(puzzle.nbPlays()); | |
| verify(puzzleTextViews).setPlayerRating(2333); | |
| } | |
| public void testOnPuzzleSolved() { | |
| var newPuzzles = new ArrayList<Puzzle>(); | |
| newPuzzles.add(new Puzzle("2", "fen", "moves", 1000, 80, 85, 208, "opening", "url", "tags")); | |
| newPuzzles.add(new Puzzle("3", "fen", "moves", 1000, 80, 85, 208, "opening", "url", "tags")); | |
| when(databaseAccessor.getPuzzlesWithinRange(anyInt(), anyInt(), anySet())) | |
| .thenReturn(puzzles) | |
| .thenReturn(newPuzzles); | |
| chessboardController.loadNextPuzzle(); | |
| chessboardController.onPuzzleSolved(puzzle); | |
| verify(databaseAccessor).setSolved(puzzle.puzzleId()); | |
| verify(databaseAccessor).storePlayerRating(anyInt()); | |
| verify(puzzleTextViews, atLeastOnce()).setPlayerRating(anyInt()); | |
| } | |
| public void testOnPuzzleNotSolved() { | |
| when(databaseAccessor.getPuzzlesWithinRange(anyInt(), anyInt(), anySet())).thenReturn(puzzles); | |
| chessboardController.loadNextPuzzle(); | |
| chessboardController.onPuzzleNotSolved(puzzle); | |
| verify(databaseAccessor).storePlayerRating(anyInt()); | |
| verify(puzzleTextViews, atLeastOnce()).setPlayerRating(anyInt()); | |
| } | |
| } |