|
JustAnotherDnDGame 0.1.0
Jeu de rôle tactique au d20, vue de dessus, en C++/Qt
|
Tests unitaires du catalogue d'actions et de la géométrie des icônes de l'éditeur (LOT-56 TACHE-04, EX-IHM-055). More...
#include <fstream>#include <set>#include <sstream>#include <string>#include <unordered_map>#include <gtest/gtest.h>#include "HMI/Interface/ActionCatalog.h"#include "HMI/Interface/IconGeometry.h"#include "HMI/Localization/Localization.h"Functions | |
| TEST (EditorActionsTest, LesOutilsDuCatalogueFormentUneBijectionAvecEditorTool) | |
| Les outils du catalogue forment une bijection exacte avec hmi::EditorTool : un outil, une action, aucun manquant ni dupliqué. | |
| TEST (EditorActionsTest, LesCinqOutilsDeCanevasFormentUneBijectionAvecPixelTool) | |
| Les quatre outils du canevas pixel art forment une bijection exacte avec hmi::PixelTool (LOT-54 TACHE-04) — même garantie que pour les six outils de niveau, et le groupe PixelTools reste distinct de LevelTools (aucun outil de canevas n'appartient au groupe des outils de niveau). | |
| TEST (EditorActionsTest, DefinitionUniqueDeRaccourci) | |
| Chaque commande n'a qu'une seule définition de raccourci : aucun raccourci non vide n'est attribué deux fois dans le catalogue. | |
| TEST (EditorActionsTest, GeometrieDesIconesNonVideEtDansLeCadre) | |
| La géométrie de chaque icône du catalogue est non vide et reste dans l'espace normalisé [0,1] x [0,1] : une icône hors de ce cadre déborderait de sa vignette à toute taille. | |
| TEST (EditorActionsTest, ChaqueLibelleExisteDansLesDeuxLangues) | |
| Chaque clé de libellé utilisée par le catalogue d'actions existe dans les deux catalogues de traduction livrés (EX-REN-033). | |
| TEST (EditorActionsTest, AucuneActionRemappableOrpheline) | |
| Garde-fou « aucune action orpheline » (LOT-57 TACHE-04) : chaque action d'éditeur remappable, hors sélection d'outil, correspond à une commande effective du catalogue. | |
| TEST (EditorActionsTest, LaBarreDOutilsNePorteQueLEssentiel) | |
| La barre d'outils ne porte que la sélection d'outil et un petit nombre de commandes à usage continu (LOT-68, EX-IHM-074). | |
| TEST (EditorActionsTest, AucuneActionOrphelineDeSurface) | |
| Aucune action n'est orpheline de surface : chacune apparaît au moins au menu. | |
Tests unitaires du catalogue d'actions et de la géométrie des icônes de l'éditeur (LOT-56 TACHE-04, EX-IHM-055).
| TEST | ( | EditorActionsTest | , |
| AucuneActionOrphelineDeSurface | ) |
Aucune action n'est orpheline de surface : chacune apparaît au moins au menu.
Une action absente des deux surfaces n'aurait plus que son raccourci — donc, en pratique, n'existerait plus pour qui ne le connaît pas (EX-EDIT-015). Cas de test : Chaque action du catalogue reste atteignable par au moins une surface.
Categorie : Unitaire · Actions de l'editeur
Criticite : Majeur
Etapes :
1. Parcourir le catalogue et lire la surface de chaque action.
Resultat attendu : Chaque action vaut ToolBarAndMenu ou MenuOnly ; les deux mènent au menu.
| TEST | ( | EditorActionsTest | , |
| AucuneActionRemappableOrpheline | ) |
Garde-fou « aucune action orpheline » (LOT-57 TACHE-04) : chaque action d'éditeur remappable, hors sélection d'outil, correspond à une commande effective du catalogue.
Ce test casse si une action est ajoutée à EditorKeyBindings sans être branchée ici — exactement le défaut que cette tâche corrige (neuf actions définies, une seule lue). Cas de test : Chaque action d'editeur remappable a une commande effective.
Categorie : Unitaire · Actions de l'editeur
Criticite : Critique
Etapes :
1. Comparer le nombre d'actions remappables (hors outil) au nombre d'entrees de la table de correspondance.
2. Verifier que chaque entree pointe vers une commande reelle du catalogue et que l'aller-retour restitue l'action d'origine.
Resultat attendu : Les deux comptes sont egaux ; chaque commande existe et l'aller-retour est fidele.
| TEST | ( | EditorActionsTest | , |
| ChaqueLibelleExisteDansLesDeuxLangues | ) |
Chaque clé de libellé utilisée par le catalogue d'actions existe dans les deux catalogues de traduction livrés (EX-REN-033).
Cas de test : Chaque cle de libelle du catalogue d'actions existe en francais et en anglais.
Categorie : Unitaire · Actions de l'editeur
Criticite : Majeur
Etapes :
1. Lire fr.lang et en.lang.
2. Verifier que chaque labelKey du catalogue y figure.
Resultat attendu : Aucune cle n'est absente de l'un ou l'autre catalogue.
| TEST | ( | EditorActionsTest | , |
| DefinitionUniqueDeRaccourci | ) |
Chaque commande n'a qu'une seule définition de raccourci : aucun raccourci non vide n'est attribué deux fois dans le catalogue.
Cas de test : Aucun raccourci n'est attribue a deux actions.
Categorie : Unitaire · Actions de l'editeur
Criticite : Critique
Etapes :
1. Parcourir le catalogue, ignorer les raccourcis vides.
2. Verifier qu'aucune valeur n'apparait deux fois.
Resultat attendu : Chaque raccourci non vide est unique.
| TEST | ( | EditorActionsTest | , |
| GeometrieDesIconesNonVideEtDansLeCadre | ) |
La géométrie de chaque icône du catalogue est non vide et reste dans l'espace normalisé [0,1] x [0,1] : une icône hors de ce cadre déborderait de sa vignette à toute taille.
Cas de test : La geometrie de chaque icone est non vide et dans le cadre normalise.
Categorie : Unitaire · Actions de l'editeur
Criticite : Majeur
Etapes :
1. Pour chaque action du catalogue, produire sa geometrie.
2. Verifier qu'elle a au moins un trait, et que chaque point est dans [0,1].
Resultat attendu : Aucune icone n'est vide ni ne deborde du cadre.
| TEST | ( | EditorActionsTest | , |
| LaBarreDOutilsNePorteQueLEssentiel | ) |
La barre d'outils ne porte que la sélection d'outil et un petit nombre de commandes à usage continu (LOT-68, EX-IHM-074).
Elle en portait onze, dont neuf figuraient déjà au menu : c'est cette accumulation, et non une duplication de définition, qui la rendait illisible.
Le plafond TOOLBAR_COMMAND_BUDGET est vérifié par groupe d'outils : une barre commune aux deux espaces ne dirait rien de ce que chacun affiche réellement. Cas de test : La barre d'outils ne porte que les outils et un petit nombre de commandes.
Categorie : Unitaire · Actions de l'editeur
Criticite : Critique
Etapes :
1. Compter les actions de surface ToolBarAndMenu qui ne sont pas des outils, pour l'espace de niveau puis pour l'atelier.
Resultat attendu : Chaque compte reste sous TOOLBAR_COMMAND_BUDGET, et tous les outils des deux familles restent en barre d'outils.
| TEST | ( | EditorActionsTest | , |
| LesCinqOutilsDeCanevasFormentUneBijectionAvecPixelTool | ) |
Les quatre outils du canevas pixel art forment une bijection exacte avec hmi::PixelTool (LOT-54 TACHE-04) — même garantie que pour les six outils de niveau, et le groupe PixelTools reste distinct de LevelTools (aucun outil de canevas n'appartient au groupe des outils de niveau).
Cas de test : Les quatre outils de canevas forment une bijection avec PixelTool.
Categorie : Unitaire · Actions de l'editeur
Criticite : Critique
Etapes :
1. Pour chaque hmi::PixelTool, resoudre l'action puis reconvertir vers l'outil.
| TEST | ( | EditorActionsTest | , |
| LesOutilsDuCatalogueFormentUneBijectionAvecEditorTool | ) |
Les outils du catalogue forment une bijection exacte avec hmi::EditorTool : un outil, une action, aucun manquant ni dupliqué.
C'est ce qui garantit l'exclusivité réelle (le groupe Qt QActionGroup, construit à partir de ce même catalogue, EditorActions.cpp) et, surtout, la complétude : hmi::MainWindow dérive de ce catalogue les connexions action → GameViewport::setTool, donc un outil absent du groupe LevelTools serait cochable dans la barre d'outils sans jamais devenir l'outil actif. Le cas s'est produit avec l'outil « Parcours » (LOT-67), qu'une liste écrite à la main avait laissé de côté.
La liste des outils est dérivée du catalogue, jamais recopiée ici : la recopier reproduirait exactement l'erreur que ce test doit détecter. EDITOR_TOOL_COUNT, déclaré à côté de l'énumération, ferme la boucle — autant d'actions distinctes que d'outils implique, par tiroirs, que chaque outil en a exactement une. Cas de test : Les outils du catalogue forment une bijection avec EditorTool.
Categorie : Unitaire · Actions de l'editeur
Criticite : Critique
Etapes :
1. Parcourir les actions du groupe LevelTools du catalogue.
2. Convertir chacune en outil puis reconvertir vers l'action.
Resultat attendu : Chaque action du groupe designe un outil distinct, l'aller-retour est fidele, et le nombre d'outils couverts vaut EDITOR_TOOL_COUNT : aucun outil n'est laisse sans action.