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

Tests unitaires de la sérialisation de niveau (round-trip avec LevelLoader, EX-EDIT-011). More...

#include <filesystem>
#include <string>
#include <vector>
#include <gtest/gtest.h>
#include "Core/Levels/GridPosition.h"
#include "Core/Levels/LevelLoader.h"
#include "Core/Levels/LevelWriter.h"
#include "Core/Levels/TileType.h"

Functions

 TEST (LevelWriterTest, PlaqueDePressionSurvitAuRoundTrip)
 Une plaque de pression survit au round-trip (sérialisation puis rechargement), TileType et liaison préservés (EX-GP-025).
 TEST (LevelWriterTest, CleEtPorteVerrouilleeSurvitAuRoundTrip)
 Une clé et une porte verrouillée survivent au round-trip (sérialisation puis rechargement), TileType et liaison préservés (EX-GP-023).
 TEST (LevelWriterTest, BlocPoussableSurvitAuRoundTrip)
 Un bloc poussable survit au round-trip (sérialisation puis rechargement), TileType préservé (EX-GP-022).
 TEST (LevelWriterTest, FondEtJeuDeSkinsSurviventAuRoundTrip)
 Le fond et le jeu de skins survivent au round-trip (sérialisation puis rechargement, EX-REN-044, EX-EDIT-024).
 TEST (LevelWriterTest, SansFondNiJeuDeSkinsLesClesSontOmisesDuJson)
 Un niveau sans fond ni jeu de skins n'écrit ni l'une ni l'autre clé dans le JSON produit (EX-REN-044, EX-EDIT-024) ; le champ "version", lui, est toujours écrit.
 TEST (LevelWriterTest, InterrupteurNonRelieRegenereUnIdentifiant)
 Un interrupteur non relié à une porte est tout de même sérialisé, avec un identifiant.
 TEST (LevelWriterTest, SaveToFileEcritUnFichierRechargeable)
 saveToFile écrit un fichier qui se recharge à l'identique (round-trip disque).
 TEST (LevelWriterTest, SaveToFileVersDossierInexistantEchoueProprement)
 saveToFile vers un dossier inexistant échoue proprement (récupérable, EX-NFR-040).
 TEST (LevelWriterTest, ChacunDesTroisModesDeCadrageSurvitAuRoundTrip)
 Chacun des trois modes de cadrage, avec une taille de salle personnalisée pour le mode par salle, survit à un aller-retour JSON à l'identique (EX-LVL-006).
 TEST (LevelWriterTest, ZonesDeCameraSurviventAuRoundTrip)
 Des zones de caméra dessinées à la main survivent à un aller-retour JSON, dans le même ordre (EX-LVL-007).
 TEST (LevelWriterTest, CadrageIdentiqueAuRepliResteOmisDuJson)
 Un niveau dont le cadrage résolu coïncide avec la règle de repli est réécrit sans le champ "cameraFraming" : aucune régression de round-trip pour les niveaux jamais retouchés sur ce point (EX-LVL-006).

Detailed Description

Tests unitaires de la sérialisation de niveau (round-trip avec LevelLoader, EX-EDIT-011).

Function Documentation

◆ TEST() [1/11]

TEST ( LevelWriterTest ,
BlocPoussableSurvitAuRoundTrip  )

Un bloc poussable survit au round-trip (sérialisation puis rechargement), TileType préservé (EX-GP-022).

Cas de test : Un bloc poussable survit au round-trip.
Categorie : Unitaire · Level Writer
Criticite : Majeur
Etapes :
1. Mettre en place le contexte du test (arrangement).
2. Executer le scenario et verifier les assertions.
Resultat attendu : Un bloc poussable survit au round-trip : TileType préservé.

◆ TEST() [2/11]

TEST ( LevelWriterTest ,
CadrageIdentiqueAuRepliResteOmisDuJson  )

Un niveau dont le cadrage résolu coïncide avec la règle de repli est réécrit sans le champ "cameraFraming" : aucune régression de round-trip pour les niveaux jamais retouchés sur ce point (EX-LVL-006).

Cas de test : Un cadrage identique au repli reste omis du JSON écrit.
Categorie : Unitaire · Level Writer
Criticite : Majeur
Etapes :
1. Charger un petit niveau sans champ cameraFraming (repli : niveau entier).

  1. Sérialiser.
    Resultat attendu : Le JSON produit ne contient pas le champ "cameraFraming".

◆ TEST() [3/11]

TEST ( LevelWriterTest ,
ChacunDesTroisModesDeCadrageSurvitAuRoundTrip  )

Chacun des trois modes de cadrage, avec une taille de salle personnalisée pour le mode par salle, survit à un aller-retour JSON à l'identique (EX-LVL-006).

Cas de test : Chacun des trois modes de cadrage survit au round-trip.
Categorie : Unitaire · Level Writer
Criticite : Majeur
Etapes :
1. Charger un niveau déclarant chacun des trois modes de cadrage.
2. Sérialiser puis recharger.
Resultat attendu : Le cadrage résolu du niveau rechargé est identique à celui du niveau d'origine, y compris la taille de salle personnalisée du mode par salle.

