@Test
  public void testResolveCellBySquare() throws Exception {
    moveThroughGame(game, (i, j) -> Int.fromInteger((i * SIZE + i / SIZE + j) % (SIZE * SIZE) + 1));
    game.set(9, 1, Int.ZERO);
    game.resolveBySquare(3, 1);

    assertThat(game.get(9, 1), is(Int.NINE));
  }
  @Test
  public void testFindPossibleRowToResolve() throws Exception {
    moveThroughGame(game, (i, j) -> Int.fromInteger((i * SIZE + i / SIZE + j) % (SIZE * SIZE) + 1));
    game.set(8, 1, Int.ZERO);
    game.set(9, 1, Int.ZERO);

    assertThat(game.possibleRowsToResolve(), containsInAnyOrder(8, 9));
  }
 private void moveThroughGame(SudokuGame g, DatumGenerator<Int> generator) {
   for (int i = 0; i < SIZE * SIZE; i++) {
     for (int j = 0; j < SIZE * SIZE; j++) {
       Int datum = generator.generate(i, j);
       game.set(i + 1, j + 1, datum);
     }
   }
 }