package sudoku;

import org.junit.jupiter.api.Test;

import java.util.ArrayList;
import java.util.Arrays;

public class TestCreationGrille {
    @Test
    public void testLigne() {
        // CREATION D'UN SUDOKU SIMPLE 12*12
        Sudoku sudoku = new Sudoku(12);
        sudoku.getGrille().setSymbolesPossibles(new ArrayList<>(Arrays.asList(
                Symbole.of(1),
                Symbole.of(2),
                Symbole.of(3),
                Symbole.of(4),
                Symbole.of(5),
                Symbole.of(6),
                Symbole.of(7),
                Symbole.of(8),
                Symbole.of(9),
                Symbole.of(10),
                Symbole.of(11),
                Symbole.of(12))));
        sudoku.getGrille().setCase(0, 1, Symbole.of(12));
        sudoku.getGrille().setCase(0, 6, Symbole.of(3));
        sudoku.getGrille().setCase(0, 7, Symbole.of(8));
        sudoku.getGrille().setCase(0, 8, Symbole.of(2));
        sudoku.getGrille().setCase(0, 9, Symbole.of(6));
        sudoku.getGrille().setCase(1, 0, Symbole.of(7));
        sudoku.getGrille().setCase(1, 1, Symbole.of(2));
        sudoku.getGrille().setCase(1, 2, Symbole.of(1));
        sudoku.getGrille().setCase(1, 5, Symbole.of(4));
        sudoku.getGrille().setCase(1, 7, Symbole.of(5));
        sudoku.getGrille().setCase(1, 9, Symbole.of(10));
        sudoku.getGrille().setCase(1, 11, Symbole.of(9));
        sudoku.getGrille().setCase(2, 1, Symbole.of(5));
        sudoku.getGrille().setCase(2, 2, Symbole.of(10));
        sudoku.getGrille().setCase(2, 5, Symbole.of(2));
        sudoku.getGrille().setCase(2, 6, Symbole.of(7));
        sudoku.getGrille().setCase(2, 10, Symbole.of(4));
        sudoku.getGrille().setCase(3, 5, Symbole.of(12));
        sudoku.getGrille().setCase(3, 11, Symbole.of(7));
        sudoku.getGrille().setCase(4, 1, Symbole.of(1));
        sudoku.getGrille().setCase(4, 3, Symbole.of(2));
        sudoku.getGrille().setCase(4, 4, Symbole.of(6));
        sudoku.getGrille().setCase(4, 5, Symbole.of(9));
        sudoku.getGrille().setCase(4, 6, Symbole.of(5));
        sudoku.getGrille().setCase(4, 9, Symbole.of(12));
        sudoku.getGrille().setCase(4, 10, Symbole.of(3));
        sudoku.getGrille().setCase(4, 11, Symbole.of(8));
        sudoku.getGrille().setCase(5, 1, Symbole.of(4));
        sudoku.getGrille().setCase(5, 2, Symbole.of(6));
        sudoku.getGrille().setCase(5, 3, Symbole.of(12));
        sudoku.getGrille().setCase(5, 5, Symbole.of(7));
        sudoku.getGrille().setCase(5, 6, Symbole.of(10));
        sudoku.getGrille().setCase(5, 9, Symbole.of(5));
        sudoku.getGrille().setCase(5, 11, Symbole.of(11));
        sudoku.getGrille().setCase(6, 0, Symbole.of(1));
        sudoku.getGrille().setCase(6, 1, Symbole.of(8));
        sudoku.getGrille().setCase(6, 2, Symbole.of(12));
        sudoku.getGrille().setCase(6, 11, Symbole.of(6));
        sudoku.getGrille().setCase(7, 2, Symbole.of(2));
        sudoku.getGrille().setCase(7, 3, Symbole.of(5));
        sudoku.getGrille().setCase(7, 5, Symbole.of(11));
        sudoku.getGrille().setCase(7, 6, Symbole.of(8));
        sudoku.getGrille().setCase(7, 7, Symbole.of(6));
        sudoku.getGrille().setCase(7, 8, Symbole.of(7));
        sudoku.getGrille().setCase(7, 10, Symbole.of(1));
        sudoku.getGrille().setCase(7, 11, Symbole.of(12));
        sudoku.getGrille().setCase(8, 4, Symbole.of(1));
        sudoku.getGrille().setCase(8, 7, Symbole.of(10));
        sudoku.getGrille().setCase(8, 8, Symbole.of(8));
        sudoku.getGrille().setCase(8, 9, Symbole.of(11));
        sudoku.getGrille().setCase(9, 5, Symbole.of(8));
        sudoku.getGrille().setCase(9, 10, Symbole.of(9));
        sudoku.getGrille().setCase(9, 11, Symbole.of(4));
        sudoku.getGrille().setCase(10, 0, Symbole.of(2));
        sudoku.getGrille().setCase(10, 2, Symbole.of(3));
        sudoku.getGrille().setCase(10, 4, Symbole.of(9));
        sudoku.getGrille().setCase(11, 0, Symbole.of(4));
        sudoku.getGrille().setCase(11, 3, Symbole.of(9));
        sudoku.getGrille().setCase(11, 4, Symbole.of(5));
        sudoku.getGrille().setCase(11, 6, Symbole.of(11));
        sudoku.getGrille().setCase(11, 8, Symbole.of(6));
        sudoku.getGrille().setCase(11, 11, Symbole.of(3));

        sudoku.getGrille().creerBlocRectangulaire(3, 4);

        sudoku.ajouterContrainte(new ContrainteBloc());
        sudoku.ajouterContrainte(new ContrainteColonne());
        sudoku.ajouterContrainte(new ContrainteLigne());

        System.out.println("Sudoku :");
        System.out.println(sudoku.getGrille().toString());
        System.out.println("Blocs :");
        sudoku.getGrille().printBlocs();
        System.out.println("Symboles possibles :");
        sudoku.getGrille().printSymbolesPossibles();
        System.out.println("FIN TEST LIGNE");
    }
}
