test_RLEReader.cpp - JulianKerignard/ProjetJeuDeLaVie_POO GitHub Wiki
test_RLEReader.cpp
Fichier 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éthodeloadFromFile
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éthodeloadFromFile
génère unestd::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.
- Vérifie que les cellules spécifiques sont dans l'état
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.☝️🤓