test_Game.cpp - JulianKerignard/ProjetJeuDeLaVie_POO GitHub Wiki
test_Game.cpp
Fichier Description
Ce fichier contient des tests unitaires pour la classe Game
en utilisant GoogleTest. Les tests vérifient les fonctionnalités de base de la classe Game
, y compris la construction à partir de différents types de fichiers, la configuration de la grille, et la gestion des délais entre les itérations.
Fonctions
1. createTempConfigFile
Fonction helper pour créer un fichier de configuration temporaire.
void createTempConfigFile(const std::string& filename, const std::string& content) {
std::ofstream file(filename);
file << content;
file.close();
}
- Objectif : Créer un fichier temporaire contenant une configuration de grille.
- Paramètres :
filename
: Nom du fichier à créer.content
: Contenu à écrire dans le fichier.
Tests
2. GameTest, ConstructorWithStandardFile
Test pour vérifier le constructeur de Game
avec un fichier standard.
TEST(GameTest, ConstructorWithStandardFile) {
std::string filename = "temp_config.txt";
std::string content = "5 5\n0 1 0 0 0\n0 0 0 0 0\n0 0 2 0 0\n0 0 0 0 0\n0 0 0 0 0\n";
createTempConfigFile(filename, content);
Game game(filename, DisplayMode::CONSOLE, FileType::STANDARD);
EXPECT_EQ(game.getCurrentIteration(), 0);
EXPECT_FALSE(game.isGameRunning());
std::remove(filename.c_str());
}
- Objectif : Vérifier que le constructeur initialise correctement un objet
Game
avec un fichier de configuration standard. - Assertions :
EXPECT_EQ(game.getCurrentIteration(), 0)
: Vérifie que l'itération courante est0
.EXPECT_FALSE(game.isGameRunning())
: Vérifie que le jeu n'est pas en cours d'exécution.
3. GameTest, ConstructorWithRLEFile
Test pour vérifier le constructeur de Game
avec un fichier RLE.
TEST(GameTest, ConstructorWithRLEFile) {
std::string filename = "temp_config.rle";
std::string content = "#N Glider\n#O Richard K. Guy\n#C A small spaceship that moves diagonally.\n#C The smallest, most common, and first discovered spaceship.\n#C www.conwaylife.com/wiki/index.php?title=Glider\nx = 3, y = 3, rule = B3/S23\nbo$2bo$3o!";
createTempConfigFile(filename, content);
Game game(filename, DisplayMode::CONSOLE, FileType::RLE);
EXPECT_EQ(game.getCurrentIteration(), 0);
EXPECT_FALSE(game.isGameRunning());
std::remove(filename.c_str());
}
- Objectif : Vérifier que le constructeur initialise correctement un objet
Game
avec un fichier de configuration RLE. - Assertions :
EXPECT_EQ(game.getCurrentIteration(), 0)
: Vérifie que l'itération courante est0
.EXPECT_FALSE(game.isGameRunning())
: Vérifie que le jeu n'est pas en cours d'exécution.
4. GameTest, ConstructorWithDimensions
Test pour vérifier le constructeur de Game
avec des dimensions spécifiées.
TEST(GameTest, ConstructorWithDimensions) {
std::string filename = "temp_config.txt";
std::string content = "5 5\n0 1 0 0 0\n0 0 0 0 0\n0 0 2 0 0\n0 0 0 0 0\n0 0 0 0 0\n";
createTempConfigFile(filename, content);
Game game(filename, DisplayMode::CONSOLE, FileType::STANDARD, 5, 5);
EXPECT_EQ(game.getCurrentIteration(), 0);
EXPECT_FALSE(game.isGameRunning());
std::remove(filename.c_str());
}
- Objectif : Vérifier que le constructeur initialise correctement un objet
Game
avec des dimensions spécifiées pour la grille. - Assertions :
EXPECT_EQ(game.getCurrentIteration(), 0)
: Vérifie que l'itération courante est0
.EXPECT_FALSE(game.isGameRunning())
: Vérifie que le jeu n'est pas en cours d'exécution.
5. GameTest, SetIterationDelay
Test pour vérifier le réglage du délai entre les itérations.
TEST(GameTest, SetIterationDelay) {
std::string filename = "temp_config.txt";
std::string content = "5 5\n0 1 0 0 0\n0 0 0 0 0\n0 0 2 0 0\n0 0 0 0 0\n0 0 0 0 0\n";
createTempConfigFile(filename, content);
Game game(filename, DisplayMode::CONSOLE, FileType::STANDARD);
game.setIterationDelay(200.0f);
EXPECT_EQ(game.getIterationDelay(), 200.0f);
std::remove(filename.c_str());
}
- Objectif : Vérifier que le délai entre les itérations peut être correctement réglé.
- Assertions :
EXPECT_EQ(game.getIterationDelay(), 200.0f)
: Vérifie que le délai entre les itérations est200.0f
.
6. GameTest, UpdateIterationDelay
Test pour vérifier la mise à jour du délai entre les itérations.
TEST(GameTest, UpdateIterationDelay) {
std::string filename = "temp_config.txt";
std::string content = "5 5\n0 1 0 0 0\n0 0 0 0 0\n0 0 2 0 0\n0 0 0 0 0\n0 0 0 0 0\n";
createTempConfigFile(filename, content);
Game game(filename, DisplayMode::CONSOLE, FileType::STANDARD);
game.setIterationDelay(200.0f);
game.updateIterationDelay(50.0f);
EXPECT_EQ(game.getIterationDelay(), 250.0f);
std::remove(filename.c_str());
}
- Objectif : Vérifier que le délai entre les itérations peut être mis à jour correctement.
- Assertions :
EXPECT_EQ(game.getIterationDelay(), 250.0f)
: Vérifie que le délai entre les itérations est250.0f
après mise à jour.
7. main
Fonction principale pour exécuter tous les tests.
int main(int argc, char **argv) {
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
- Objectif : Initialiser GoogleTest et exécuter tous les tests.
Conclusion
☝️🤓Ces tests unitaires garantissent que la classe Game
fonctionne comme prévu en termes de construction, de configuration de la grille, et de gestion des délais entre les itérations. En utilisant GoogleTest, ces tests fournissent une validation automatique et fiable des fonctionnalités de la classe.☝️🤓