import assert from 'assert'; import Cell, { Direction, Item } from './Cell'; const { North, East, South, West } = Direction; const { Road, Town, Empty, River } = Item; describe('Cell', () => { describe('getSide', () => { it('Should get North, East, South and West sides correctly', () => { const cell = new Cell(Empty, [Road, Town, Empty, River]); assert.strictEqual(cell.getSide(North), Road); assert.strictEqual(cell.getSide(East), Town); assert.strictEqual(cell.getSide(South), Empty); assert.strictEqual(cell.getSide(West), River); }); it('Should respect cell orientation', () => { const cell = new Cell(Empty, [Road, Town, Empty, River]); cell.rotate(5); assert.strictEqual(cell.getSide(North), River); assert.strictEqual(cell.getSide(East), Road); assert.strictEqual(cell.getSide(South), Town); assert.strictEqual(cell.getSide(West), Empty); }); it('Should work with negative orientation', () => { const cell = new Cell(Empty, [Road, Town, Empty, River]); cell.rotate(-7); assert.strictEqual(cell.getSide(North), River); assert.strictEqual(cell.getSide(East), Road); assert.strictEqual(cell.getSide(South), Town); assert.strictEqual(cell.getSide(West), Empty); }); }); describe('getAttachments', () => { it('Should correclty list legal attachments', () => { const attachTo = new Cell(Town, [Road, Town, Town, Road]) const cell = new Cell(Road, [Empty, Road, Road, Empty]) const attachments = attachTo.getAttachments(cell); assert.strictEqual(attachments.length, 4); assert.deepStrictEqual(attachments[0], { side: 0, rotation: 0, cell, attachTo }); assert.deepStrictEqual(attachments[1], { side: 0, rotation: 1, cell, attachTo }); assert.deepStrictEqual(attachments[2], { side: 3, rotation: 0, cell, attachTo }); assert.deepStrictEqual(attachments[3], { side: 3, rotation: 3, cell, attachTo }); }); }); });