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

Tests unitaires de la composition de texte en quads sur le calque UI (LOT-52 TACHE-02). More...

#include <gtest/gtest.h>
#include "HMI/Graphics/ProceduralFont.h"
#include "HMI/Graphics/QuadRecorder.h"
#include "HMI/Graphics/TextRenderer.h"

Functions

 TEST (TextRendererTest, ChaineVideNeProduitAucunQuad)
 Une chaîne vide ne produit aucun quad.
 TEST (TextRendererTest, ChaineDeuxCaracteresProduitDeuxQuadsAuxPositionsAttendues)
 Une chaîne de N caractères (hors espaces) produit N quads, aux positions attendues selon l'avance de chaque glyphe.
 TEST (TextRendererTest, EspaceNEmetAucunQuadMaisAvanceLeStylo)
 L'espace n'émet aucun quad (aucun pixel visible), mais fait avancer le stylo.
 TEST (TextRendererTest, ChaineAccentueeCompteLesPointsDeCode)
 Une chaîne accentuée produit un nombre de quads correspondant aux POINTS DE CODE, pas aux octets UTF-8.
 TEST (TextRendererTest, AncrageCentreDecaleLaBoiteDeSaMoitie)
 L'ancrage centre horizontalement/verticalement décale la boîte du texte de la moitié de ses dimensions mesurées.
 TEST (TextRendererTest, AncrageDroiteBasPositionneLaFinDeLaBoite)
 L'ancrage à droite/en bas positionne la fin de la boîte du texte sur le point d'ancrage.
 TEST (TextRendererTest, PrimitivesSurLeCalqueUi)
 Toutes les primitives composées le sont sur le calque UI, jamais un autre.
 TEST (TextRendererTest, CaractereAbsentEstSubstitueEtComposeUnQuad)
 Un point de code non couvert par la police est substitué par le glyphe de remplacement, jamais ignoré silencieusement.
 TEST (TextRendererTest, TexteNestJamaisCulle)
 Le texte composé n'est jamais soumis au culling de cadrage : une scène sans cadrage (état par défaut, garanti par le contrat de hmi::composeText) conserve les primitives même à une position écran éloignée de l'origine.

Detailed Description

Tests unitaires de la composition de texte en quads sur le calque UI (LOT-52 TACHE-02).

Sans GPU : composition pure (hmi::ComposedScene/hmi::QuadRecorder, EX-NFR-004).

Function Documentation

◆ TEST() [1/9]

TEST ( TextRendererTest ,
AncrageCentreDecaleLaBoiteDeSaMoitie  )

L'ancrage centre horizontalement/verticalement décale la boîte du texte de la moitié de ses dimensions mesurées.

Cas de test : L'ancrage centré décale la boîte du texte de sa moitié.
Categorie : Unitaire · Text Renderer
Criticite : Majeur
Etapes :
1. Composer « AB » avec un ancrage centré aux deux axes.
2. Capturer la scène.
Resultat attendu : Le premier quad démarre à (-6, -5) : moitié de la largeur (12) et de la hauteur (10).

◆ TEST() [2/9]

TEST ( TextRendererTest ,
AncrageDroiteBasPositionneLaFinDeLaBoite  )

L'ancrage à droite/en bas positionne la fin de la boîte du texte sur le point d'ancrage.

Cas de test : L'ancrage droite/bas positionne la fin de la boîte sur le point d'ancrage.
Categorie : Unitaire · Text Renderer
Criticite : Majeur
Etapes :
1. Composer « AB » avec un ancrage droite/bas à (100, 100).
2. Capturer la scène.
Resultat attendu : Le premier quad démarre à (88, 90) : 100 moins la largeur/hauteur totales (12, 10).

◆ TEST() [3/9]

TEST ( TextRendererTest ,
CaractereAbsentEstSubstitueEtComposeUnQuad  )

Un point de code non couvert par la police est substitué par le glyphe de remplacement, jamais ignoré silencieusement.

Cas de test : Un point de code non couvert est substitué par le glyphe de remplacement.
Categorie : Unitaire · Text Renderer
Criticite : Majeur
Etapes :
1. Composer un caractère absent de testMetrics() ('#').
2. Capturer la scène.
Resultat attendu : Un quad est tout de même composé (substitution), pas un trou silencieux.

◆ TEST() [4/9]

TEST ( TextRendererTest ,
ChaineAccentueeCompteLesPointsDeCode  )

Une chaîne accentuée produit un nombre de quads correspondant aux POINTS DE CODE, pas aux octets UTF-8.

Cas de test : Une chaîne accentuée produit un quad par point de code, pas par octet.
Categorie : Unitaire · Text Renderer
Criticite : Critique
Etapes :
1. Composer « É » (deux octets UTF-8, un point de code).
2. Capturer la scène.
Resultat attendu : Un seul quad est composé.

◆ TEST() [5/9]

TEST ( TextRendererTest ,
ChaineDeuxCaracteresProduitDeuxQuadsAuxPositionsAttendues  )

Une chaîne de N caractères (hors espaces) produit N quads, aux positions attendues selon l'avance de chaque glyphe.

Cas de test : Une chaîne de N caractères produit N quads, aux positions attendues.
Categorie : Unitaire · Text Renderer
Criticite : Critique
Etapes :
1. Composer « AB » en ancrage haut-gauche.
2. Capturer la scène.
Resultat attendu : Deux quads sont composés, aux abscisses 0 et 6 (avance du glyphe 'A').

◆ TEST() [6/9]

TEST ( TextRendererTest ,
ChaineVideNeProduitAucunQuad  )

Une chaîne vide ne produit aucun quad.

Cas de test : Une chaîne vide ne produit aucun quad.
Categorie : Unitaire · Text Renderer
Criticite : Majeur
Etapes :
1. Mettre en place le contexte du test (arrangement).
2. Executer le scenario et verifier les assertions.
Resultat attendu : Aucun quad n'est composé.

◆ TEST() [7/9]

TEST ( TextRendererTest ,
EspaceNEmetAucunQuadMaisAvanceLeStylo  )

L'espace n'émet aucun quad (aucun pixel visible), mais fait avancer le stylo.

Cas de test : L'espace n'émet aucun quad mais fait avancer le stylo.
Categorie : Unitaire · Text Renderer
Criticite : Majeur
Etapes :
1. Composer « A B » (A, espace, B).
2. Capturer la scène.
Resultat attendu : Deux quads seulement (A et B), B décalé de deux avances (espace inclus).

◆ TEST() [8/9]

TEST ( TextRendererTest ,
PrimitivesSurLeCalqueUi  )

Toutes les primitives composées le sont sur le calque UI, jamais un autre.

Cas de test : Toutes les primitives composées le sont sur le calque UI.
Categorie : Unitaire · Text Renderer
Criticite : Critique
Etapes :
1. Composer un texte de plusieurs caractères.
2. Capturer la scène.
Resultat attendu : Toutes les primitives sont sur RenderLayer::UI.

◆ TEST() [9/9]

TEST ( TextRendererTest ,
TexteNestJamaisCulle  )

Le texte composé n'est jamais soumis au culling de cadrage : une scène sans cadrage (état par défaut, garanti par le contrat de hmi::composeText) conserve les primitives même à une position écran éloignée de l'origine.

Cas de test : Le texte n'est jamais soumis au culling par cadrage.
Categorie : Unitaire · Text Renderer
Criticite : Majeur
Etapes :
1. Composer un texte à une position écran éloignée (10000, 10000), sans cadrage actif sur la scène.
2. Vérifier la scène.
Resultat attendu : Le quad est conservé (aucun culling), la scène n'a pas de cadrage actif.