src/test/java/de/uapcore/sudoku/SolverTest.java

Wed, 26 Aug 2020 19:09:07 +0200

author
Mike Becker <universe@uap-core.de>
date
Wed, 26 Aug 2020 19:09:07 +0200
changeset 25
569220009c54
parent 23
07b9adaed78e
permissions
-rw-r--r--

fixes wrong call of assertEquals()

     1 package de.uapcore.sudoku;
     3 import org.junit.jupiter.api.Test;
     5 import static org.junit.jupiter.api.Assertions.*;
     7 class SolverTest {
     9     private int[] createTestdata() {
    10         return new int[]{
    11                 0,1,0,9,0,0,8,0,0,
    12                 0,0,0,0,0,8,0,0,4,
    13                 6,0,5,0,0,0,7,0,0,
    14                 0,9,0,0,6,0,0,0,8,
    15                 0,0,0,2,0,7,0,0,0,
    16                 8,0,0,0,3,0,0,6,0,
    17                 0,0,2,0,0,0,5,0,3,
    18                 1,0,0,4,0,0,0,0,0,
    19                 0,0,6,0,0,2,0,1,0};
    20     }
    22     private int[] createTestdataSolved() {
    23         return new int[]{
    24                 4,1,7,9,2,5,8,3,6,
    25                 3,2,9,6,7,8,1,5,4,
    26                 6,8,5,3,4,1,7,9,2,
    27                 2,9,1,5,6,4,3,7,8,
    28                 5,6,3,2,8,7,9,4,1,
    29                 8,7,4,1,3,9,2,6,5,
    30                 9,4,2,7,1,6,5,8,3,
    31                 1,5,8,4,9,3,6,2,7,
    32                 7,3,6,8,5,2,4,1,9};
    33     }
    35     private Field createTestField(int[] testdata) {
    36         final var field = new Field();
    37         for (int x = 0 ; x < 9 ; x++) {
    38             for (int y = 0 ; y < 9 ; y++) {
    39                 field.setCellValue(x, y, testdata[x+9*y]);
    40             }
    41         }
    42         return field;
    43     }
    46     @Test
    47     void solveSuccess() {
    48         final var field = createTestField(createTestdata());
    49         final var solvedField = createTestField(createTestdataSolved());
    50         assertTrue(new Solver().solve(field));
    51         for (int x = 0 ; x < 9 ; x++) {
    52             for (int y = 0 ; y < 9 ; y++) {
    53                 assertEquals(solvedField.getCellValue(x, y), field.getCellValue(x, y));
    54             }
    55         }
    56     }
    58     @Test
    59     void solvingSetsModifiedStates() {
    60         final var originalField = createTestField(createTestdata());
    61         final var field = createTestField(createTestdata());
    62         assertTrue(new Solver().solve(field));
    63         for (int x = 0 ; x < 9 ; x++) {
    64             for (int y = 0 ; y < 9 ; y++) {
    65                 if (originalField.isCellEmpty(x, y)) {
    66                     assertTrue(field.isCellModified(x, y));
    67                 } else {
    68                     assertFalse(field.isCellModified(x, y));
    69                 }
    70             }
    71         }
    72     }
    74     @Test
    75     void checkSuccess() {
    76         final var field = createTestField(createTestdata());
    77         assertTrue(new Solver().check(field));
    78         assertFalse(field.isAnyCellModified());
    79     }
    81     @Test
    82     void solveFail() {
    83         final var originalField = createTestField(createTestdata());
    84         final var field = createTestField(createTestdata());
    85         originalField.setCellValue(0, 3, 5);
    86         field.setCellValue(0, 3, 5);
    87         assertTrue(new Solver().check(field));
    88         assertFalse(new Solver().solve(field));
    89         for (int x = 0 ; x < 9 ; x++) {
    90             for (int y = 0 ; y < 9 ; y++) {
    91                 if (originalField.isCellEmpty(x, y)) {
    92                     assertTrue(field.isCellEmpty(x, y));
    93                 } else {
    94                     assertFalse(field.isCellEmpty(x, y));
    95                     assertFalse(field.isCellModified(x, y));
    96                 }
    97             }
    98         }
    99     }
   101     @Test
   102     void checkFail() {
   103         final var field = createTestField(createTestdata());
   104         field.setCellValue(4, 6, 4);
   105         assertFalse(new Solver().check(field));
   106         assertFalse(field.isAnyCellModified());
   107     }
   108 }

mercurial