JustAnotherDnDGame 0.1.0
Jeu de rôle tactique au d20, vue de dessus, en C++/Qt
Loading...
Searching...
No Matches
test_file_log_sink.cpp File Reference

Tests unitaires de core::FileLogSink. More...

#include <cstdint>
#include <fstream>
#include <sstream>
#include <string>
#include <system_error>
#include <gtest/gtest.h>
#include "Core/Diagnostics/FileLogSink.h"

Functions

 TEST_F (FileLogSinkTest, EcritureEstPersisteeImmediatement)
 Écrire un message via FileLogSink::write le persiste immédiatement dans le fichier, lisible sans fermer le sink au préalable (flush immédiat).
 TEST_F (FileLogSinkTest, MessagesSuccessifsUneLigneChacunOrdrePreserve)
 Plusieurs messages écrits successivement apparaissent dans le fichier, une ligne chacun, dans l'ordre d'écriture.
 TEST_F (FileLogSinkTest, CreeLesDossiersParentsManquants)
 Construire un FileLogSink sur un chemin dont les dossiers parents n'existent pas encore les crée, plutôt que d'échouer.
 TEST_F (FileLogSinkTest, EcraseParDefautCompleteAvecAppend)
 Par défaut, construire un FileLogSink sur un fichier déjà existant l'écrase (pas d'ajout à la suite) ; avec append = true, il complète le fichier existant.
 TEST_F (FileLogSinkTest, CheminInvalideSinkFermeEtWriteSilencieux)
 Un chemin impossible à ouvrir (dossier parent qui ne peut pas être créé) laisse le sink fermé (isOpen() == false) sans lever d'exception ; write() devient alors un no-op silencieux — journaliser ne doit jamais faire échouer l'appelant.

Detailed Description

Tests unitaires de core::FileLogSink.

Function Documentation

◆ TEST_F() [1/5]

TEST_F ( FileLogSinkTest ,
CheminInvalideSinkFermeEtWriteSilencieux  )

Un chemin impossible à ouvrir (dossier parent qui ne peut pas être créé) laisse le sink fermé (isOpen() == false) sans lever d'exception ; write() devient alors un no-op silencieux — journaliser ne doit jamais faire échouer l'appelant.

Cas de test : FileLogSink : chemin invalide, sink fermé, write() silencieux.
Categorie : Unitaire · Diagnostics
Criticite : Mineur
Etapes :
1. Construire un FileLogSink dont un segment du chemin est en réalité un fichier existant (impossible à traverser comme dossier).
2. Appeler write().
Resultat attendu : isOpen() == false ; write() ne lève rien et ne crée aucun fichier.

◆ TEST_F() [2/5]

TEST_F ( FileLogSinkTest ,
CreeLesDossiersParentsManquants  )

Construire un FileLogSink sur un chemin dont les dossiers parents n'existent pas encore les crée, plutôt que d'échouer.

Cas de test : FileLogSink : crée les dossiers parents manquants.
Categorie : Unitaire · Diagnostics
Criticite : Mineur
Etapes :
1. Construire un FileLogSink sur dir/sous/dossier/session.log (dossiers inexistants).
2. Écrire un message.
Resultat attendu : Le sink s'ouvre correctement et le fichier contient le message.

◆ TEST_F() [3/5]

TEST_F ( FileLogSinkTest ,
EcraseParDefautCompleteAvecAppend  )

Par défaut, construire un FileLogSink sur un fichier déjà existant l'écrase (pas d'ajout à la suite) ; avec append = true, il complète le fichier existant.

Cas de test : FileLogSink : écrase par défaut, complète avec append = true.
Categorie : Unitaire · Diagnostics
Criticite : Mineur
Etapes :
1. Écrire un fichier avec un premier sink.
2. Rouvrir sur le même chemin sans append, puis avec append = true.
Resultat attendu : Sans append, l'ancien contenu disparaît ; avec append, il est conservé et complété.

◆ TEST_F() [4/5]

TEST_F ( FileLogSinkTest ,
EcritureEstPersisteeImmediatement  )

Écrire un message via FileLogSink::write le persiste immédiatement dans le fichier, lisible sans fermer le sink au préalable (flush immédiat).

Cas de test : FileLogSink : écriture persistée immédiatement (flush).
Categorie : Unitaire · Diagnostics
Criticite : Majeur
Etapes :
1. Construire un FileLogSink sur un chemin dans un dossier temporaire.
2. Écrire un message.
3. Relire le fichier sans détruire le sink.
Resultat attendu : Le fichier contient le message écrit.

◆ TEST_F() [5/5]

TEST_F ( FileLogSinkTest ,
MessagesSuccessifsUneLigneChacunOrdrePreserve  )

Plusieurs messages écrits successivement apparaissent dans le fichier, une ligne chacun, dans l'ordre d'écriture.

Cas de test : FileLogSink : plusieurs messages, une ligne chacun, ordre préservé.
Categorie : Unitaire · Diagnostics
Criticite : Majeur
Etapes :
1. Construire un FileLogSink.
2. Écrire trois messages successifs.
3. Relire le fichier.
Resultat attendu : Trois lignes, dans l'ordre d'écriture.