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

Tests unitaires du catalogue de skins (LOT-42, EX-EDIT-042, EX-EDIT-024). More...

#include <algorithm>
#include <cstring>
#include <filesystem>
#include <fstream>
#include <map>
#include <optional>
#include <string>
#include <utility>
#include <vector>
#include <gtest/gtest.h>
#include "Core/Levels/TileType.h"
#include "Core/Levels/TileTypeName.h"
#include "HMI/Graphics/SkinCatalog.h"
#include "HMI/Graphics/TextureAtlas.h"
#include "HMI/Graphics/TileAutotile.h"

Functions

 TEST (SkinCatalogTest, AllerRetourDuNomDeMode)
 Le nom persiste d'un mode de skin fait l'aller-retour sans perte.
 TEST (SkinCatalogTest, AllerRetourLectureEcriture)
 Lecture, ecriture puis relecture rendent un catalogue identique.
 TEST (SkinCatalogTest, ResolutionDansUnJeuExistant)
 La resolution rend l'entree du jeu demande, avec son mode.
 TEST (SkinCatalogTest, JeuInexistantRetombeSurLeDefaut)
 Un jeu inexistant retombe sur le jeu par defaut.
 TEST (SkinCatalogTest, TypeNonSkinneNeResoudRien)
 Un type non skinne ne resout rien, sans erreur.
 TEST (SkinCatalogTest, JsonMalformeSignale)
 Un JSON malforme est signale sans exception.
 TEST (SkinCatalogTest, VersionInconnueRefusee)
 Une version de format inconnue est refusee, pas lue au mieux.
 TEST (SkinCatalogTest, TypeOuModeInconnuSignale)
 Un type de tuile ou un mode inconnu est signale.
 TEST (SkinCatalogTest, DefautInexistantSignale)
 Un jeu par defaut inexistant est signale.
 TEST (SkinCatalogTest, ModeAbsentVautSingle)
 Un mode absent vaut « single ».
 TEST (SkinCatalogTest, FichierAbsentSignale)
 Un fichier absent est signale comme tel, sans exception.
 TEST (SkinCatalogTest, EcritureSurDisqueRelisible)
 L'ecriture sur disque produit un fichier relisible.
 TEST (SkinCatalogTest, AssignationPuisRetrait)
 Assigner et retirer un skin modifie la resolution en consequence.
 TEST (SkinCatalogTest, OrdreDesJeuxStable)
 Les noms de jeux sont rendus dans un ordre stable.
 TEST (SkinCatalogTest, CatalogueLivreValide)
 Le catalogue livre avec le jeu se lit sans erreur.
 TEST (SkinCatalogTest, AssetsDuCatalogueLivreConformes)
 Chaque asset reference par le catalogue livre existe et respecte son contrat.

Detailed Description

Tests unitaires du catalogue de skins (LOT-42, EX-EDIT-042, EX-EDIT-024).

Function Documentation

◆ TEST() [1/16]

TEST ( SkinCatalogTest ,
AllerRetourDuNomDeMode  )

Le nom persiste d'un mode de skin fait l'aller-retour sans perte.

Cas de test : Le nom persiste d'un mode de skin fait l'aller-retour sans perte.
Categorie : Unitaire · Catalogue de skins
Criticite : Majeur
Etapes :
1. Convertir chaque mode en nom, puis le nom en mode.
Resultat attendu : Le mode d'origine est retrouve ; un nom inconnu est refuse.

◆ TEST() [2/16]

TEST ( SkinCatalogTest ,
AllerRetourLectureEcriture  )

Lecture, ecriture puis relecture rendent un catalogue identique.

Cas de test : Un catalogue fait l'aller-retour lecture -> ecriture -> lecture sans perte.
Categorie : Unitaire · Catalogue de skins
Criticite : Critique
Etapes :
1. Lire le catalogue de reference (deux jeux).

  1. Le reserialiser puis le relire.
    Resultat attendu : Les jeux, le defaut et toutes les assignations sont identiques.

◆ TEST() [3/16]

TEST ( SkinCatalogTest ,
AssetsDuCatalogueLivreConformes  )

Chaque asset reference par le catalogue livre existe et respecte son contrat.

Cas de test : Chaque asset reference par le catalogue livre existe aux bonnes dimensions.
Categorie : Unitaire · Catalogue de skins
Criticite : Critique
Etapes :
1. Lire le catalogue livre et parcourir toutes les assignations de tous les jeux.

  1. Pour chaque asset, verifier sa presence dans Assets/Skins puis ses dimensions.
    Resultat attendu : Un skin single fait une case (ou une bande horizontale de cases pour un skin single ANIME, LOT-46), une planche a raccords en fait 4x4.

◆ TEST() [4/16]

TEST ( SkinCatalogTest ,
AssignationPuisRetrait  )

Assigner et retirer un skin modifie la resolution en consequence.

Cas de test : Assigner puis retirer un skin change la resolution du type concerne.
Categorie : Unitaire · Catalogue de skins
Criticite : Critique
Etapes :
1. Assigner un asset a Danger dans un catalogue vide, puis resoudre.

  1. Retirer l'assignation, puis resoudre a nouveau.
    Resultat attendu : La premiere resolution rend l'asset ; la seconde ne rend plus rien.

◆ TEST() [5/16]

TEST ( SkinCatalogTest ,
CatalogueLivreValide  )

Le catalogue livre avec le jeu se lit sans erreur.

Cas de test : Le fichier de skins livre avec le jeu se lit sans erreur.
Categorie : Unitaire · Catalogue de skins
Criticite : Critique
Etapes :
1. Lire Source/Elements/Assets/skins.json depuis les sources.
Resultat attendu : La lecture reussit et le jeu par defaut designe un jeu existant.

