|
JustAnotherDnDGame 0.1.0
Jeu de rôle tactique au d20, vue de dessus, en C++/Qt
|
Tests unitaires de hmi::qtKeyToHmiKey / hmi::hmiKeyToQtKey (LOT-57 TACHE-04). More...
#include <optional>#include <vector>#include <gtest/gtest.h>#include <qnamespace.h>#include "HMI/Input/InputState.h"#include "HMI/Input/QtKeyMap.h"Functions | |
| TEST (QtKeyMapTest, AllerRetourExactSurToutesLesTouches) | |
| L'aller-retour hmi::Key -> Qt::Key -> hmi::Key rend exactement la touche de départ, pour toutes les touches nommées. | |
| TEST (QtKeyMapTest, TouchesSpecialesTraduitesExplicitement) | |
| Les touches spéciales sont traduites vers le bon code Qt, et non par la conversion directe qui vaut pour les lettres et les chiffres. | |
| TEST (QtKeyMapTest, LettresEtChiffresConvertisDirectement) | |
| Lettres et chiffres partagent la même valeur entre Qt et Win32 : la conversion est directe, sans table. | |
| TEST (QtKeyMapTest, SynonymesRejoignentLaFormeCanonique) | |
| Qt::Key_Backtab et Qt::Key_Enter sont des synonymes d'entrée : ils rejoignent Tab et Enter, dont le retour est la forme canonique (Key_Tab, Key_Return). | |
| TEST (QtKeyMapTest, ToucheNonSuivieRendNullopt) | |
| Une touche non suivie rend nullopt plutôt qu'une valeur inventée. | |
Tests unitaires de hmi::qtKeyToHmiKey / hmi::hmiKeyToQtKey (LOT-57 TACHE-04).
Table de correspondance pure : aucune QApplication, aucune fenêtre. Qt::Key_* n'est qu'un jeu de constantes d'énumération.
| TEST | ( | QtKeyMapTest | , |
| AllerRetourExactSurToutesLesTouches | ) |
L'aller-retour hmi::Key -> Qt::Key -> hmi::Key rend exactement la touche de départ, pour toutes les touches nommées.
C'est l'invariant dont dépend le remappage : une touche choisie par l'utilisateur traverse un raccourci de QAction puis revient. Une seule touche qui ne reviendrait pas identique rendrait son remappage silencieusement inopérant. Cas de test : Aller-retour hmi::Key -> Qt -> hmi::Key exact sur toutes les touches nommées.
Categorie : Unitaire · HMI Input
Criticite : Bloquant
Etapes :
1. Pour chaque touche de hmi::Key, appliquer hmiKeyToQtKey puis qtKeyToHmiKey.
Resultat attendu : La touche obtenue est identique à la touche de départ, pour les 28 touches.
| TEST | ( | QtKeyMapTest | , |
| LettresEtChiffresConvertisDirectement | ) |
Lettres et chiffres partagent la même valeur entre Qt et Win32 : la conversion est directe, sans table.
Cas de test : Lettres et chiffres : conversion directe Qt <-> Win32.
Categorie : Unitaire · HMI Input
Criticite : Majeur
Etapes :
1. Traduire Qt::Key_A, Qt::Key_Z, Qt::Key_0 et Qt::Key_9.
Resultat attendu : Les valeurs numériques coïncident (Qt::Key_A == 0x41 == hmi::Key::A).
| TEST | ( | QtKeyMapTest | , |
| SynonymesRejoignentLaFormeCanonique | ) |
Qt::Key_Backtab et Qt::Key_Enter sont des synonymes d'entrée : ils rejoignent Tab et Enter, dont le retour est la forme canonique (Key_Tab, Key_Return).
L'aller-retour depuis Qt n'est donc volontairement pas l'identité pour ces deux codes — le remappage, lui, part toujours d'un hmi::Key, où l'aller-retour reste exact. Cas de test : Backtab et Enter du pavé rejoignent la forme canonique.
Categorie : Unitaire · HMI Input
Criticite : Mineur
Etapes :
1. Traduire Qt::Key_Backtab et Qt::Key_Enter.
2. Retraduire le résultat.
Resultat attendu : Les deux rejoignent Tab/Enter, dont le retour vaut Key_Tab/Key_Return.
| TEST | ( | QtKeyMapTest | , |
| ToucheNonSuivieRendNullopt | ) |
Une touche non suivie rend nullopt plutôt qu'une valeur inventée.
Cas de test : Touche non suivie -> nullopt.
Categorie : Unitaire · HMI Input
Criticite : Majeur
Etapes :
1. Traduire Qt::Key_F5, Qt::Key_Alt, Qt::Key_Home et une valeur hors intervalle.
Resultat attendu : Aucune n'a de valeur : la table refuse plutôt que de deviner.
| TEST | ( | QtKeyMapTest | , |
| TouchesSpecialesTraduitesExplicitement | ) |
Les touches spéciales sont traduites vers le bon code Qt, et non par la conversion directe qui vaut pour les lettres et les chiffres.
Cas de test : Touches spéciales traduites explicitement.
Categorie : Unitaire · HMI Input
Criticite : Majeur
Etapes :
1. Traduire Échap, Espace, les quatre flèches et F10 dans les deux sens.
Resultat attendu : Chaque touche correspond au code Qt::Key_* attendu, dans les deux sens.