import { create, clone, draw, check, sweep } from './grid' test('create', () => { // arrange / act const [width, height] = [10, 5] const grid = create(width, height) // assert expect(grid.length).toBe(height) expect(grid[0].length).toBe(width) expect(grid[height - 1].length).toBe(width) }) test('clone', () => { // arrange const src = create(3, 4) src[0][0] = 1 src[3][2] = 2 // act const dest = clone(src) // assert expect(src).toStrictEqual(dest) expect(src[0][1]).toBe(undefined) expect(dest[0][1]).toBe(undefined) }) test('draw', () => { // arrange const coords = [ [[0, 1], [1, 1], [2, 1], [2, 2]], [[1, 0], [1, 1], [1, 2], [2, 0]], [[0, 1], [0, 2], [1, 2], [2, 2]], [[1, 2], [2, 0], [2, 1], [2, 2]], ] const shape = 'J' const block = { coords, shape } const grid = create(4, 4) // act const bucket = draw(grid, 0, 0, block, 0, shape) // assert const expected = [ [undefined, undefined, undefined, undefined], ['J', 'J', 'J', undefined], [undefined, undefined, 'J', undefined], [undefined, undefined, undefined, undefined], ] expect(bucket).toStrictEqual(expected) }) test('check', () => { // arrange const grid = create(4, 4) const coords = [ [[0, 1], [1, 1], [2, 1], [2, 2]], [[1, 0], [1, 1], [1, 2], [2, 0]], [[0, 1], [0, 2], [1, 2], [2, 2]], [[1, 2], [2, 0], [2, 1], [2, 2]], ] const block = { coords } // act const vacant = check(grid, 0, 0, block, 0) grid[1][1] = 'T' grid[1][2] = 'S' const occupied = check(grid, 0, 0, block, 0) // assert expect(vacant).toBe(true) expect(occupied).toBe(false) }) test('sweep', () => { // arrange const grid = [ [1, 1, 1], // will be removed [undefined, undefined, undefined], [1, 1, 1], // will be removed [1, undefined, 1], [1, 1, 1], // will be removed [1, undefined, undefined], ] // act sweep(grid) // assert const expected = [ [undefined, undefined, undefined], // added [undefined, undefined, undefined], // added [undefined, undefined, undefined], // added [undefined, undefined, undefined], [1, undefined, 1], [1, undefined, undefined], ] expect(grid).toStrictEqual(expected) })