Merge pull request 'Highscores Funktionen testen' (#2) from GameScoresFeature into main
Reviewed-on: #2testBranch
commit
03a66f4271
|
|
@ -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