test_RLEReader.cpp - JulianKerignard/ProjetJeuDeLaVie_POO GitHub Wiki

Fichier test_RLEReader.cpp

Description

Ce fichier contient des tests unitaires pour la classe RLEReader en utilisant GoogleTest. Les tests vérifient les fonctionnalités de base de la classe RLEReader, y compris le chargement de fichiers RLE valides et invalides, et la vérification des cellules vivantes après le chargement.

Classe de Test

RLEReaderTest

Classe de test pour RLEReader.

class RLEReaderTest : public ::testing::Test {
protected:
    void SetUp() override {
        // Create a temporary RLE file for testing
        std::ofstream file("test_pattern.rle");
        file << "#N Test Pattern\n";
        file << "x = 3, y = 3\n";
        file << "bo$2bo$3o!\n";
        file.close();
    }

    void TearDown() override {
        // Remove the temporary RLE file after tests
        std::remove("test_pattern.rle");
    }
};
  • Objectif : Créer un fichier RLE temporaire avant chaque test et le supprimer après chaque test.
  • Méthodes :
    • SetUp() : Crée un fichier RLE temporaire avant chaque test.
    • TearDown() : Supprime le fichier RLE temporaire après chaque test.

Tests

1. RLEReaderTest, LoadFromFile

Test pour vérifier le chargement d'un fichier RLE valide.

TEST_F(RLEReaderTest, LoadFromFile) {
    Grid grid(10, 10);
    EXPECT_NO_THROW(RLEReader::loadFromFile("test_pattern.rle", grid));

    // Vérification des cellules vivantes au centre
    EXPECT_EQ(grid.getCellAt(4, 3).getCurrentState(), CellState::ALIVE);
    EXPECT_EQ(grid.getCellAt(5, 4).getCurrentState(), CellState::ALIVE);
    EXPECT_EQ(grid.getCellAt(3, 5).getCurrentState(), CellState::ALIVE);
    EXPECT_EQ(grid.getCellAt(4, 5).getCurrentState(), CellState::ALIVE);
    EXPECT_EQ(grid.getCellAt(5, 5).getCurrentState(), CellState::ALIVE);
}
  • Objectif : Vérifier que le fichier RLE est chargé sans générer d'exception et que les cellules sont correctement définies.
  • Assertions :
    • EXPECT_NO_THROW(RLEReader::loadFromFile("test_pattern.rle", grid)) : Vérifie que la méthode loadFromFile ne génère aucune exception.
    • Vérifie que les cellules spécifiques sont dans l'état ALIVE après le chargement du fichier RLE.

2. RLEReaderTest, LoadFromFileInvalid

Test pour vérifier le chargement d'un fichier RLE invalide.

TEST_F(RLEReaderTest, LoadFromFileInvalid) {
    Grid grid(10, 10);
    EXPECT_THROW(RLEReader::loadFromFile("non_existent.rle", grid), std::runtime_error);
}
  • Objectif : Vérifier que le chargement d'un fichier RLE invalide génère une exception.
  • Assertions :
    • EXPECT_THROW(RLEReader::loadFromFile("non_existent.rle", grid), std::runtime_error) : Vérifie que la méthode loadFromFile génère une std::runtime_error pour un fichier non existant.

3. RLEReaderTest, LoadFromFileReturnGrid

Test pour vérifier le retour d'une grille après le chargement d'un fichier RLE.

TEST_F(RLEReaderTest, LoadFromFileReturnGrid) {
    Grid grid = RLEReader::loadFromFile("test_pattern.rle");

    // Vérification des cellules vivantes au centre
    EXPECT_EQ(grid.getCellAt(4, 3).getCurrentState(), CellState::ALIVE);
    EXPECT_EQ(grid.getCellAt(5, 4).getCurrentState(), CellState::ALIVE);
    EXPECT_EQ(grid.getCellAt(3, 5).getCurrentState(), CellState::ALIVE);
    EXPECT_EQ(grid.getCellAt(4, 5).getCurrentState(), CellState::ALIVE);
    EXPECT_EQ(grid.getCellAt(5, 5).getCurrentState(), CellState::ALIVE);
}
  • Objectif : Vérifier que la méthode loadFromFile retourne correctement une grille avec les cellules correctement définies.
  • Assertions :
    • Vérifie que les cellules spécifiques sont dans l'état ALIVE après le chargement du fichier RLE.

Conclusion

☝️🤓Ces tests unitaires garantissent que la classe RLEReader fonctionne comme prévu en termes de chargement des fichiers RLE, de gestion des exceptions pour les fichiers non existants, et de vérification des cellules après le chargement. En utilisant GoogleTest, ces tests fournissent une validation automatique et fiable des fonctionnalités de la classe.☝️🤓