Highscores Funktionen testen

GameScoresFeature
3013016 2025-01-06 23:32:53 +01:00
parent 89a9a3c0a2
commit 2dcf36ff36
1 changed files with 115 additions and 0 deletions

View File

@ -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<String> 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<String> 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<String> 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<String> 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<String> 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<String> 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<String> 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<String> highScores = scores.getHighScoresWithAverage();
assertTrue(highScores.get(0).contains("Fast"));
assertTrue(highScores.get(1).contains("Medium"));
assertTrue(highScores.get(2).contains("Slow"));
}
}