Tue, 28 Jul 2020 13:48:59 +0200
adds more tests
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/src/test/java/de/uapcore/sudoku/ButtonPanelTest.java Tue Jul 28 13:48:59 2020 +0200 1.3 @@ -0,0 +1,42 @@ 1.4 +package de.uapcore.sudoku; 1.5 + 1.6 +import org.junit.jupiter.api.Test; 1.7 + 1.8 +import javax.swing.*; 1.9 + 1.10 +import static org.junit.jupiter.api.Assertions.assertEquals; 1.11 +import static org.junit.jupiter.api.Assertions.assertTrue; 1.12 + 1.13 +class ButtonPanelTest { 1.14 + 1.15 + @Test 1.16 + void testButtonsPresent() { 1.17 + final var panel = new ButtonPanel(new ActionHandler(new Field())); 1.18 + assertEquals(3, panel.getComponentCount()); 1.19 + 1.20 + assertTrue(panel.getComponent(0) instanceof JButton); 1.21 + assertEquals("Speichern", ((JButton)panel.getComponent(0)).getText()); 1.22 + assertTrue(panel.getComponent(1) instanceof JButton); 1.23 + assertEquals("Prüfen", ((JButton)panel.getComponent(1)).getText()); 1.24 + assertTrue(panel.getComponent(2) instanceof JButton); 1.25 + assertEquals("Lösen", ((JButton)panel.getComponent(2)).getText()); 1.26 + } 1.27 + 1.28 + @Test 1.29 + void testActionListener() { 1.30 + final var ah = new ActionHandler(new Field()); 1.31 + final var panel = new ButtonPanel(ah); 1.32 + assertEquals(3, panel.getComponentCount()); 1.33 + 1.34 + final var save = (JButton)panel.getComponent(0); 1.35 + final var check = (JButton)panel.getComponent(1); 1.36 + final var solve = (JButton)panel.getComponent(2); 1.37 + 1.38 + assertEquals(1, save.getActionListeners().length); 1.39 + assertEquals(ah, save.getActionListeners()[0]); 1.40 + assertEquals(1, check.getActionListeners().length); 1.41 + assertEquals(ah, check.getActionListeners()[0]); 1.42 + assertEquals(1, solve.getActionListeners().length); 1.43 + assertEquals(ah, solve.getActionListeners()[0]); 1.44 + } 1.45 +}
2.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 2.2 +++ b/src/test/java/de/uapcore/sudoku/DocumentHandlerTest.java Tue Jul 28 13:48:59 2020 +0200 2.3 @@ -0,0 +1,96 @@ 2.4 +package de.uapcore.sudoku; 2.5 + 2.6 +import org.junit.jupiter.api.Test; 2.7 + 2.8 +import java.io.File; 2.9 +import java.io.FileOutputStream; 2.10 +import java.io.IOException; 2.11 +import java.nio.file.Files; 2.12 + 2.13 +import static org.junit.jupiter.api.Assertions.*; 2.14 + 2.15 +class DocumentHandlerTest { 2.16 + 2.17 + @Test 2.18 + void testFilenameManagement() { 2.19 + final var dh = new DocumentHandler(); 2.20 + assertFalse(dh.isFilenameSet()); 2.21 + dh.setFilename("foo"); 2.22 + assertTrue(dh.isFilenameSet()); 2.23 + dh.clearFilename(); 2.24 + assertFalse(dh.isFilenameSet()); 2.25 + } 2.26 + 2.27 + private File extractFile(String name) throws IOException { 2.28 + final var f = File.createTempFile("sudoku-test", ".txt"); 2.29 + try (var in = DocumentHandlerTest.class.getClassLoader().getResourceAsStream(name); 2.30 + var out = new FileOutputStream(f)) { 2.31 + in.transferTo(out); 2.32 + } 2.33 + return f; 2.34 + } 2.35 + 2.36 + private int[] createTestdata() { 2.37 + return new int[]{0,1,0,9,0,0,8,0,0, 2.38 + 0,0,0,0,0,8,0,0,4, 2.39 + 6,0,5,0,0,0,7,0,0, 2.40 + 0,9,0,0,6,0,0,0,8, 2.41 + 0,0,0,2,0,7,0,0,0, 2.42 + 8,0,0,0,3,0,0,6,0, 2.43 + 0,0,2,0,0,0,5,0,3, 2.44 + 1,0,0,4,0,0,0,0,0, 2.45 + 0,0,6,0,0,2,0,1,0}; 2.46 + } 2.47 + 2.48 + @Test 2.49 + void load() throws IOException { 2.50 + final var f = extractFile("test-sudoku"); 2.51 + final var dh = new DocumentHandler(); 2.52 + final var field = new Field(); 2.53 + dh.setFilename(f.getAbsolutePath()); 2.54 + dh.load(field); 2.55 + 2.56 + final var expected = createTestdata(); 2.57 + for (int x = 0 ; x < 9 ; x++) { 2.58 + for (int y = 0 ; y < 9 ; y++) { 2.59 + assertEquals(expected[x+9*y], field.getCellValue(x, y)); 2.60 + } 2.61 + } 2.62 + } 2.63 + 2.64 + @Test 2.65 + void save() throws IOException { 2.66 + final var f = File.createTempFile("sudoku-test", ".txt"); 2.67 + final var dh = new DocumentHandler(); 2.68 + 2.69 + final var field = new Field(); 2.70 + final var testdata = createTestdata(); 2.71 + for (int x = 0 ; x < 9 ; x++) { 2.72 + for (int y = 0 ; y < 9 ; y++) { 2.73 + field.setCellValue(x, y, testdata[x+9*y]); 2.74 + } 2.75 + } 2.76 + 2.77 + dh.setFilename(f.getAbsolutePath()); 2.78 + dh.save(field); 2.79 + 2.80 + final String[] expected = { 2.81 + "_ 1 _ 9 _ _ 8 _ _", 2.82 + "_ _ _ _ _ 8 _ _ 4", 2.83 + "6 _ 5 _ _ _ 7 _ _", 2.84 + "_ 9 _ _ 6 _ _ _ 8", 2.85 + "_ _ _ 2 _ 7 _ _ _", 2.86 + "8 _ _ _ 3 _ _ 6 _", 2.87 + "_ _ 2 _ _ _ 5 _ 3", 2.88 + "1 _ _ 4 _ _ _ _ _", 2.89 + "_ _ 6 _ _ 2 _ 1 _" 2.90 + }; 2.91 + 2.92 + final var actual = Files.readAllLines(f.toPath()); 2.93 + 2.94 + assertEquals(expected.length, actual.size()); 2.95 + for (int i = 0 ; i < expected.length ; i++) { 2.96 + assertEquals(expected[i], actual.get(i)); 2.97 + } 2.98 + } 2.99 +}
3.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 3.2 +++ b/src/test/java/de/uapcore/sudoku/MainMenuTest.java Tue Jul 28 13:48:59 2020 +0200 3.3 @@ -0,0 +1,97 @@ 3.4 +package de.uapcore.sudoku; 3.5 + 3.6 +import org.junit.jupiter.api.Test; 3.7 + 3.8 +import javax.swing.*; 3.9 + 3.10 +import static org.junit.jupiter.api.Assertions.assertEquals; 3.11 +import static org.junit.jupiter.api.Assertions.assertNull; 3.12 + 3.13 +class MainMenuTest { 3.14 + 3.15 + private final ActionHandler actionHandler = new ActionHandler(new Field()); 3.16 + 3.17 + private void testListeners(JMenuItem m) { 3.18 + final var listeners = m.getActionListeners(); 3.19 + assertEquals(1, listeners.length); 3.20 + assertEquals(actionHandler, listeners[0]); 3.21 + } 3.22 + 3.23 + @Test 3.24 + void testStructure() { 3.25 + final var menu = new MainMenu(actionHandler); 3.26 + 3.27 + assertEquals(2, menu.getMenuCount()); 3.28 + 3.29 + final var datei = menu.getMenu(0); 3.30 + assertEquals('D', datei.getMnemonic()); 3.31 + assertEquals(9, datei.getItemCount()); 3.32 + { 3.33 + final var item = datei.getItem(0); 3.34 + assertEquals("Neu", item.getText()); 3.35 + assertEquals('N', item.getMnemonic()); 3.36 + assertEquals(1, item.getRegisteredKeyStrokes().length); 3.37 + assertEquals(KeyStroke.getKeyStroke("control N"), item.getRegisteredKeyStrokes()[0]); 3.38 + testListeners(item); 3.39 + } 3.40 + { 3.41 + final var item = datei.getItem(1); 3.42 + assertEquals("Öffnen", item.getText()); 3.43 + assertEquals('F', item.getMnemonic()); 3.44 + assertEquals(1, item.getRegisteredKeyStrokes().length); 3.45 + assertEquals(KeyStroke.getKeyStroke("control O"), item.getRegisteredKeyStrokes()[0]); 3.46 + testListeners(item); 3.47 + } 3.48 + { 3.49 + final var item = datei.getItem(2); 3.50 + assertEquals("Speichern", item.getText()); 3.51 + assertEquals('S', item.getMnemonic()); 3.52 + assertEquals(1, item.getRegisteredKeyStrokes().length); 3.53 + assertEquals(KeyStroke.getKeyStroke("control S"), item.getRegisteredKeyStrokes()[0]); 3.54 + testListeners(item); 3.55 + } 3.56 + { 3.57 + final var item = datei.getItem(3); 3.58 + assertEquals("Speichern als...", item.getText()); 3.59 + assertEquals('A', item.getMnemonic()); 3.60 + testListeners(item); 3.61 + } 3.62 + 3.63 + assertNull(datei.getItem(4)); 3.64 + { 3.65 + final var item = datei.getItem(5); 3.66 + assertEquals("Prüfen", item.getText()); 3.67 + assertEquals('P', item.getMnemonic()); 3.68 + assertEquals(1, item.getRegisteredKeyStrokes().length); 3.69 + assertEquals(KeyStroke.getKeyStroke("control P"), item.getRegisteredKeyStrokes()[0]); 3.70 + testListeners(item); 3.71 + } 3.72 + { 3.73 + final var item = datei.getItem(6); 3.74 + assertEquals("Lösen", item.getText()); 3.75 + assertEquals('L', item.getMnemonic()); 3.76 + assertEquals(1, item.getRegisteredKeyStrokes().length); 3.77 + assertEquals(KeyStroke.getKeyStroke("control L"), item.getRegisteredKeyStrokes()[0]); 3.78 + testListeners(item); 3.79 + } 3.80 + assertNull(datei.getItem(7)); 3.81 + { 3.82 + final var item = datei.getItem(8); 3.83 + assertEquals("Beenden", item.getText()); 3.84 + assertEquals('E', item.getMnemonic()); 3.85 + testListeners(item); 3.86 + } 3.87 + 3.88 + final var info = menu.getMenu(1); 3.89 + assertEquals("Info", info.getText()); 3.90 + assertEquals('I', info.getMnemonic()); 3.91 + 3.92 + assertEquals(1, info.getItemCount()); 3.93 + final var about = info.getItem(0); 3.94 + assertEquals("Über...", about.getText()); 3.95 + assertEquals('B', about.getMnemonic()); 3.96 + assertEquals(1, about.getRegisteredKeyStrokes().length); 3.97 + assertEquals(KeyStroke.getKeyStroke("F1"), about.getRegisteredKeyStrokes()[0]); 3.98 + testListeners(about); 3.99 + } 3.100 +}
4.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 4.2 +++ b/src/test/java/de/uapcore/sudoku/SudokuTest.java Tue Jul 28 13:48:59 2020 +0200 4.3 @@ -0,0 +1,41 @@ 4.4 +package de.uapcore.sudoku; 4.5 + 4.6 +import org.junit.jupiter.api.AfterEach; 4.7 +import org.junit.jupiter.api.BeforeEach; 4.8 +import org.junit.jupiter.api.Test; 4.9 + 4.10 +import javax.swing.*; 4.11 + 4.12 +import static org.junit.jupiter.api.Assertions.assertEquals; 4.13 +import static org.junit.jupiter.api.Assertions.assertTrue; 4.14 + 4.15 +class SudokuTest { 4.16 + 4.17 + private Sudoku subject; 4.18 + 4.19 + @BeforeEach 4.20 + void init() { 4.21 + subject = new Sudoku(); 4.22 + } 4.23 + 4.24 + @AfterEach 4.25 + void destroy() { 4.26 + subject.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE); 4.27 + subject.dispose(); 4.28 + } 4.29 + 4.30 + @Test 4.31 + void testDefaultCloseOperation() { 4.32 + assertEquals(WindowConstants.EXIT_ON_CLOSE, subject.getDefaultCloseOperation()); 4.33 + } 4.34 + 4.35 + @Test 4.36 + void testMinimumSize() { 4.37 + assertEquals(subject.getSize(), subject.getMinimumSize()); 4.38 + } 4.39 + 4.40 + @Test 4.41 + void testLocationByPlattform() { 4.42 + assertTrue(subject.isLocationByPlatform()); 4.43 + } 4.44 +}
5.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 5.2 +++ b/src/test/resources/test-sudoku Tue Jul 28 13:48:59 2020 +0200 5.3 @@ -0,0 +1,9 @@ 5.4 +_ 1 _ 9 _ _ 8 _ _ 5.5 +_ _ _ _ _ 8 _ _ 4 5.6 +6 _ 5 _ _ _ 7 _ _ 5.7 +_ 9 _ _ 6 _ _ _ 8 5.8 +_ _ _ 2 _ 7 _ _ _ 5.9 +8 _ _ _ 3 _ _ 6 _ 5.10 +_ _ 2 _ _ _ 5 _ 3 5.11 +1 _ _ 4 _ _ _ _ _ 5.12 +_ _ 6 _ _ 2 _ 1 _