diff --git a/.eslintrc.js b/.eslintrc.js index 337b869..dc046e0 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -30,5 +30,6 @@ module.exports = { 'prefer-destructuring': 0, 'quote-props': 0, 'semi': ['error', 'never'], + 'symbol-description': 0, }, }; diff --git a/src/puzzles/dodecaminx/dodecaminx.ts b/src/puzzles/dodecaminx/dodecaminx.ts index 14233b7..adc678f 100644 --- a/src/puzzles/dodecaminx/dodecaminx.ts +++ b/src/puzzles/dodecaminx/dodecaminx.ts @@ -65,8 +65,10 @@ export class Dodecaminx extends Puzzle} state state to apply to the puzzle */ apply(state: Partial) { + const symbol = Symbol() + keys(state).forEach(face => { - const [corners, middles, center] = state[face] + const [corners, middles, center = symbol] = state[face] corners.forEach((matrix, i) => { matrix.forEach((value, j) => { @@ -83,7 +85,7 @@ export class Dodecaminx extends Puzzle { - it('apply', () => { - const model = new Dodecaminx({ size: 3 }) + describe('apply', () => { + it('fills face values', () => { + const model = new Dodecaminx({ size: 3 }) - model.apply({ - f: [ - [[-1], [-2], [-3], [-4], [-5]], - [[-6], [-7], [-8], [-9], [-10]], - -11, - ], + model.apply({ + f: [ + [[-1], [-2], [-3], [-4], [-5]], + [[-6], [-7], [-8], [-9], [-10]], + -11, + ], + }) + + expect(model.state.f[0][0][0].value).toBe(-1) + expect(model.state.f[0][1][0].value).toBe(-2) + expect(model.state.f[0][2][0].value).toBe(-3) + expect(model.state.f[0][3][0].value).toBe(-4) + expect(model.state.f[0][4][0].value).toBe(-5) + expect(model.state.f[1][0][0].value).toBe(-6) + expect(model.state.f[1][1][0].value).toBe(-7) + expect(model.state.f[1][2][0].value).toBe(-8) + expect(model.state.f[1][3][0].value).toBe(-9) + expect(model.state.f[1][4][0].value).toBe(-10) + expect(model.state.f[2].value).toBe(-11) }) - expect(model.state.f[0][0][0].value).toBe(-1) - expect(model.state.f[0][1][0].value).toBe(-2) - expect(model.state.f[0][2][0].value).toBe(-3) - expect(model.state.f[0][3][0].value).toBe(-4) - expect(model.state.f[0][4][0].value).toBe(-5) - expect(model.state.f[1][0][0].value).toBe(-6) - expect(model.state.f[1][1][0].value).toBe(-7) - expect(model.state.f[1][2][0].value).toBe(-8) - expect(model.state.f[1][3][0].value).toBe(-9) - expect(model.state.f[1][4][0].value).toBe(-10) - expect(model.state.f[2].value).toBe(-11) + it('can apply falsey center values', () => { + const model = new Dodecaminx({ size: 3 }) + + expect(model.state.b[2].value).not.toBe(null) + + model.apply({ + b: [ + [[null], [null], [null], [null], [null]], + [[null], [null], [null], [null], [null]], + null, + ], + }) + + expect(model.state.b[2].value).toBe(null) + }) }) it('clone', () => {