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

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.

Detailed Description

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.

Function Documentation

◆ TEST() [1/5]

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() [2/5]

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() [3/5]

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() [4/5]

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() [5/5]

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.