Merge pull request 'Score Anzeige GUI Test' (#10) from HitoriScorePanel into main

Reviewed-on: #10
testBranch
Arthur Kovis 2025-01-06 23:48:38 +01:00
commit c712b55ec8
1 changed files with 77 additions and 0 deletions

View File

@ -0,0 +1,77 @@
import GUI.GameUIController;
import GUI.HitoriScorePanel;
import javafx.scene.control.Button;
import javafx.scene.control.TextArea;
import org.junit.jupiter.api.*;
import org.junit.jupiter.api.extension.ExtendWith;
import org.testfx.framework.junit5.ApplicationExtension;
import static org.mockito.Mockito.*;
import static org.junit.jupiter.api.Assertions.*;
@ExtendWith(ApplicationExtension.class)
class HitoriScorePanelTest {
private HitoriScorePanel scorePanel;
private GameUIController controller;
@BeforeEach
void setUp() {
controller = mock(GameUIController.class);
scorePanel = new HitoriScorePanel(controller);
}
@Test
void testInitialization() {
assertNotNull(scorePanel);
assertTrue(scorePanel.getChildren().size() > 0);
}
@Test
void testUpdateHighScores() {
String testScores = "Player1: 100\nPlayer2: 200";
scorePanel.updateHighScores(testScores);
TextArea highScoreArea = findTextArea(scorePanel);
assertNotNull(highScoreArea);
assertEquals(testScores, highScoreArea.getText());
}
@Test
void testSaveButtonAction() {
var saveButton = findButtonByText(scorePanel, "Save Game");
assertNotNull(saveButton);
saveButton.fire();
verify(controller, times(1)).saveGame();
}
@Test
void testDeleteHighScoresButtonAction() {
var deleteButton = findButtonByText(scorePanel, "Delete High Scores");
assertNotNull(deleteButton);
deleteButton.fire();
verify(controller, times(1)).deleteHighScores();
}
@Test
void testHighScoreAreaNotEditable() {
TextArea highScoreArea = findTextArea(scorePanel);
assertNotNull(highScoreArea);
assertFalse(highScoreArea.isEditable());
}
private TextArea findTextArea(HitoriScorePanel panel) {
return (TextArea) panel.getChildren().stream()
.filter(node -> node instanceof TextArea)
.findFirst()
.orElse(null);
}
private Button findButtonByText(HitoriScorePanel panel, String text) {
return (Button) panel.getChildren().stream()
.filter(node -> node instanceof Button && ((Button) node).getText().equals(text))
.findFirst()
.orElse(null);
}
}