◆ TEST() [6/16]

TEST ( SkinCatalogTest ,
DefautInexistantSignale  )

Un jeu par defaut inexistant est signale.

Cas de test : Un jeu par defaut qui ne designe aucun jeu existant est signale.
Categorie : Unitaire · Catalogue de skins
Criticite : Majeur
Etapes :
1. Lire un catalogue dont le champ « defaut » cite un jeu absent de « jeux ».
Resultat attendu : La lecture echoue avec le code MalformedStructure.

◆ TEST() [7/16]

TEST ( SkinCatalogTest ,
EcritureSurDisqueRelisible  )

L'ecriture sur disque produit un fichier relisible.

Cas de test : Le catalogue ecrit sur disque est relu a l'identique.
Categorie : Unitaire · Catalogue de skins
Criticite : Critique
Etapes :
1. Ecrire le catalogue de reference dans un fichier temporaire.

  1. Le relire depuis ce fichier.
    Resultat attendu : La relecture reussit et rend les memes assignations ; le fichier est supprime.

◆ TEST() [8/16]

TEST ( SkinCatalogTest ,
FichierAbsentSignale  )

Un fichier absent est signale comme tel, sans exception.

Cas de test : Un fichier de skins absent est signale par un code dedie, sans exception.
Categorie : Unitaire · Catalogue de skins
Criticite : Majeur
Etapes :
1. Lire un chemin qui n'existe pas.
Resultat attendu : La lecture echoue avec le code FileNotFound, sans exception.

◆ TEST() [9/16]

TEST ( SkinCatalogTest ,
JeuInexistantRetombeSurLeDefaut  )

Un jeu inexistant retombe sur le jeu par defaut.

Cas de test : Un jeu inexistant retombe sur le jeu par defaut plutot que de ne rien rendre.
Categorie : Unitaire · Catalogue de skins
Criticite : Majeur
Etapes :
1. Resoudre Solid dans un jeu qui n'existe pas.

  1. Resoudre Solid en demandant explicitement le defaut (nom vide).
    Resultat attendu : Les deux rendent l'entree du jeu « foret », designe par defaut.

◆ TEST() [10/16]

TEST ( SkinCatalogTest ,
JsonMalformeSignale  )

Un JSON malforme est signale sans exception.

Cas de test : Un fichier de skins malforme est signale sans lever d'exception.
Categorie : Unitaire · Catalogue de skins
Criticite : Critique
Etapes :
1. Lire une chaine qui n'est pas du JSON, puis un JSON dont la racine est un tableau.
Resultat attendu : Les deux lectures echouent avec le code ParseError, sans exception.

◆ TEST() [11/16]

TEST ( SkinCatalogTest ,
ModeAbsentVautSingle  )

Un mode absent vaut « single ».

Cas de test : Une entree sans champ « mode » est lue en mode image unique.
Categorie : Unitaire · Catalogue de skins
Criticite : Mineur
Etapes :
1. Lire une entree ne portant que le champ « asset ».
Resultat attendu : Elle resout en mode Single.

◆ TEST() [12/16]

TEST ( SkinCatalogTest ,
OrdreDesJeuxStable  )

Les noms de jeux sont rendus dans un ordre stable.

Cas de test : Les noms de jeux sont rendus dans un ordre alphabetique stable.
Categorie : Unitaire · Catalogue de skins
Criticite : Mineur
Etapes :
1. Creer trois jeux dans un ordre quelconque.
Resultat attendu : setNames les rend tries, quel que soit l'ordre de creation.

◆ TEST() [13/16]

TEST ( SkinCatalogTest ,
ResolutionDansUnJeuExistant  )

La resolution rend l'entree du jeu demande, avec son mode.

Cas de test : La resolution rend l'asset et le mode assignes dans le jeu demande.
Categorie : Unitaire · Catalogue de skins
Criticite : Critique
Etapes :
1. Resoudre Solid et Block dans le jeu « foret », puis Solid dans « grotte ».
Resultat attendu : Chaque resolution rend l'asset et le mode ecrits dans le fichier.

◆ TEST() [14/16]

TEST ( SkinCatalogTest ,
TypeNonSkinneNeResoudRien  )

Un type non skinne ne resout rien, sans erreur.

Cas de test : Un type de tuile sans skin assigne ne resout aucune entree.
Categorie : Unitaire · Catalogue de skins
Criticite : Critique
Etapes :
1. Resoudre un type absent du jeu « foret », puis un type absent de « grotte ».
Resultat attendu : Les deux resolutions rendent une absence d'entree, sans exception.

◆ TEST() [15/16]

TEST ( SkinCatalogTest ,
TypeOuModeInconnuSignale  )

Un type de tuile ou un mode inconnu est signale.

Cas de test : Un type de tuile ou un mode de skin inconnu est signale a la lecture.
Categorie : Unitaire · Catalogue de skins
Criticite : Majeur
Etapes :
1. Lire un catalogue citant un type de tuile inexistant.

  1. Lire un catalogue citant un mode inexistant, puis une entree sans asset.
    Resultat attendu : Les trois echouent avec le code MalformedStructure, sans exception.

◆ TEST() [16/16]

TEST ( SkinCatalogTest ,
VersionInconnueRefusee  )

Une version de format inconnue est refusee, pas lue au mieux.

Cas de test : Une version de format superieure a celle geree est refusee explicitement.
Categorie : Unitaire · Catalogue de skins
Criticite : Critique
Etapes :
1. Lire un catalogue dont la version vaut celle geree, puis une superieure.
Resultat attendu : La premiere est acceptee ; la seconde echoue avec le code UnsupportedVersion.