diff --git a/src/main/java/de/tims/tictactoe/GameLogic.java b/src/main/java/de/tims/tictactoe/GameLogic.java index 0becf7a..e933b98 100644 --- a/src/main/java/de/tims/tictactoe/GameLogic.java +++ b/src/main/java/de/tims/tictactoe/GameLogic.java @@ -14,7 +14,7 @@ public class GameLogic implements ActionListener { private char[][] board; private final char[] occupiedFields = { PLAYER_1, PLAYER_2 }; - private JButton[] fields; + private JButton[][] fields; private JPanel contentPanel; public GameLogic(int size) { @@ -105,26 +105,33 @@ public class GameLogic implements ActionListener { } public JPanel generateGUI() { - this.fields = new JButton[(int) Math.pow(this.board.length, 2)]; + this.fields = new JButton[this.board.length][this.board.length]; this.contentPanel = new JPanel(); this.contentPanel.setLayout(new GridLayout(this.board.length, this.board.length)); for (int i = 0; i < this.fields.length; i++) { - this.fields[i] = new JButton(); - this.fields[i].addActionListener(this); - this.contentPanel.add(this.fields[i]); + for (int j = 0; j < this.fields.length; j++) { + this.fields[i][j] = new JButton(); + this.fields[i][j].addActionListener(this); + this.contentPanel.add(this.fields[i][j]); + } } return this.contentPanel; } - public JButton getGUIField(int number) { - // TODO Auto-generated method stub - return this.fields[number]; + public JButton getGUIField(int column, int row) { + return this.fields[column][row]; } @Override public void actionPerformed(ActionEvent e) { - // TODO Auto-generated method stub + for (int i = 0; i < this.fields.length; i++) { + for (int j = 0; j < this.fields[0].length; j++) { + if (e.getSource() == this.fields[i][j]) { + this.fields[i][j].setText("clicked"); + } + } + } } } diff --git a/src/test/java/de/tims/tictactoe/GameLogicTest.java b/src/test/java/de/tims/tictactoe/GameLogicTest.java index fddac3c..276deb9 100644 --- a/src/test/java/de/tims/tictactoe/GameLogicTest.java +++ b/src/test/java/de/tims/tictactoe/GameLogicTest.java @@ -81,18 +81,6 @@ class GameLogicTest { assertEquals(expectedResult, realResult); } - @Test - void buttonStateTest() { - boolean expectedResult = true; - game.generateGUI(); - - JButton currentField = game.getGUIField(0); - ((JButton) currentField).doClick(); - boolean realResult = currentField.isEnabled(); - - assertEquals(expectedResult, realResult); - } - @ParameterizedTest(name = "[{index}] {0} -> {2} fields") @MethodSource("testCasesForCountPlayfields") void fieldCountTest(String testName, int size, int expectedResult) { @@ -136,6 +124,18 @@ class GameLogicTest { assertEquals(expectedResult, realResult); } + @ParameterizedTest(name = "[{index}] {0}: should be {1}") + @MethodSource("testCasesForCheckButtonState") + void buttonStateTest(String testName, boolean expectedResult, boolean doClick, int column, int row) { + game.generateGUI(); + JButton currentField = game.getGUIField(column, row); + + if (doClick) currentField.doClick(); + boolean realResult = !currentField.getText().isEmpty(); + + assertEquals(expectedResult, realResult); + } + private static Stream testCasesForCountPlayfields() { return Stream.of( Arguments.of("1x1 board with too few fields", 1, 9), @@ -285,5 +285,12 @@ class GameLogicTest { {'x', 'o', 'x'}}) ); } + + private static Stream testCasesForCheckButtonState() { + return Stream.of( + Arguments.of("trigger gui field [0][0]", true, true, 0, 0), + Arguments.of("dont't trigger gui field [1][1]", false, false, 1, 1) + ); + } }