◆ TEST() [4/11]

TEST ( LevelWriterTest ,
CleEtPorteVerrouilleeSurvitAuRoundTrip  )

Une clé et une porte verrouillée survivent au round-trip (sérialisation puis rechargement), TileType et liaison préservés (EX-GP-023).

Cas de test : Une clé et une porte verrouillée survivent au round-trip.
Categorie : Unitaire · Level Writer
Criticite : Majeur
Etapes :
1. Mettre en place le contexte du test (arrangement).
2. Executer le scenario et verifier les assertions.
Resultat attendu : La clé et la porte verrouillée survivent au round-trip : TileType et liaison préservés.

◆ TEST() [5/11]

TEST ( LevelWriterTest ,
FondEtJeuDeSkinsSurviventAuRoundTrip  )

Le fond et le jeu de skins survivent au round-trip (sérialisation puis rechargement, EX-REN-044, EX-EDIT-024).

Cas de test : Le fond et le jeu de skins survivent au round-trip.
Categorie : Unitaire · Level Writer
Criticite : Majeur
Etapes :
1. Mettre en place le contexte du test (arrangement).
2. Executer le scenario et verifier les assertions.
Resultat attendu : Le fond et le jeu de skins survivent au round-trip.

◆ TEST() [6/11]

TEST ( LevelWriterTest ,
InterrupteurNonRelieRegenereUnIdentifiant  )

Un interrupteur non relié à une porte est tout de même sérialisé, avec un identifiant.

Cas de test : Un interrupteur non relié à une porte est tout de même sérialisé, avec un identifiant.
Categorie : Unitaire · Level Writer
Criticite : Majeur
Etapes :
1. Mettre en place le contexte du test (arrangement).
2. Executer le scenario et verifier les assertions.
Resultat attendu : Un interrupteur non relié à une porte est tout de même sérialisé, avec un identifiant.

◆ TEST() [7/11]

TEST ( LevelWriterTest ,
PlaqueDePressionSurvitAuRoundTrip  )

Une plaque de pression survit au round-trip (sérialisation puis rechargement), TileType et liaison préservés (EX-GP-025).

Cas de test : Une plaque de pression survit au round-trip.
Categorie : Unitaire · Level Writer
Criticite : Majeur
Etapes :
1. Mettre en place le contexte du test (arrangement).
2. Executer le scenario et verifier les assertions.
Resultat attendu : Une plaque de pression survit au round-trip : TileType et liaison préservés.

◆ TEST() [8/11]

TEST ( LevelWriterTest ,
SansFondNiJeuDeSkinsLesClesSontOmisesDuJson  )

Un niveau sans fond ni jeu de skins n'écrit ni l'une ni l'autre clé dans le JSON produit (EX-REN-044, EX-EDIT-024) ; le champ "version", lui, est toujours écrit.

Cas de test : Sans fond ni jeu de skins, les cles sont absentes du JSON produit.
Categorie : Unitaire · Level Writer
Criticite : Mineur
Etapes :
1. Mettre en place le contexte du test (arrangement).
2. Executer le scenario et verifier les assertions.
Resultat attendu : Sans fond ni jeu de skins, les cles sont absentes du JSON produit.

◆ TEST() [9/11]

TEST ( LevelWriterTest ,
SaveToFileEcritUnFichierRechargeable  )

saveToFile écrit un fichier qui se recharge à l'identique (round-trip disque).

Cas de test : saveToFile écrit un fichier qui se recharge à l'identique (round-trip disque).
Categorie : Unitaire · Level Writer
Criticite : Majeur
Etapes :
1. Mettre en place le contexte du test (arrangement).
2. Executer le scenario et verifier les assertions.
Resultat attendu : saveToFile écrit un fichier qui se recharge à l'identique (round-trip disque).

◆ TEST() [10/11]

TEST ( LevelWriterTest ,
SaveToFileVersDossierInexistantEchoueProprement  )

saveToFile vers un dossier inexistant échoue proprement (récupérable, EX-NFR-040).

Cas de test : saveToFile vers un dossier inexistant échoue proprement (récupérable, EX-NFR-040).
Categorie : Unitaire · Level Writer
Criticite : Majeur
Etapes :
1. Mettre en place le contexte du test (arrangement).
2. Executer le scenario et verifier les assertions.
Resultat attendu : saveToFile vers un dossier inexistant échoue proprement (récupérable, EX-NFR-040).

◆ TEST() [11/11]

TEST ( LevelWriterTest ,
ZonesDeCameraSurviventAuRoundTrip  )

Des zones de caméra dessinées à la main survivent à un aller-retour JSON, dans le même ordre (EX-LVL-007).

Cas de test : Les zones de caméra dessinées à la main survivent au round-trip.
Categorie : Unitaire · Level Writer
Criticite : Majeur
Etapes :
1. Charger un niveau déclarant deux zones de caméra.
2. Sérialiser puis recharger.
Resultat attendu : Les zones rechargées sont identiques, dans le même ordre.