test_Game.cpp - JulianKerignard/ProjetJeuDeLaVie_POO GitHub Wiki

Fichier test_Game.cpp

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 est 0.
    • 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 est 0.
    • 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 est 0.
    • 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 est 200.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 est 250.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.☝️🤓