mancala/tests/mancala.test.ts

61 lines
2.6 KiB
TypeScript

import { Board, createGame, Game, Hole, Store } from "../src/mancala"
describe('mancala', function () {
const player1 = "0"
const player2 = "0"
it('turn test', function () {
const game = createGame(player1, player2)
game.turn = "player1"
game.moveByIndex(3, "player1")
expect(game.turn).toBe("player1")
})
it('zero hole test 1', function () {
const board = new Board(
[new Hole(0), new Hole(1), new Hole(2), new Hole(3), new Hole(4), new Hole(5)],
[new Hole(1), new Hole(0), new Hole(4), new Hole(4), new Hole(4), new Hole(4)],
new Store(0), new Store(0))
const game = new Game(player1, player2, board, "player2", "playing")
game.moveByIndex(0, "player2")
expect(game.turn).toBe("player1")
expect(game.board.player2Store.ballCount).toBe(5)
expect(game.board.player1Holes[game.board.player1Holes.length - 1 - 1].ballCount).toBe(0)
})
it('game end test 1', function () {
const board = new Board(
[new Hole(0), new Hole(0), new Hole(0), new Hole(0), new Hole(4), new Hole(4)],
[new Hole(0), new Hole(0), new Hole(0), new Hole(0), new Hole(0), new Hole(1)],
new Store(0), new Store(0))
const game = new Game(player1, player2, board, "player2", "playing")
game.moveByIndex(5, "player2")
expect(game.turn).toBe("player2")
expect(game.board.player2Store.ballCount).toBe(9)
expect(game.board.player1Holes[game.board.player1Holes.length / 2].ballCount).toBe(0)
expect(game.state).toBe("ended")
})
it('game end won user 1', function () {
const board = new Board(
[new Hole(0), new Hole(0), new Hole(0), new Hole(0), new Hole(4), new Hole(4)],
[new Hole(0), new Hole(0), new Hole(0), new Hole(0), new Hole(0), new Hole(1)],
new Store(0), new Store(0))
const game = new Game(player1, player2, board, "player2", "playing")
game.moveByIndex(5, "player2")
expect(game.turn).toBe("player2")
expect(game.board.player2Store.ballCount).toBe(9)
expect(game.board.player1Holes[game.board.player1Holes.length / 2].ballCount).toBe(0)
expect(game.state).toBe("ended")
expect(game.getWonPlayer()).toBe("player2")
})
it('too many ball test', function () {
const board = new Board(
[new Hole(1), new Hole(1), new Hole(1), new Hole(1), new Hole(1), new Hole(1)],
[new Hole(0), new Hole(0), new Hole(0), new Hole(0), new Hole(0), new Hole(12)],
new Store(0), new Store(0))
const game = new Game(player1, player2, board, "player2", "playing")
game.moveByIndex(5, "player2")
expect(game.turn).toBe("player1")
expect(game.state).toBe("playing")
})
})