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

Tests unitaires de la résolution de zone de caméra active (mode par salle, zones dessinées à la main, EX-LVL-007). More...

#include <gtest/gtest.h>
#include "HMI/Graphics/CameraZones.h"

Functions

 TEST (CameraZonesTest, PositionDansUneZoneUniqueRenvoieSonIndice)
 Une position à l'intérieur d'une zone unique renvoie l'indice de cette zone.
 TEST (CameraZonesTest, PositionHorsDeToutesLesZonesNeRenvoieRien)
 Une position hors de toutes les zones ne renvoie aucun indice (repli niveau entier côté appelant).
 TEST (CameraZonesTest, BornesInclusivesHautGaucheExclusivesBasDroit)
 Les bornes d'une zone sont inclusives côté haut-gauche et exclusives côté bas-droit, comme core::Rect::contains — une grille de zones jointives se partitionne donc sans chevauchement ni trou artificiel à la frontière.
 TEST (CameraZonesTest, ZonesChevauchantesLaPremiereDeLaListeGagne)
 Deux zones chevauchantes : la première de la liste qui contient la position est retenue, l'ordre porte donc la priorité.
 TEST (CameraZonesTest, ListeDeZonesVideNeRenvoieRien)
 Une liste de zones vide ne renvoie jamais d'indice.

Detailed Description

Tests unitaires de la résolution de zone de caméra active (mode par salle, zones dessinées à la main, EX-LVL-007).

Function Documentation

◆ TEST() [1/5]

TEST ( CameraZonesTest ,
BornesInclusivesHautGaucheExclusivesBasDroit  )

Les bornes d'une zone sont inclusives côté haut-gauche et exclusives côté bas-droit, comme core::Rect::contains — une grille de zones jointives se partitionne donc sans chevauchement ni trou artificiel à la frontière.

Cas de test : Les bornes d'une zone sont inclusives haut-gauche, exclusives bas-droit.
Categorie : Unitaire · Camera Zones
Criticite : Majeur
Etapes :
1. Construire une zone de 5x5 à l'origine.
2. Résoudre sa case d'origine, puis la case juste après son bord droit/bas.
Resultat attendu : L'origine résout dans la zone ; la case juste hors du bord ne résout dans aucune zone.

◆ TEST() [2/5]

TEST ( CameraZonesTest ,
ListeDeZonesVideNeRenvoieRien  )

Une liste de zones vide ne renvoie jamais d'indice.

Cas de test : Une liste de zones vide ne renvoie jamais d'indice.
Categorie : Unitaire · Camera Zones
Criticite : Mineur
Etapes :
1. Résoudre une position avec une liste de zones vide.
Resultat attendu : std::nullopt est renvoyé.

◆ TEST() [3/5]

TEST ( CameraZonesTest ,
PositionDansUneZoneUniqueRenvoieSonIndice  )

Une position à l'intérieur d'une zone unique renvoie l'indice de cette zone.

Cas de test : Une position dans une zone unique renvoie son indice.
Categorie : Unitaire · Camera Zones
Criticite : Critique
Etapes :
1. Construire une liste avec une seule zone.
2. Résoudre une position à l'intérieur.
Resultat attendu : L'indice 0 est renvoyé.

◆ TEST() [4/5]

TEST ( CameraZonesTest ,
PositionHorsDeToutesLesZonesNeRenvoieRien  )

Une position hors de toutes les zones ne renvoie aucun indice (repli niveau entier côté appelant).

Cas de test : Une position hors de toutes les zones ne renvoie aucun indice.
Categorie : Unitaire · Camera Zones
Criticite : Critique
Etapes :
1. Construire une liste de zones qui ne couvre pas toute la grille.
2. Résoudre une position dans le trou.
Resultat attendu : std::nullopt est renvoyé.

◆ TEST() [5/5]

TEST ( CameraZonesTest ,
ZonesChevauchantesLaPremiereDeLaListeGagne  )

Deux zones chevauchantes : la première de la liste qui contient la position est retenue, l'ordre porte donc la priorité.

Cas de test : Deux zones chevauchantes : la première zone de la liste gagne.
Categorie : Unitaire · Camera Zones
Criticite : Majeur
Etapes :
1. Construire deux zones qui se chevauchent.
2. Résoudre une position dans le chevauchement.
3. Inverser l'ordre des deux zones et répéter.
Resultat attendu : La zone retenue est toujours la première de la liste, quel que soit l'ordre.