Highscores Funktionen testen
parent
89a9a3c0a2
commit
2dcf36ff36
|
|
@ -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"));
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue