|
JustAnotherDnDGame 0.1.0
Jeu de rôle tactique au d20, vue de dessus, en C++/Qt
|
Tests unitaires du culling par cadrage caméra (LOT-40, EX-NFR-005, EX-REN-015). More...
#include <gtest/gtest.h>#include "Core/Ecs/Components/Sprite.h"#include "Core/Ecs/Components/Transform.h"#include "Core/Ecs/World.h"#include "HMI/Graphics/Camera2D.h"#include "HMI/Graphics/ComposedScene.h"#include "HMI/Graphics/QuadRecorder.h"#include "HMI/Graphics/RoomGrid.h"Functions | |
| TEST (RenderCullingTest, SansCadrageAucunRejet) | |
| Sans cadrage fixé, aucune primitive n'est écartée : le culling est une décision explicite de l'appelant. | |
| TEST (RenderCullingTest, HorsCadrageEcarte) | |
| Une primitive hors du cadrage est écartée ; la même primitive dans le cadrage est conservée. | |
| TEST (RenderCullingTest, AChevalSurLaFrontiereConserve) | |
| Une primitive à cheval sur la frontière du cadrage est conservée : la marge évite qu'une entité partiellement visible disparaisse prématurément. | |
| TEST (RenderCullingTest, SegmentHorizontalConserve) | |
| Un segment horizontal (boîte d'aire nulle sans son épaisseur) traversant le cadrage est conservé : la boîte englobante tient compte de l'épaisseur. | |
| TEST (RenderCullingTest, PrimitiveEtireeConservee) | |
| La boîte englobante réelle est testée, pas la position d'ancrage : une primitive très étirée dont le coin est hors cadrage reste soumise (cas du fond de niveau, LOT-44). | |
| TEST (RenderCullingTest, SpriteQuadBoundsSansRotationEstLeRectangleBrut) | |
| Un quad texturé sans rotation a la même boîte englobante que le rectangle brut (x, y, width, height) : la rotation nulle ne coûte rien et ne change rien. | |
| TEST (RenderCullingTest, SpriteQuadBoundsA90DegresPermuteLargeurEtHauteur) | |
| Un quad texturé tourné d'un quart de tour (90°) a une boîte englobante correspondant à ses dimensions permutées (large devient haut), centrée au même endroit que le rectangle non tourné — le culling doit juger ce rectangle-là, jamais (x, y, width, height) brut (LOT-50 TACHE-02). | |
| TEST (RenderCullingTest, QuadTourneChevauchantLeCadrageResteSoumis) | |
| Un décor tourné près du bord du cadrage, dont le rectangle non tourné serait hors champ mais dont la boîte englobante réelle (élargie par la rotation) chevauche le cadrage, reste soumis : un culling naïf sur (x, y, width, height) l'écarterait à tort. | |
| TEST (RenderCullingTest, VolumeProportionnelALaSalleVisible) | |
| Sur un niveau de trois salles, le nombre de primitives composées dépend du contenu de la salle visible, pas de la taille du niveau. | |
| TEST (RenderCullingTest, MargeAppliqueeSurLesQuatreCotes) | |
| Le cadrage utilisé pour le culling est le cadrage visible élargi de la marge, sur les quatre côtés. | |
| TEST (RenderCullingTest, CadrageDeLaCamera) | |
| La caméra fournit le rectangle monde qu'elle cadre, base du culling. | |
Tests unitaires du culling par cadrage caméra (LOT-40, EX-NFR-005, EX-REN-015).
| TEST | ( | RenderCullingTest | , |
| AChevalSurLaFrontiereConserve | ) |
Une primitive à cheval sur la frontière du cadrage est conservée : la marge évite qu'une entité partiellement visible disparaisse prématurément.
Cas de test : Une primitive a cheval sur la frontiere du cadrage est conservee.
Categorie : Unitaire · Render Culling
Criticite : Critique
Etapes :
1. Fixer le cadrage de reference.
2. Composer un quad chevauchant le bord droit, puis un quad entierement dans la marge.
Resultat attendu : Les deux quads sont conserves.
| TEST | ( | RenderCullingTest | , |
| CadrageDeLaCamera | ) |
La caméra fournit le rectangle monde qu'elle cadre, base du culling.
Cas de test : La camera fournit le rectangle monde qu'elle cadre.
Categorie : Unitaire · Render Culling
Criticite : Majeur
Etapes :
1. Centrer une camera 320x160 sur (10, 5) au zoom 1.
2. Lire son cadrage.
Resultat attendu : Le cadrage couvre 20x10 unites a partir de l'origine.
| TEST | ( | RenderCullingTest | , |
| HorsCadrageEcarte | ) |
Une primitive hors du cadrage est écartée ; la même primitive dans le cadrage est conservée.
Cas de test : Une primitive hors cadrage est ecartee, la meme dans le cadrage est conservee.
Categorie : Unitaire · Render Culling
Criticite : Critique
Etapes :
1. Fixer le cadrage de reference.
2. Composer un quad dedans, puis un quad loin dehors.
Resultat attendu : Seul le quad interieur est conserve, et les compteurs le refletent.
| TEST | ( | RenderCullingTest | , |
| MargeAppliqueeSurLesQuatreCotes | ) |
Le cadrage utilisé pour le culling est le cadrage visible élargi de la marge, sur les quatre côtés.
Cas de test : Le cadrage de culling est le cadrage visible elargi de la marge.
Categorie : Unitaire · Render Culling
Criticite : Mineur
Etapes :
1. Fixer le cadrage de reference.
2. Lire le rectangle de culling.
Resultat attendu : Il deborde d'une marge de chaque cote.
| TEST | ( | RenderCullingTest | , |
| PrimitiveEtireeConservee | ) |
La boîte englobante réelle est testée, pas la position d'ancrage : une primitive très étirée dont le coin est hors cadrage reste soumise (cas du fond de niveau, LOT-44).
Cas de test : Une primitive etiree dont l'ancrage est hors cadrage reste soumise.
Categorie : Unitaire · Render Culling
Criticite : Critique
Etapes :
1. Fixer le cadrage de reference.
2. Composer un quad ancre en (0, 0) et large de 200 unites.
Resultat attendu : Le quad est conserve.
| TEST | ( | RenderCullingTest | , |
| QuadTourneChevauchantLeCadrageResteSoumis | ) |
Un décor tourné près du bord du cadrage, dont le rectangle non tourné serait hors champ mais dont la boîte englobante réelle (élargie par la rotation) chevauche le cadrage, reste soumis : un culling naïf sur (x, y, width, height) l'écarterait à tort.
Cas de test : Un quad tourne dont la boite reelle chevauche le cadrage reste soumis.
Categorie : Unitaire · Render Culling
Criticite : Critique
Etapes :
1. Fixer un cadrage de reference.
2. Composer un quad tourne de 45 degres juste a l'exterieur du rectangle non tourne, mais dont la diagonale rentre dans le cadrage.
Resultat attendu : Le quad est conserve.
| TEST | ( | RenderCullingTest | , |
| SansCadrageAucunRejet | ) |
Sans cadrage fixé, aucune primitive n'est écartée : le culling est une décision explicite de l'appelant.
Cas de test : Sans cadrage fixe, aucune primitive n'est ecartee.
Categorie : Unitaire · Render Culling
Criticite : Majeur
Etapes :
1. Composer un quad tres eloigne dans une scene sans cadrage.
Resultat attendu : Le quad est conserve.
| TEST | ( | RenderCullingTest | , |
| SegmentHorizontalConserve | ) |
Un segment horizontal (boîte d'aire nulle sans son épaisseur) traversant le cadrage est conservé : la boîte englobante tient compte de l'épaisseur.
Cas de test : Un segment horizontal traversant le cadrage est conserve.
Categorie : Unitaire · Render Culling
Criticite : Majeur
Etapes :
1. Fixer le cadrage de reference.
2. Composer un segment horizontal a l'interieur, puis un segment horizontal tres au-dessus.
Resultat attendu : Seul le segment interieur est conserve.
| TEST | ( | RenderCullingTest | , |
| SpriteQuadBoundsA90DegresPermuteLargeurEtHauteur | ) |
Un quad texturé tourné d'un quart de tour (90°) a une boîte englobante correspondant à ses dimensions permutées (large devient haut), centrée au même endroit que le rectangle non tourné — le culling doit juger ce rectangle-là, jamais (x, y, width, height) brut (LOT-50 TACHE-02).
Cas de test : spriteQuadBounds a 90 degres permute largeur et hauteur.
Categorie : Unitaire · Render Culling
Criticite : Critique
Etapes :
1. Calculer la boite englobante d'un quad large tourne de 90 degres.
Resultat attendu : La boite est haute (largeur/hauteur permutees), centree au meme endroit.
| TEST | ( | RenderCullingTest | , |
| SpriteQuadBoundsSansRotationEstLeRectangleBrut | ) |
Un quad texturé sans rotation a la même boîte englobante que le rectangle brut (x, y, width, height) : la rotation nulle ne coûte rien et ne change rien.
Cas de test : spriteQuadBounds sans rotation vaut le rectangle brut.
Categorie : Unitaire · Render Culling
Criticite : Majeur
Etapes :
1. Calculer la boite englobante d'un quad de rotation nulle.
Resultat attendu : La boite correspond exactement a (x, y, width, height).
| TEST | ( | RenderCullingTest | , |
| VolumeProportionnelALaSalleVisible | ) |
Sur un niveau de trois salles, le nombre de primitives composées dépend du contenu de la salle visible, pas de la taille du niveau.
Cas de test : Le volume compose depend de la salle visible, pas de la taille du niveau.
Categorie : Unitaire · Render Culling
Criticite : Critique
Etapes :
1. Peupler une ligne de tuiles couvrant trois salles.
2. Cadrer la premiere salle.
3. Composer la scene.
Resultat attendu : Seules les tuiles de la salle visible (marge comprise) sont soumises.