-
Notifications
You must be signed in to change notification settings - Fork 0
/
grid.spec.js
156 lines (149 loc) · 4.55 KB
/
grid.spec.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
const Grid = require('./grid');
const testGrid = [
[2, 6, 0, 0, 1, 0, 0, 3, 0],
[3, 0, 0, 0, 0, 0, 0, 0, 8],
[7, 1, 8, 0, 0, 0, 5, 2, 4],
[0, 0, 5, 6, 0, 7, 4, 0, 0],
[0, 0, 0, 0, 4, 0, 0, 0, 0],
[0, 0, 6, 5, 0, 3, 1, 0, 0],
[8, 3, 1, 0, 0, 0, 2, 4, 7],
[5, 0, 0, 0, 0, 0, 0, 0, 1],
[0, 9, 0, 0, 7, 0, 0, 8, 5],
];
describe('getGuessableCoordinates', () => {
const grid = new Grid(testGrid);
it('should get the coordinates', () => {
expect(grid.getGuessableCoordinates()).toEqual([0, 2]);
});
});
describe('getBoxValues', () => {
const grid = new Grid(testGrid);
describe('when called for box 0', () => {
it('should return contained values', () => {
expect(grid.getBoxValues(0)).toEqual([2, 6, 3, 7, 1, 8]);
});
});
describe('when called for box 1', () => {
it('should return contained values', () => {
expect(grid.getBoxValues(1)).toEqual([1]);
});
});
describe('when called for box 2', () => {
it('should return contained values', () => {
expect(grid.getBoxValues(2)).toEqual([3, 8, 5, 2, 4]);
});
});
describe('when called for box 3', () => {
it('should return contained values', () => {
expect(grid.getBoxValues(3)).toEqual([5, 6]);
});
});
describe('when called for box 4', () => {
it('should return contained values', () => {
expect(grid.getBoxValues(4)).toEqual([6, 7, 4, 5, 3]);
});
});
describe('when called for box 5', () => {
it('should return contained values', () => {
expect(grid.getBoxValues(5)).toEqual([4, 1]);
});
});
describe('when called for box 6', () => {
it('should return contained values', () => {
expect(grid.getBoxValues(6)).toEqual([8, 3, 1, 5, 9]);
});
});
describe('when called for box 7', () => {
it('should return contained values', () => {
expect(grid.getBoxValues(7)).toEqual([7]);
});
});
describe('when called for box 8', () => {
it('should return contained values', () => {
expect(grid.getBoxValues(8)).toEqual([2, 4, 7, 1, 8, 5]);
});
});
});
describe('getRowValues', () => {
const grid = new Grid(testGrid);
describe('when called for first row', () => {
it('should return contained values', () => {
expect(grid.getRowValues(0)).toEqual([2, 6, 1, 3]);
});
});
describe('when called for second row', () => {
it('should return contained values', () => {
expect(grid.getRowValues(1)).toEqual([3, 8]);
});
});
describe('when called for third row', () => {
it('should return contained values', () => {
expect(grid.getRowValues(2)).toEqual([7, 1, 8, 5, 2, 4]);
});
});
describe('when called for fourth row', () => {
it('should return contained values', () => {
expect(grid.getRowValues(3)).toEqual([5, 6, 7, 4]);
});
});
});
describe('getColumnValues', () => {
const grid = new Grid(testGrid);
describe('when called for first column', () => {
it('should return contained values', () => {
expect(grid.getColumnValues(0)).toEqual([2, 3, 7, 8, 5]);
});
});
describe('when called for second column', () => {
it('should return contained values', () => {
expect(grid.getColumnValues(1)).toEqual([6, 1, 3, 9]);
});
});
describe('when called for third column', () => {
it('should return contained values', () => {
expect(grid.getColumnValues(2)).toEqual([8, 5, 6, 1]);
});
});
describe('when called for fourth column', () => {
it('should return contained values', () => {
expect(grid.getColumnValues(3)).toEqual([6, 5]);
});
});
});
describe('isComplete', () => {
describe('when grid is incomplete', () => {
const grid = new Grid(testGrid);
it('should return false', () => {
expect(grid.isComplete()).toBe(false);
});
});
describe('when grid is complete', () => {
const grid = new Grid([
[1, 2, 3, 4, 5, 6, 7, 8, 9],
[4, 5, 6, 7, 8, 9, 1, 2, 3],
[7, 8, 9, 1, 2, 3, 4, 5, 6],
[2, 3, 4, 5, 6, 7, 8, 9, 1],
[5, 6, 7, 8, 9, 1, 2, 3, 4],
[8, 9, 1, 2, 3, 4, 5, 6, 7],
[3, 4, 5, 6, 7, 8, 9, 1, 2],
[6, 7, 8, 9, 1, 2, 3, 4, 5],
[9, 1, 2, 3, 4, 5, 6, 7, 8],
]);
it('should return true', () => {
expect(grid.isComplete()).toBe(true);
});
});
});
describe('isCellFree', () => {
const grid = new Grid(testGrid);
describe('when cell is free', () => {
it('should return true', () => {
expect(grid.isCellFree(0, 2)).toBe(true);
});
});
describe('when cell is taken', () => {
it('should return false', () => {
expect(grid.isCellFree(0, 0)).toBe(false);
});
});
});