universe@22: package de.uapcore.sudoku; universe@22: universe@22: import org.junit.jupiter.api.Test; universe@22: universe@22: import static org.junit.jupiter.api.Assertions.*; universe@22: universe@22: class FieldTest { universe@22: universe@22: private int[] createTestdata() { universe@22: return new int[]{ universe@22: 0,1,0,9,0,0,8,0,0, universe@22: 0,0,0,0,0,8,0,0,4, universe@22: 6,0,5,0,0,0,7,0,0, universe@22: 0,9,0,0,6,0,0,0,8, universe@22: 0,0,0,2,0,7,0,0,0, universe@22: 8,0,0,0,3,0,0,6,0, universe@22: 0,0,2,0,0,0,5,0,3, universe@22: 1,0,0,4,0,0,0,0,0, universe@22: 0,0,6,0,0,2,0,1,0}; universe@22: } universe@22: universe@22: private Field createTestField() { universe@22: final var field = new Field(); universe@22: final var testdata = createTestdata(); universe@22: for (int x = 0 ; x < 9 ; x++) { universe@22: for (int y = 0 ; y < 9 ; y++) { universe@22: field.setCellValue(x, y, testdata[x+9*y]); universe@22: } universe@22: } universe@22: return field; universe@22: } universe@22: universe@22: @Test universe@22: void getAndSetValues() { universe@22: final var f = new Field(); universe@22: assertEquals(0, f.getCellValue(3, 4)); universe@22: assertTrue(f.isCellEmpty(3, 4)); universe@22: f.setCellValue(3, 4, 6); universe@25: assertEquals(6, f.getCellValue(3, 4)); universe@22: assertFalse(f.isCellEmpty(3, 4)); universe@22: } universe@22: universe@22: @Test universe@22: void setAllCellsModified() { universe@22: final var f = new Field(); universe@22: universe@22: assertFalse(f.isAnyCellModified()); universe@22: f.setAllCellsModified(true); universe@22: for (int x = 0 ; x < 9 ; x++) { universe@22: for (int y = 0 ; y < 9 ; y++) { universe@22: assertTrue(f.isCellModified(x, y)); universe@22: } universe@22: } universe@22: universe@22: f.setAllCellsModified(false); universe@22: assertFalse(f.isAnyCellModified()); universe@22: } universe@22: universe@22: @Test universe@22: void isAnyCellModified() { universe@22: final var f = new Field(); universe@22: universe@22: assertFalse(f.isAnyCellModified()); universe@22: f.setCellValue(3, 4, 6); universe@22: assertFalse(f.isAnyCellModified()); universe@22: f.setCellModified(3, 4, true); universe@22: assertTrue(f.isAnyCellModified()); universe@22: } universe@22: universe@22: @Test universe@22: void clear() { universe@22: final var f = new Field(); universe@22: f.setCellValue(3, 4, 6); universe@22: f.setCellValue(2, 5, 9); universe@22: f.clear(); universe@22: for (int x = 0 ; x < 9 ; x++) { universe@22: for (int y = 0 ; y < 9 ; y++) { universe@22: assertTrue(f.isCellEmpty(x, y)); universe@22: } universe@22: } universe@22: } universe@22: universe@22: @Test universe@22: void getSquare() { universe@22: final var field = createTestField(); universe@22: universe@22: final var square01 = new int[][]{ universe@22: new int[]{0,0,8}, universe@22: new int[]{9,0,0}, universe@22: new int[]{0,0,0}}; universe@22: universe@22: final var square01actual = field.getSquare(0, 1); universe@22: assertEquals(3, square01actual.length); universe@22: for (int i = 0 ; i < 3 ; i++) { universe@22: assertArrayEquals(square01[i], square01actual[i]); universe@22: } universe@22: universe@22: final var square20 = new int[][]{ universe@22: new int[]{8,0,7}, universe@22: new int[]{0,0,0}, universe@22: new int[]{0,4,0}}; universe@22: universe@22: final var square20actual = field.getSquare(2, 0); universe@22: assertEquals(3, square20actual.length); universe@22: for (int i = 0 ; i < 3 ; i++) { universe@22: assertArrayEquals(square20[i], square20actual[i]); universe@22: } universe@22: } universe@22: universe@22: @Test universe@22: void getRow() { universe@22: final var field = createTestField(); universe@22: universe@22: final var row3 = new int[]{0,9,0,0,6,0,0,0,8}; universe@22: final var row4 = new int[]{0,0,0,2,0,7,0,0,0}; universe@22: universe@22: assertArrayEquals(row3, field.getRow(3)); universe@22: assertArrayEquals(row4, field.getRow(4)); universe@22: } universe@22: universe@22: @Test universe@22: void getColumn() { universe@22: final var field = createTestField(); universe@22: universe@22: final var col2 = new int[]{0,0,5,0,0,0,2,0,6}; universe@22: final var col6 = new int[]{8,0,7,0,0,0,5,0,0}; universe@22: universe@22: assertArrayEquals(col2, field.getColumn(2)); universe@22: assertArrayEquals(col6, field.getColumn(6)); universe@22: } universe@22: universe@22: @Test universe@22: void getSquareIAE() { universe@22: final var field = createTestField(); universe@22: assertThrows(IllegalArgumentException.class, () -> field.getSquare(3, 2)); universe@22: assertThrows(IllegalArgumentException.class, () -> field.getSquare(2, 3)); universe@22: assertThrows(IllegalArgumentException.class, () -> field.getSquare(2, -1)); universe@22: assertThrows(IllegalArgumentException.class, () -> field.getSquare(-1, 2)); universe@22: } universe@22: universe@22: @Test universe@22: void getRowIAE() { universe@22: final var field = createTestField(); universe@22: assertThrows(IllegalArgumentException.class, () -> field.getRow(9)); universe@22: assertThrows(IllegalArgumentException.class, () -> field.getRow(-1)); universe@22: } universe@22: universe@22: @Test universe@22: void getColumnIAE() { universe@22: final var field = createTestField(); universe@22: assertThrows(IllegalArgumentException.class, () -> field.getColumn(9)); universe@22: assertThrows(IllegalArgumentException.class, () -> field.getColumn(-1)); universe@22: } universe@22: }