UNPKG

ymir-js

Version:

This toolkit is created to make it easier for you to develop games like chess, checkers, go, match 3 puzzle and more. It is still under development.

187 lines (186 loc) 7.12 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var chai_1 = require("chai"); require("mocha"); var item_1 = require("../turkish/item"); var board_1 = require("./board"); describe('Turkish Checkers', function () { it('board.config', function () { var board = new board_1.default(); (0, chai_1.expect)(board.config).to.deep.equal({ x: 8, y: 8, }); }); it('reset', function () { var defaultBoard = new board_1.default(); defaultBoard.init(); var board = new board_1.default(); board.init(); board.moveItem('5|5', '4|5'); board.reset(); (0, chai_1.expect)(board.board).to.deep.equal(defaultBoard.board); }); it('getItemsBetweenTwoCoords', function () { var board = new board_1.default(); board.init(); (0, chai_1.expect)(board.getItemsBetweenTwoCoords('4|4', '7|4')).to.deep.equal([ '5|4', '6|4', ]); }); it('getAvailableCoordsByColor', function () { var board = new board_1.default(); board.init(); (0, chai_1.expect)(board.getAvailableCoordsByColor('white')).to.deep.equal({ '2|0': ['3|0'], '2|1': ['3|1'], '2|2': ['3|2'], '2|3': ['3|3'], '2|4': ['3|4'], '2|5': ['3|5'], '2|6': ['3|6'], '2|7': ['3|7'], }); }); it('getAvailableCoordsByColor with attack', function () { var board = new board_1.default(); board.init(); board.moveItem('2|5', '3|5'); board.moveItem('5|5', '4|5'); (0, chai_1.expect)(board.getAvailableCoordsByColor('white')).to.deep.equal({ '1|5': ['2|5'], '2|0': ['3|0'], '2|1': ['3|1'], '2|2': ['3|2'], '2|3': ['3|3'], '2|4': ['3|4', '2|5'], '3|5': ['5|5'], '2|6': ['3|6', '2|5'], '2|7': ['3|7'], }); }); it('getAvailableCoordsByColor with attack 2', function () { var board = new board_1.default(); var firstWhiteItem = new item_1.default({ color: 'white', king: true }); var blackItem = new item_1.default({ color: 'black' }); board.setItem('1|5', firstWhiteItem); board.setItem('2|5', blackItem); board.setItem('3|5', blackItem); (0, chai_1.expect)(board.getAvailableCoordsByColor('white')).to.deep.equal({ '1|5': ['0|5', '1|4', '1|3', '1|2', '1|1', '1|0', '1|6', '1|7'], }); }); it('getAvailableCoordsByColor with attack 3', function () { var board = new board_1.default(); var firstWhiteItem = new item_1.default({ color: 'white', king: true }); var secondWhiteItem = new item_1.default({ color: 'white' }); var blackItem = new item_1.default({ color: 'black' }); board.setItem('1|5', firstWhiteItem); board.setItem('2|5', secondWhiteItem); board.setItem('6|5', blackItem); (0, chai_1.expect)(board.getAvailableCoordsByColor('white')).to.deep.equal({ '1|5': ['0|5', '1|4', '1|3', '1|2', '1|1', '1|0', '1|6', '1|7'], '2|5': ['3|5', '2|4', '2|6'], }); }); it('getAvailableCoordsByColor with attack 4', function () { var board = new board_1.default(); var firstWhiteItem = new item_1.default({ color: 'white' }); var secondWhiteItem = new item_1.default({ color: 'white' }); var blackItem = new item_1.default({ color: 'black', king: true }); board.setItem('1|5', firstWhiteItem); board.setItem('4|5', secondWhiteItem); board.setItem('5|5', blackItem); board.getItem('5|5').setKing(); (0, chai_1.expect)(board.getAvailableCoordsByColor('black')).to.deep.equal({ '5|5': ['3|5', '2|5'], }); }); it('getAttackCoordsByColor', function () { var board = new board_1.default(); board.init(); board.moveItem('2|5', '3|5'); board.moveItem('5|5', '4|5'); board.moveItem('5|4', '3|4'); (0, chai_1.expect)(board.getAttackCoordsByColor('white')).to.deep.equal({ '3|5': [ { coord: '5|5', destroyItemCoord: '4|5' }, { coord: '3|3', destroyItemCoord: '3|4' }, ], '2|4': [{ coord: '4|4', destroyItemCoord: '3|4' }], }); }); it('getDefendCoordsByColor', function () { var board = new board_1.default(); board.init(); board.moveItem('5|1', '4|1'); board.moveItem('2|1', '3|1'); (0, chai_1.expect)(board.getDefendCoordsByColor('white')).to.deep.equal({ '1|1': [{ coord: '2|1', inDangerCoord: '3|1' }], '2|0': [{ coord: '2|1', inDangerCoord: '3|1' }], '2|2': [{ coord: '2|1', inDangerCoord: '3|1' }], }); }); it('getDefendCoordsByColor Horizontal', function () { var board = new board_1.default(); board.init(); board.moveItem('2|1', '3|1'); board.moveItem('5|2', '3|2'); (0, chai_1.expect)(board.getDefendCoordsByColor('white')).to.deep.equal({ '2|0': [{ coord: '3|0', inDangerCoord: '3|1' }], }); }); it('getItemsByColor ', function () { var board = new board_1.default(); board.init(); (0, chai_1.expect)(board.getItemsByColor('white').length).to.equal(16); }); }); describe('Turkish Checkers Available Columns', function () { it('getAvailableColumns', function () { var board = new board_1.default(); board.init(); board.moveItem('2|3', '3|3'); board.moveItem('1|3', '2|3'); board.moveItem('5|3', '4|3'); var item = board.getItem('4|3'); (0, chai_1.expect)(board.getAvailableColumns('4|3', item.movement)).to.deep.equal([ '4|2', '4|4', ]); }); it('getAvailableColumns horizontal', function () { var board = new board_1.default(); board.init(); board.moveItem('2|3', '3|3'); board.moveItem('1|3', '2|3'); board.moveItem('5|3', '2|6'); board.removeItem('2|4'); var item = board.getItem('2|7'); (0, chai_1.expect)(board.getAvailableColumns('2|7', item.movement)).to.deep.equal([ '3|7', ]); }); it('getAvailableColumns king', function () { var board = new board_1.default(); board.init(); var item = board.getItem('2|7'); item.setKing(); (0, chai_1.expect)(board.getAvailableColumns('2|7', item.movement)).to.deep.equal([ '3|7', '4|7', ]); }); it('getAvailableColumns king with attack', function () { var board = new board_1.default(); board.init(); board.moveItem('5|7', '3|7'); var item = board.getItem('2|7'); item.setKing(); (0, chai_1.expect)(board.getAvailableColumns('2|7', item.movement)).to.deep.equal([ '4|7', '5|7', ]); }); });