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

Tests unitaires des conversions pures vue ↔ image du canevas pixel art (LOT-54 TACHE-03, EX-EDIT-045). More...

#include <gtest/gtest.h>
#include "HMI/Editor/PixelCanvasGeometry.h"
#include "HMI/Editor/ThumbnailGeometry.h"

Functions

 TEST (PixelCanvasGeometryTest, ScreenToImagePixelPourDiversesVues)
 Pour une combinaison de zoom et de décalage de vue, la position de souris donne le bon pixel image.
 TEST (PixelCanvasGeometryTest, ScreenToImagePixelHorsBornesRenvoieAbsence)
 Une position hors de l'image produit une absence de pixel, jamais un indice tronqué au bord — y compris pour une position écran négative.
 TEST (PixelCanvasGeometryTest, AllerRetourRectangleVersPixel)
 Le centre du rectangle écran d'un pixel, reconverti, donne exactement ce même pixel, à plusieurs zooms et décalages de vue.
 TEST (PixelCanvasGeometryTest, PixelCanvasRealSizeReutiliseThumbnailPixelSize)
 pixelCanvasRealSize réutilise hmi::thumbnailPixelSize sans la redéfinir : elle produit exactement les mêmes valeurs à plusieurs facteurs d'échelle d'affichage.
 TEST (PixelCanvasGeometryTest, CommandesDeZoomRestentBorneesEtEntieres)
 Les commandes de zoom avant/arrière restent toujours dans les bornes entières admises, sans jamais dépasser le zoom maximal ni descendre sous le minimal.
 TEST (PixelCanvasGeometryTest, GrilleVisibleAuSeuilAttendu)
 La grille de pixels n'est visible qu'à partir du zoom seuil, pas en-deçà.
 TEST (PixelCanvasGeometryTest, AllerRetourExactSousLeUnPourUn)
 Zoom rationnel (LOT-69 TACHE-07) : l'aller-retour vue ↔ image reste exact aux dénominateurs 2 et 4, c'est-à-dire sous le 1:1.
 TEST (PixelCanvasGeometryTest, PixelsCarresATousLesZooms)
 Les pixels restent carrés à tout zoom, dénominateur compris (EX-ARCH-022).
 TEST (PixelCanvasGeometryTest, CourseDeZoomRationnelleBornee)
 L'échelle descend sous le 1:1 puis y remonte : la course de zoom parcourt les dénominateurs avant les numérateurs, et se borne aux deux extrémités.

Detailed Description

Tests unitaires des conversions pures vue ↔ image du canevas pixel art (LOT-54 TACHE-03, EX-EDIT-045).

Function Documentation

◆ TEST() [1/9]

TEST ( PixelCanvasGeometryTest ,
AllerRetourExactSousLeUnPourUn  )

Zoom rationnel (LOT-69 TACHE-07) : l'aller-retour vue ↔ image reste exact aux dénominateurs 2 et 4, c'est-à-dire sous le 1:1.

L'extension est compatible par construction — le dénominateur vaut 1 par défaut, et tous les cas ci-dessus, écrits avant elle, valent tels quels. Ce test-ci couvre le terrain nouveau. Cas de test : L'aller-retour vue vers image reste exact sous le 1:1.
Categorie : Unitaire · Geometrie du canevas pixel
Criticite : Critique
Etapes :
1. Pour les denominateurs 2 et 4, convertir chaque pixel image en rectangle ecran.

  1. Reconvertir le centre de ce rectangle en pixel image.
    Resultat attendu : Le pixel de depart est retrouve a chaque fois.

◆ TEST() [2/9]

TEST ( PixelCanvasGeometryTest ,
AllerRetourRectangleVersPixel  )

Le centre du rectangle écran d'un pixel, reconverti, donne exactement ce même pixel, à plusieurs zooms et décalages de vue.

Cas de test : Le centre du rectangle d'un pixel reconverti donne ce meme pixel, a tout zoom.
Categorie : Unitaire · Geometrie du canevas pixel
Criticite : Critique
Etapes :
1. Pour plusieurs zooms et decalages, calculer le rectangle ecran d'un pixel.

  1. Reconvertir le centre de ce rectangle.
    Resultat attendu : Le pixel obtenu est identique au pixel d'origine, dans tous les cas testes.

◆ TEST() [3/9]

TEST ( PixelCanvasGeometryTest ,
CommandesDeZoomRestentBorneesEtEntieres  )

Les commandes de zoom avant/arrière restent toujours dans les bornes entières admises, sans jamais dépasser le zoom maximal ni descendre sous le minimal.

