import { GAME_STEP_LAST_STONE_IN_BANK, GRLastStoneInBank } from '../../src/common/game_rules/GRLastStoneInBank'; import { GAME_STEP_LAST_STONE_IN_EMPTY_PIT, GRLastStoneInEmptyPit } from '../../src/common/game_rules/GRLastStoneInEmptyPit'; import { GAME_STEP_BOARD_CLEARED, GRClearBoardAtEnd } from '../../src/common/game_rules/GRClearBoardAtEnd'; import { Board } from '../../src/core/Board'; import { GAME_STEP_GAME_MOVE, MancalaGame } from '../../src/core/MancalaGame'; import { GameStep } from '../../src/core/HistoryItem'; import { createGame } from '../TestUtil'; describe('GRClearBoardAtEnd Test', () => { test('test GRClearBoardAtEnd 1', () => { const game = createGame(); game.board.fillPlayer1Pits(0); game.board.fillPlayer2Pits(0); game.board.player1Pits[5].stoneCount = 1; game.board.player2Pits[5].stoneCount = 1; game.moveByPlayerPit('0', 5); expect(game.board.player1Bank.stoneCount).toBe(2); expect(game.board.player2Bank.stoneCount).toBe(0); expect( game.board.player1Pits .map((pit) => pit.stoneCount) .reduce((sum, stoneCount) => sum + stoneCount, 0) ).toBe(0); expect( game.board.player2Pits .map((pit) => pit.stoneCount) .reduce((sum, stoneCount) => sum + stoneCount, 0) ).toBe(0); expect(game.history[0].gameSteps).toStrictEqual([ new GameStep(6, GAME_STEP_GAME_MOVE), new GameStep(6, GAME_STEP_LAST_STONE_IN_BANK), new GameStep(6, GAME_STEP_BOARD_CLEARED, { pitIndexesThatHasStone: [12] }) ]); }); });