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

Tests unitaires du format nom-asset.anim.json (hmi::AnimationCatalog, LOT-46 TACHE-03) : lecture, validation, traduction en région de texture. More...

#include <gtest/gtest.h>
#include "HMI/Graphics/AnimationCatalog.h"

Functions

 TEST (AnimationCatalogTest, RoundTripClipsMultiplesDureeParDefautEtOneShot)
 Un descripteur valide se relit intégralement : dimensions d'image, clips multiples, durée par défaut quand elle est omise, mode joué-une-fois et clip suivant résolu dans le même jeu.
 TEST (AnimationCatalogTest, JsonInvalideEstUneErreurExploitable)
 Un JSON illisible donne une erreur d'analyse exploitable, avec un message non vide : les descripteurs sont écrits à la main, une erreur muette laisserait l'artiste sans piste.
 TEST (AnimationCatalogTest, VersionInconnueEstRefusee)
 Une version de format inconnue est refusée explicitement plutôt que lue au mieux : mieux vaut un refus net qu'une animation silencieusement fausse issue d'un format futur.
 TEST (AnimationCatalogTest, ClipSuivantInexistantEstRefuse)
 Un clip suivant qui ne désigne aucun clip du descripteur est refusé au chargement : cette incohérence ne se manifesterait sinon qu'à la fin de la transition, en pleine partie.
 TEST (AnimationCatalogTest, IndiceDImageNegatifEstRefuse)
 Un indice d'image négatif est refusé : il indexerait la spritesheet hors de ses bornes.
 TEST (AnimationCatalogTest, ClipSansFramesEstRefuse)
 Un clip sans aucune image est refusé : il n'aurait rien à afficher, et son absence d'images ne se verrait qu'au moment de le jouer.
 TEST (AnimationCatalogTest, FichierAbsentEstFileNotFoundSansException)
 Un fichier absent donne un code d'erreur dédié, sans exception : la plupart des assets n'ont pas de descripteur, l'absence est le cas courant et non une anomalie.
 TEST (AnimationCatalogTest, DescriptorFileNameRemplaceLExtension)
 Le nom du descripteur se déduit de celui de l'image en remplaçant l'extension, chemin de sous-dossier conservé : perdre le préfixe ferait chercher le descripteur au mauvais endroit, un piège déjà rencontré sur les clés du cache de textures.
 TEST (AnimationCatalogTest, CoherenceAvecLePngValideeSurSpritesheetAUnRang)
 Un descripteur cohérent avec les dimensions réelles du PNG est validé : six images de 16 px sur un rang de 16 px de haut.
 TEST (AnimationCatalogTest, TailleDImageIncoherenteAvecLePngEstRefusee)
 Une hauteur de PNG différente de la hauteur d'image (plusieurs rangs, non supportés) ou une largeur qui n'est pas un multiple de la largeur d'image sont refusées, avec un message : ce sont les deux façons de se tromper en découpant une planche.
 TEST (AnimationCatalogTest, IndiceDImageHorsBornesDeLaSpritesheetReelleEstRefuse)
 Un indice d'image au-delà de ce que contient réellement la spritesheet est refusé, même quand la largeur est un multiple valide : la validation confronte les clips au fichier, pas seulement le fichier à lui-même.
 TEST (AnimationCatalogTest, FrameRegionPremiereEtDerniereImageSpritesheetAUnRang)
 La région d'une image se déduit de son indice par simple décalage horizontal, l'ordonnée ne variant jamais : c'est la convention de planche à un seul rang, qui rend le découpage prévisible pour l'artiste.

Detailed Description

Tests unitaires du format nom-asset.anim.json (hmi::AnimationCatalog, LOT-46 TACHE-03) : lecture, validation, traduction en région de texture.

Sans GPU ni Qt.

Function Documentation

◆ TEST() [1/12]

TEST ( AnimationCatalogTest ,
ClipSansFramesEstRefuse  )

Un clip sans aucune image est refusé : il n'aurait rien à afficher, et son absence d'images ne se verrait qu'au moment de le jouer.

Cas de test : Un clip sans images est refusé.
Categorie : Unitaire · Catalogue d'animations
Criticite : Majeur
Etapes :
1. Mettre en place le contexte du test (arrangement).
2. Executer le scenario et verifier les assertions.

◆ TEST() [2/12]

TEST ( AnimationCatalogTest ,
ClipSuivantInexistantEstRefuse  )

Un clip suivant qui ne désigne aucun clip du descripteur est refusé au chargement : cette incohérence ne se manifesterait sinon qu'à la fin de la transition, en pleine partie.

Cas de test : Un clip suivant inexistant est refusé au chargement.
Categorie : Unitaire · Catalogue d'animations
Criticite : Critique
Etapes :
1. Mettre en place le contexte du test (arrangement).
2. Executer le scenario et verifier les assertions.

◆ TEST() [3/12]

TEST ( AnimationCatalogTest ,
CoherenceAvecLePngValideeSurSpritesheetAUnRang  )

Un descripteur cohérent avec les dimensions réelles du PNG est validé : six images de 16 px sur un rang de 16 px de haut.

Cas de test : Un descripteur cohérent avec les dimensions du PNG est validé.
Categorie : Unitaire · Catalogue d'animations
Criticite : Majeur
Etapes :
1. Mettre en place le contexte du test (arrangement).
2. Executer le scenario et verifier les assertions.

