1+ import { Sudoku } from '../Sudoku'
2+
3+ const data = [
4+ [ 3 , 0 , 6 , 5 , 0 , 8 , 4 , 0 , 0 ] ,
5+ [ 5 , 2 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ,
6+ [ 0 , 8 , 7 , 0 , 0 , 0 , 0 , 3 , 1 ] ,
7+ [ 0 , 0 , 3 , 0 , 1 , 0 , 0 , 8 , 0 ] ,
8+ [ 9 , 0 , 0 , 8 , 6 , 3 , 0 , 0 , 5 ] ,
9+ [ 0 , 5 , 0 , 0 , 9 , 0 , 6 , 0 , 0 ] ,
10+ [ 1 , 3 , 0 , 0 , 0 , 0 , 2 , 5 , 0 ] ,
11+ [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 7 , 4 ] ,
12+ [ 0 , 0 , 5 , 2 , 0 , 6 , 3 , 0 , 0 ]
13+ ]
14+
15+ const solved = [
16+ [ 3 , 1 , 6 , 5 , 7 , 8 , 4 , 9 , 2 ] ,
17+ [ 5 , 2 , 9 , 1 , 3 , 4 , 7 , 6 , 8 ] ,
18+ [ 4 , 8 , 7 , 6 , 2 , 9 , 5 , 3 , 1 ] ,
19+ [ 2 , 6 , 3 , 4 , 1 , 5 , 9 , 8 , 7 ] ,
20+ [ 9 , 7 , 4 , 8 , 6 , 3 , 1 , 2 , 5 ] ,
21+ [ 8 , 5 , 1 , 7 , 9 , 2 , 6 , 4 , 3 ] ,
22+ [ 1 , 3 , 8 , 9 , 4 , 7 , 2 , 5 , 6 ] ,
23+ [ 6 , 9 , 2 , 3 , 5 , 1 , 8 , 7 , 4 ] ,
24+ [ 7 , 4 , 5 , 2 , 8 , 6 , 3 , 1 , 9 ] ,
25+ ]
26+
27+ describe ( 'Sudoku' , ( ) => {
28+ it ( 'should create a valid board successfully' , ( ) => {
29+ expect ( ( ) => { new Sudoku ( data ) } ) . not . toThrow ( )
30+ } )
31+
32+ it ( 'should find an empty cell' , ( ) => {
33+ const board = new Sudoku ( data )
34+ const emptyCell = board . findEmptyCell ( )
35+ expect ( emptyCell ) . not . toEqual ( [ - 1 , - 1 ] )
36+ } )
37+
38+ it ( 'should solve the board successfully' , ( ) => {
39+ const board = new Sudoku ( data )
40+ board . solve ( )
41+
42+ // should not have empty cells anymore
43+ const emptyCell = board . findEmptyCell ( )
44+ expect ( emptyCell ) . toEqual ( [ - 1 , - 1 ] )
45+
46+ // solved board should match our expectation
47+ for ( let i = 0 ; i < 9 ; i ++ ) {
48+ const section = board . getSection ( i , [ 0 , 9 ] )
49+ expect ( section ) . toEqual ( solved [ i ] )
50+ }
51+ } )
52+ } )
0 commit comments