Cas de test : Les commandes de zoom restent bornees et entieres.
Categorie : Unitaire · Geometrie du canevas pixel
Criticite : Majeur
Etapes :
1. Zoomer avant a repetition au-dela du maximum.
2. Zoomer arriere a repetition en-deca du minimum.
Resultat attendu : Le zoom reste plafonne a PIXEL_CANVAS_MAX_ZOOM, puis revient et se plafonne a PIXEL_CANVAS_MIN_ZOOM.

◆ TEST() [4/9]

TEST ( PixelCanvasGeometryTest ,
CourseDeZoomRationnelleBornee  )

L'échelle descend sous le 1:1 puis y remonte : la course de zoom parcourt les dénominateurs avant les numérateurs, et se borne aux deux extrémités.

Cas de test : La course de zoom descend sous le 1:1 et y remonte.
Categorie : Unitaire · Geometrie du canevas pixel
Criticite : Critique
Etapes :
1. Reduire depuis le 1:1 jusqu'a la borne basse.
2. Agrandir jusqu'a repasser au 1:1.
Resultat attendu : L'echelle atteint 1/8 sans aller plus bas, puis revient exactement a 1.

◆ TEST() [5/9]

TEST ( PixelCanvasGeometryTest ,
GrilleVisibleAuSeuilAttendu  )

La grille de pixels n'est visible qu'à partir du zoom seuil, pas en-deçà.

Cas de test : pixelCanvasGridVisible bascule au seuil attendu.
Categorie : Unitaire · Geometrie du canevas pixel
Criticite : Mineur
Etapes :
1. Evaluer pixelCanvasGridVisible juste en-deca et juste au niveau du seuil.
Resultat attendu : Faux en-deca, vrai au seuil et au-dela.

◆ TEST() [6/9]

TEST ( PixelCanvasGeometryTest ,
PixelCanvasRealSizeReutiliseThumbnailPixelSize  )

pixelCanvasRealSize réutilise hmi::thumbnailPixelSize sans la redéfinir : elle produit exactement les mêmes valeurs à plusieurs facteurs d'échelle d'affichage.

Cas de test : pixelCanvasRealSize reutilise thumbnailPixelSize (LOT-56) sans la redefinir.
Categorie : Unitaire · Geometrie du canevas pixel
Criticite : Majeur
Etapes :
1. Calculer la taille reelle du canevas a plusieurs facteurs d'echelle.
2. Calculer independamment thumbnailPixelSize sur les memes tailles logiques.
Resultat attendu : Les deux resultats sont identiques a chaque facteur.

◆ TEST() [7/9]

TEST ( PixelCanvasGeometryTest ,
PixelsCarresATousLesZooms  )

Les pixels restent carrés à tout zoom, dénominateur compris (EX-ARCH-022).

Cas de test : Les pixels restent carres a tout zoom.
Categorie : Unitaire · Geometrie du canevas pixel
Criticite : Critique
Etapes :
1. Parcourir plusieurs numerateurs et les quatre denominateurs admis.
2. Comparer largeur et hauteur du rectangle ecran d'un pixel.
Resultat attendu : Largeur et hauteur sont egales dans tous les cas.

◆ TEST() [8/9]

TEST ( PixelCanvasGeometryTest ,
ScreenToImagePixelHorsBornesRenvoieAbsence  )

Une position hors de l'image produit une absence de pixel, jamais un indice tronqué au bord — y compris pour une position écran négative.

Cas de test : screenToImagePixel renvoie nullopt hors de l'image, y compris en negatif.
Categorie : Unitaire · Geometrie du canevas pixel
Criticite : Critique
Etapes :
1. Convertir une position ecran negative.
2. Convertir une position au-dela du bord droit/bas de l'image.
Resultat attendu : Les deux conversions renvoient nullopt.

◆ TEST() [9/9]

TEST ( PixelCanvasGeometryTest ,
ScreenToImagePixelPourDiversesVues  )

Pour une combinaison de zoom et de décalage de vue, la position de souris donne le bon pixel image.

La conversion ne dépend jamais de l'échelle d'affichage : Qt livre déjà les positions de souris en pixels logiques, indépendamment du devicePixelRatio. Cas de test : screenToImagePixel donne le bon pixel pour diverses combinaisons de zoom et de decalage.
Categorie : Unitaire · Geometrie du canevas pixel
Criticite : Critique
Etapes :
1. Construire plusieurs vues (zoom, decalage) differentes.
2. Convertir une position ecran connue vers un pixel image.
Resultat attendu : Le pixel obtenu correspond a la case ecran attendue dans chaque cas.