|
JustAnotherDnDGame 0.1.0
Jeu de rôle tactique au d20, vue de dessus, en C++/Qt
|
Tests unitaires des tuiles animées (LOT-46 TACHE-05) : horloge partagée par asset, mise en phase, exclusion des combinaisons non supportées. More...
#include <memory>#include <optional>#include <gtest/gtest.h>#include "Core/Ecs/AnimationClip.h"#include "Core/Ecs/Components/Animation.h"#include "Core/Ecs/Systems/AnimationSystem.h"#include "Core/Levels/TileType.h"#include "HMI/Graphics/AnimationCatalog.h"#include "HMI/Graphics/RenderMode.h"#include "HMI/Graphics/SkinCatalog.h"#include "HMI/Graphics/TextureAtlas.h"#include "HMI/Graphics/TileAppearance.h"#include "HMI/Graphics/TileSkinTag.h"Functions | |
| TEST (AnimatedTilesTest, SkinAnimeProduitDesRegionsDifferentesAuFilDesPas) | |
| Un skin animé change de région au fil des pas, en restant sur le même rang de la spritesheet : c'est la preuve que l'horloge d'animation atteint bien la tuile, et que le découpage parcourt la planche horizontalement comme le veut la convention d'asset. | |
| TEST (AnimatedTilesTest, SkinNonAnimeProduitUneRegionConstante) | |
| Un skin non animé rend la même région à chaque appel : sans image courante renseignée, la résolution retombe sur l'image entière. | |
| TEST (AnimatedTilesTest, SkinAnimeUtiliseLaRegionCouranteDeAnimatedFrame) | |
| Quand une image courante est renseignée, la résolution l'utilise telle quelle plutôt que la planche entière : c'est le point de jonction entre l'horloge d'animation, partagée par asset, et le rendu d'une tuile donnée. | |
| TEST (AnimatedTilesTest, MiseEnPhaseDeuxTuilesDuMemeTypeAffichentLaMemeImageAuMemePas) | |
| Deux tuiles du même asset restent en phase à chaque pas, image par image : c'est la garantie de déterminisme sur laquelle repose l'horloge unique par asset. | |
| TEST (AnimatedTilesTest, Bitmask16ExclutLAnimation) | |
| Le mode à raccords automatiques exclut l'animation : la planche y sert déjà à décrire les seize voisinages possibles, ses cases ne peuvent pas servir en même temps d'images successives. | |
| TEST (AnimatedTilesTest, SingleSansSilhouetteNExclutPasLAnimation) | |
| Une tuile pleine en mode image simple, elle, peut être animée : c'est le cas nominal (eau, lave, bloc scintillant). | |
Tests unitaires des tuiles animées (LOT-46 TACHE-05) : horloge partagée par asset, mise en phase, exclusion des combinaisons non supportées.
Sans GPU.
| TEST | ( | AnimatedTilesTest | , |
| Bitmask16ExclutLAnimation | ) |
Le mode à raccords automatiques exclut l'animation : la planche y sert déjà à décrire les seize voisinages possibles, ses cases ne peuvent pas servir en même temps d'images successives.
Cas de test : Le mode à raccords automatiques exclut l'animation.
Categorie : Unitaire · Tuiles animées
Criticite : Majeur
Etapes :
1. Mettre en place le contexte du test (arrangement).
2. Executer le scenario et verifier les assertions.
| TEST | ( | AnimatedTilesTest | , |
| MiseEnPhaseDeuxTuilesDuMemeTypeAffichentLaMemeImageAuMemePas | ) |
Deux tuiles du même asset restent en phase à chaque pas, image par image : c'est la garantie de déterminisme sur laquelle repose l'horloge unique par asset.
Deux cases d'eau voisines déphasées se verraient immédiatement, et trahiraient une progression par instance. Cas de test : Deux tuiles du même asset affichent la même image à chaque pas.
Categorie : Unitaire · Tuiles animées
Criticite : Critique
Etapes :
1. Mettre en place le contexte du test (arrangement).
2. Executer le scenario et verifier les assertions.
| TEST | ( | AnimatedTilesTest | , |
| SingleSansSilhouetteNExclutPasLAnimation | ) |
Une tuile pleine en mode image simple, elle, peut être animée : c'est le cas nominal (eau, lave, bloc scintillant).
Le pendant positif des deux exclusions ci-dessus, sans lequel elles pourraient être trop larges sans que rien ne le signale. Cas de test : Une tuile pleine en mode image simple n'exclut pas l'animation.
Categorie : Unitaire · Tuiles animées
Criticite : Majeur
Etapes :
1. Mettre en place le contexte du test (arrangement).
2. Executer le scenario et verifier les assertions.
| TEST | ( | AnimatedTilesTest | , |
| SkinAnimeProduitDesRegionsDifferentesAuFilDesPas | ) |
Un skin animé change de région au fil des pas, en restant sur le même rang de la spritesheet : c'est la preuve que l'horloge d'animation atteint bien la tuile, et que le découpage parcourt la planche horizontalement comme le veut la convention d'asset.
Cas de test : Un skin animé produit des régions différentes au fil des pas, sur un même rang.
Categorie : Unitaire · Tuiles animées
Criticite : Majeur
Etapes :
1. Mettre en place le contexte du test (arrangement).
2. Executer le scenario et verifier les assertions.
| TEST | ( | AnimatedTilesTest | , |
| SkinAnimeUtiliseLaRegionCouranteDeAnimatedFrame | ) |
Quand une image courante est renseignée, la résolution l'utilise telle quelle plutôt que la planche entière : c'est le point de jonction entre l'horloge d'animation, partagée par asset, et le rendu d'une tuile donnée.
Cas de test : Un skin animé utilise la région de l'image courante, pas la planche entière.
Categorie : Unitaire · Tuiles animées
Criticite : Majeur
Etapes :
1. Mettre en place le contexte du test (arrangement).
2. Executer le scenario et verifier les assertions.
| TEST | ( | AnimatedTilesTest | , |
| SkinNonAnimeProduitUneRegionConstante | ) |
Un skin non animé rend la même région à chaque appel : sans image courante renseignée, la résolution retombe sur l'image entière.
La grande majorité des skins n'est pas animée, et ne doit rien payer au mécanisme d'animation. Cas de test : Un skin non animé produit une région constante d'un appel à l'autre.
Categorie : Unitaire · Tuiles animées
Criticite : Majeur
Etapes :
1. Mettre en place le contexte du test (arrangement).
2. Executer le scenario et verifier les assertions.