From 2dcf36ff36b89c4d7c1285a4045a88b8488029b2 Mon Sep 17 00:00:00 2001 From: 3013016 Date: Mon, 6 Jan 2025 23:32:53 +0100 Subject: [PATCH] Highscores Funktionen testen --- src/test/java/HitoriGameScoresTest.java | 115 ++++++++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 src/test/java/HitoriGameScoresTest.java diff --git a/src/test/java/HitoriGameScoresTest.java b/src/test/java/HitoriGameScoresTest.java new file mode 100644 index 0000000..8b0d4bc --- /dev/null +++ b/src/test/java/HitoriGameScoresTest.java @@ -0,0 +1,115 @@ +import domain.HitoriGameScores; +import org.junit.jupiter.api.*; +import static org.junit.jupiter.api.Assertions.*; +import java.io.File; +import java.util.List; + +class HitoriGameScoresTest { + private HitoriGameScores scores; + + @BeforeEach + void setUp() { + scores = new HitoriGameScores(); + new File("highscores.dat").delete(); // Ensure clean state + } + + @AfterEach + void tearDown() { + new File("highscores.dat").delete(); // Cleanup + } + + @Test + void testAddHighScore() { + scores.addHighScore("TestPlayer", 100, 2); + List highScores = scores.getHighScoresWithAverage(); + + assertFalse(highScores.isEmpty()); + assertTrue(highScores.get(0).contains("TestPlayer")); + assertTrue(highScores.get(0).contains("100s")); + assertTrue(highScores.get(0).contains("2")); + } + + @Test + void testMultipleHighScores() { + scores.addHighScore("Player1", 100, 1); + scores.addHighScore("Player2", 200, 2); + scores.addHighScore("Player3", 150, 3); + + List highScores = scores.getHighScoresWithAverage(); + assertEquals(4, highScores.size()); // 3 scores + average line + + // Should be sorted by time + assertTrue(highScores.get(0).contains("Player1")); + assertTrue(highScores.get(1).contains("Player3")); + assertTrue(highScores.get(2).contains("Player2")); + } + + @Test + void testDeleteHighScores() { + scores.addHighScore("Player1", 100, 1); + scores.addHighScore("Player2", 200, 2); + + scores.deleteHighScores(); + List highScores = scores.getHighScoresWithAverage(); + + assertEquals(1, highScores.size()); // Only average line remains + assertTrue(highScores.get(0).contains("Average Time: 0")); + } + + @Test + void testAverageCalculation() { + scores.addHighScore("Player1", 100, 1); + scores.addHighScore("Player2", 200, 2); + + List highScores = scores.getHighScoresWithAverage(); + String averageLine = highScores.get(highScores.size() - 1); + assertTrue(averageLine.contains("Average Time: 150.0")); + } + + @Test + void testSaveAndLoadHighScores() { + scores.addHighScore("Player1", 100, 1); + scores.addHighScore("Player2", 200, 2); + scores.saveHighScoresToFile(); + + HitoriGameScores newScores = new HitoriGameScores(); + newScores.loadHighScoresFromFile(); + List loadedScores = newScores.getHighScoresWithAverage(); + + assertFalse(loadedScores.isEmpty()); + assertTrue(loadedScores.get(0).contains("Player1")); + assertTrue(loadedScores.get(1).contains("Player2")); + } + + @Test + void testLoadWithNoFile() { + scores.loadHighScoresFromFile(); // No file exists + List highScores = scores.getHighScoresWithAverage(); + + assertEquals(1, highScores.size()); // Only average line + assertTrue(highScores.get(0).contains("Average Time: 0")); + } + + @Test + void testTop10Limit() { + // Add more than 10 scores + for (int i = 0; i < 15; i++) { + scores.addHighScore("Player" + i, 100 + i, i); + } + + List highScores = scores.getHighScoresWithAverage(); + assertEquals(11, highScores.size()); // 10 scores + average line + } + + @Test + void testScoreSorting() { + scores.addHighScore("Fast", 50, 0); + scores.addHighScore("Medium", 100, 1); + scores.addHighScore("Slow", 150, 2); + + List highScores = scores.getHighScoresWithAverage(); + assertTrue(highScores.get(0).contains("Fast")); + assertTrue(highScores.get(1).contains("Medium")); + assertTrue(highScores.get(2).contains("Slow")); + } +} -- 2.51.0