◆ TEST() [4/12]

TEST ( AnimationCatalogTest ,
DescriptorFileNameRemplaceLExtension  )

Le nom du descripteur se déduit de celui de l'image en remplaçant l'extension, chemin de sous-dossier conservé : perdre le préfixe ferait chercher le descripteur au mauvais endroit, un piège déjà rencontré sur les clés du cache de textures.

Cas de test : Le nom du descripteur remplace l'extension en conservant le chemin.
Categorie : Unitaire · Catalogue d'animations
Criticite : Critique
Etapes :
1. Mettre en place le contexte du test (arrangement).
2. Executer le scenario et verifier les assertions.

◆ TEST() [5/12]

TEST ( AnimationCatalogTest ,
FichierAbsentEstFileNotFoundSansException  )

Un fichier absent donne un code d'erreur dédié, sans exception : la plupart des assets n'ont pas de descripteur, l'absence est le cas courant et non une anomalie.

Cas de test : Un fichier absent donne un code dédié, sans exception.
Categorie : Unitaire · Catalogue d'animations
Criticite : Critique
Etapes :
1. Mettre en place le contexte du test (arrangement).
2. Executer le scenario et verifier les assertions.

◆ TEST() [6/12]

TEST ( AnimationCatalogTest ,
FrameRegionPremiereEtDerniereImageSpritesheetAUnRang  )

La région d'une image se déduit de son indice par simple décalage horizontal, l'ordonnée ne variant jamais : c'est la convention de planche à un seul rang, qui rend le découpage prévisible pour l'artiste.

Cas de test : La région d'une image se déduit de son indice par décalage horizontal, ordonnée constante.
Categorie : Unitaire · Catalogue d'animations
Criticite : Majeur
Etapes :
1. Mettre en place le contexte du test (arrangement).
2. Executer le scenario et verifier les assertions.

◆ TEST() [7/12]

TEST ( AnimationCatalogTest ,
IndiceDImageHorsBornesDeLaSpritesheetReelleEstRefuse  )

Un indice d'image au-delà de ce que contient réellement la spritesheet est refusé, même quand la largeur est un multiple valide : la validation confronte les clips au fichier, pas seulement le fichier à lui-même.

Cas de test : Un indice d'image hors des bornes réelles de la spritesheet est refusé.
Categorie : Unitaire · Catalogue d'animations
Criticite : Critique
Etapes :
1. Mettre en place le contexte du test (arrangement).
2. Executer le scenario et verifier les assertions.

◆ TEST() [8/12]

TEST ( AnimationCatalogTest ,
IndiceDImageNegatifEstRefuse  )

Un indice d'image négatif est refusé : il indexerait la spritesheet hors de ses bornes.

Cas de test : Un indice d'image négatif est refusé.
Categorie : Unitaire · Catalogue d'animations
Criticite : Majeur
Etapes :
1. Mettre en place le contexte du test (arrangement).
2. Executer le scenario et verifier les assertions.

◆ TEST() [9/12]

TEST ( AnimationCatalogTest ,
JsonInvalideEstUneErreurExploitable  )

Un JSON illisible donne une erreur d'analyse exploitable, avec un message non vide : les descripteurs sont écrits à la main, une erreur muette laisserait l'artiste sans piste.

Cas de test : Un JSON invalide donne une erreur d'analyse avec un message exploitable.
Categorie : Unitaire · Catalogue d'animations
Criticite : Majeur
Etapes :
1. Mettre en place le contexte du test (arrangement).
2. Executer le scenario et verifier les assertions.

◆ TEST() [10/12]

TEST ( AnimationCatalogTest ,
RoundTripClipsMultiplesDureeParDefautEtOneShot  )

Un descripteur valide se relit intégralement : dimensions d'image, clips multiples, durée par défaut quand elle est omise, mode joué-une-fois et clip suivant résolu dans le même jeu.

C'est le contrat complet du format, vérifié en une fois sur un cas nominal. Cas de test : Un descripteur valide se relit intégralement, durée par défaut et clip suivant compris.
Categorie : Unitaire · Catalogue d'animations
Criticite : Critique
Etapes :
1. Mettre en place le contexte du test (arrangement).
2. Executer le scenario et verifier les assertions.

◆ TEST() [11/12]

TEST ( AnimationCatalogTest ,
TailleDImageIncoherenteAvecLePngEstRefusee  )

Une hauteur de PNG différente de la hauteur d'image (plusieurs rangs, non supportés) ou une largeur qui n'est pas un multiple de la largeur d'image sont refusées, avec un message : ce sont les deux façons de se tromper en découpant une planche.

Cas de test : Des dimensions de PNG incohérentes avec l'image sont refusées.
Categorie : Unitaire · Catalogue d'animations
Criticite : Majeur
Etapes :
1. Mettre en place le contexte du test (arrangement).
2. Executer le scenario et verifier les assertions.

◆ TEST() [12/12]

TEST ( AnimationCatalogTest ,
VersionInconnueEstRefusee  )

Une version de format inconnue est refusée explicitement plutôt que lue au mieux : mieux vaut un refus net qu'une animation silencieusement fausse issue d'un format futur.

Cas de test : Une version de format inconnue est refusée.
Categorie : Unitaire · Catalogue d'animations
Criticite : Majeur
Etapes :
1. Mettre en place le contexte du test (arrangement).
2. Executer le scenario et verifier les assertions.