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
JavaScript
"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',
]);
});
});