diff --git a/controllers/sudoku-solver.js b/controllers/sudoku-solver.js index abd6226..d487217 100644 --- a/controllers/sudoku-solver.js +++ b/controllers/sudoku-solver.js @@ -1,18 +1,27 @@ class SudokuSolver { validate(puzzleString) { + + return puzzleString.length == 81 && !puzzleString.match(/[^\.\d]/g); + } checkRowPlacement(puzzleString, row, column, value) { + + } checkColPlacement(puzzleString, row, column, value) { + + } checkRegionPlacement(puzzleString, row, column, value) { + + } solve(puzzleString) { diff --git a/tests/1_unit-tests.js b/tests/1_unit-tests.js index b6c46a7..9304e86 100644 --- a/tests/1_unit-tests.js +++ b/tests/1_unit-tests.js @@ -1,9 +1,39 @@ const chai = require('chai'); const assert = chai.assert; -const Solver = require('../controllers/sudoku-solver.js'); -let solver; +const { puzzlesAndSolutions } = require('../controllers/puzzle-strings'); +const Solver = require('../controllers/sudoku-solver'); +const solver = new Solver(); suite('UnitTests', () => { + test('SudokuSolver.validate(puzzleString) valid puzzle string of 81 characters', (done) => { + + const input = puzzlesAndSolutions[0][0]; + + assert.equal(solver.validate(input), true); + done(); + + }); + + test('SudokuSolver.validate(puzzleString) puzzle string of 81 characters with invalid characters', (done) => { + + const input = puzzlesAndSolutions[0][0].replace(/\./g, '?'); + + assert.equal(solver.validate(input), false); + done(); + + }); + + test('SudokuSolver.validate(puzzleString) puzzle string of 82 characters with valid characters', (done) => { + + const input = puzzlesAndSolutions[0][0] + '0'; + + assert.equal(solver.validate(input), false); + done(); + + }); + + + }); \ No newline at end of file