import { expect } from 'vitest'; import { layBricks } from './layBricks'; describe('layBricks', () => { it('Возвращает корректное значение в случае неверного типа параметра', () => { const wrongType = 'wrong'; expect(layBricks(wrongType, 1, 1)).toBeNull(); expect(layBricks(1, wrongType, 1)).toBeNull(); expect(layBricks(1, 1, wrongType)).toBeNull(); }); it('Возвращает корректное значение в случае неверных размеров кирпича', () => { const wrongWidth = -1; const wrongHeight = -1; expect(layBricks(1, wrongWidth, 1)).toBeNull(); expect(layBricks(1, 1, wrongHeight)).toBeNull(); }); it('Возвращает корректное значение в случае некоректной карты уровня', () => { const levelMap = ['brick', 'brick']; expect(layBricks(levelMap, 1, 1)).toBeNull(); }); it('Возвращает корректное значение в случае некоректного отступа', () => { const levelMap = [ [1, 1, 1, 1, 1], [1, 1, 1, 1, 1], [1, 1, 1, 1, 1], ]; expect(layBricks(levelMap, 1, 1, -1)).toBeNull(); }); it('Возвращает массив корректных размеров', () => { const levelMap = [ [1, 1, 1, 1, 1], [1, 1, 1, 1, 1], [1, 1, 1, 1, 1], ]; const bricks = layBricks(levelMap, 1, 1); expect(bricks.length).toBe(levelMap.flat().length); const emptyLevelMap = [ [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], ]; const emptyBricksArray = layBricks(emptyLevelMap, 1, 1); expect(emptyBricksArray.length).toBe(0); }); it('Задает корректные координаты кирпичам', () => { const levelMap = [ [1, 1], [1, 1], ]; const brickWidth = 1; const brickHeight = 1; const bricks = layBricks(levelMap, brickWidth, brickHeight); let index = 0; for (let i = 0; i < levelMap.length; i++) { for (let j = 0; j < levelMap[i].length; j++) { if (levelMap[i][j] === 0) { continue; } expect(bricks[index].x).toBe(j * brickWidth); expect(bricks[index].y).toBe(i * brickHeight); index++; } } }); it('Верно записывает тип кирпича', () => { const levelMap = [ [2, 1, 3], [1, 2, 0], ]; const brickWidth = 1; const brickHeight = 1; const bricks = layBricks(levelMap, brickWidth, brickHeight); let index = 0; for (let i = 0; i < levelMap.length; i++) { for (let j = 0; j < levelMap[i].length; j++) { if (levelMap[i][j] === 0) { continue; } expect(bricks[index].type).toBe(levelMap[i][j]); index++; } } }); });