add tests for GRDoubleStoneInPit

This commit is contained in:
Halit Aksoy 2022-05-21 18:36:00 +03:00
parent 3d9ae0c524
commit c3f1a92d24
2 changed files with 45 additions and 0 deletions

View File

@ -1,6 +1,7 @@
import { GRClearBoardAtEnd } from '../src/common/game_rules/GRClearBoardAtEnd'; import { GRClearBoardAtEnd } from '../src/common/game_rules/GRClearBoardAtEnd';
import { GRLastStoneInBank } from '../src/common/game_rules/GRLastStoneInBank'; import { GRLastStoneInBank } from '../src/common/game_rules/GRLastStoneInBank';
import { GRLastStoneInEmptyPit } from '../src/common/game_rules/GRLastStoneInEmptyPit'; import { GRLastStoneInEmptyPit } from '../src/common/game_rules/GRLastStoneInEmptyPit';
import { GRDoubleStoneInPit } from '../src/common/game_rules/GRDoubleStoneInPit';
import { Board } from '../src/core/Board'; import { Board } from '../src/core/Board';
import { MancalaGame } from '../src/core/MancalaGame'; import { MancalaGame } from '../src/core/MancalaGame';
@ -16,6 +17,7 @@ export function createGame(): MancalaGame {
player1Id, player1Id,
[ [
new GRLastStoneInEmptyPit(), new GRLastStoneInEmptyPit(),
new GRDoubleStoneInPit(),
new GRLastStoneInBank(), new GRLastStoneInBank(),
new GRClearBoardAtEnd() new GRClearBoardAtEnd()
], ],

View File

@ -0,0 +1,43 @@
import { GameStep } from '../../src/core/HistoryItem';
import { GAME_STEP_GAME_MOVE } from '../../src/core/MancalaGame';
import { createGame } from '../TestUtil';
import { GAME_STEP_DOUBLE_STONE_IN_PIT } from '../../src/common/game_rules/GRDoubleStoneInPit';
describe('GRDoubleStoneInPit Test', () => {
test('test GRDoubleStoneInPit 1', () => {
const game = createGame();
const board = game.board;
const initialBoard = [3, 4, 4, 4, 4, 3, 0, 3, 4, 4, 4, 4, 3, 0];
game.board.pits[5].stoneCount = 3;
game.board.pits[7].stoneCount = 3;
game.board.pits[12].stoneCount = 3;
game.board.pits[0].stoneCount = 3;
expect(board.getStoneArray()).toStrictEqual(initialBoard);
game.moveByPlayerPit('0', 5);
expect(board.getStoneArray()).toStrictEqual([
3, 4, 4, 4, 4, 1, 5, 0, 4, 4, 4, 4, 3, 0
]);
expect(game.history[0].gameSteps).toStrictEqual([
new GameStep(5, GAME_STEP_GAME_MOVE),
new GameStep(6, GAME_STEP_GAME_MOVE),
new GameStep(7, GAME_STEP_GAME_MOVE),
new GameStep(7, GAME_STEP_DOUBLE_STONE_IN_PIT, {
pitIndex: 7,
bankIndex: 6
})
]);
game.moveByPlayerPit('1', 5);
expect(board.getStoneArray()).toStrictEqual([
0, 4, 4, 4, 4, 1, 5, 0, 4, 4, 4, 4, 1, 5
]);
expect(game.history[game.history.length - 1].gameSteps).toStrictEqual([
new GameStep(12, GAME_STEP_GAME_MOVE),
new GameStep(13, GAME_STEP_GAME_MOVE),
new GameStep(14, GAME_STEP_GAME_MOVE),
new GameStep(0, GAME_STEP_DOUBLE_STONE_IN_PIT, {
pitIndex: 0,
bankIndex: 13
})
]);
});
});