adds more tests

Tue, 28 Jul 2020 13:48:59 +0200

author
Mike Becker <universe@uap-core.de>
date
Tue, 28 Jul 2020 13:48:59 +0200
changeset 20
a95423d37588
parent 19
627e1c99bcf1
child 21
11cb2d9413d4

adds more tests

src/test/java/de/uapcore/sudoku/ButtonPanelTest.java file | annotate | diff | comparison | revisions
src/test/java/de/uapcore/sudoku/DocumentHandlerTest.java file | annotate | diff | comparison | revisions
src/test/java/de/uapcore/sudoku/MainMenuTest.java file | annotate | diff | comparison | revisions
src/test/java/de/uapcore/sudoku/SudokuTest.java file | annotate | diff | comparison | revisions
src/test/resources/test-sudoku file | annotate | diff | comparison | revisions
     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 _

mercurial