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

Tests unitaires du tri par profondeur en vue de dessus (EX-REN-018, LOT-07). More...

#include <vector>
#include <gtest/gtest.h>
#include "Core/Ecs/Components/Sprite.h"
#include "Core/Ecs/Components/Transform.h"
#include "Core/Ecs/World.h"
#include "Core/Math/Vector2.h"
#include "HMI/Graphics/ComposedScene.h"
#include "HMI/Graphics/MissingTexture.h"
#include "HMI/Graphics/QuadRecorder.h"
#include "HMI/Graphics/RenderLayer.h"

Functions

 TEST (TriParProfondeurTest, TroisPrimitivesSortentParPiedCroissant)
 Trois primitives de la bande de profondeur, à Y croissants, sortent dans l'ordre de leur pied — même quand leurs textures diffèrent (EX-REN-018).
 TEST (TriParProfondeurTest, PersonnageEntreDeuxObjets)
 Le personnage passe derrière un objet plus bas et devant un objet plus haut : le rang de calque ne tranche plus à l'intérieur de la bande (EX-REN-018).
 TEST (TriParProfondeurTest, PiedEgalConserveLOrdreDeComposition)
 À pied égal, l'ordre reste celui de la composition : deux sprites ne peuvent pas scintiller d'une image à l'autre (EX-REN-018).
 TEST (TriParProfondeurTest, QuantificationAuPixel)
 Un écart de moins d'un pixel ne départage pas deux profondeurs : la quantification au pixel évite qu'un arrondi flottant fasse permuter deux sprites (EX-REN-018).
 TEST (TriParProfondeurTest, LaProfondeurNeDebordePasDeSaBande)
 Les bandes restent hiérarchisées : la profondeur ne fait jamais passer un objet devant un plan de premier plan, ni sous les tuiles (EX-REN-014).
 TEST (TriParProfondeurTest, CompositionAlimenteLaProfondeurDepuisLePied)
 La composition depuis l'ECS alimente elle-même l'ordre de profondeur, depuis le pied du quad : deux sprites de hauteurs différentes posés sur la même case s'ordonnent pareil (EX-REN-018).
 TEST (TriParProfondeurTest, HorsBandeLeTriFinResteCeluiDeLaCouche)
 Hors de la bande de profondeur, core::Sprite::layer conserve son rôle de tri fin : le rang de couche du LOT-04 continue d'ordonner sol et décor entre eux (EX-LVL-016).

Detailed Description

Tests unitaires du tri par profondeur en vue de dessus (EX-REN-018, LOT-07).

Composition pure, sans GPU (EX-NFR-004).

Function Documentation

◆ TEST() [1/7]

TEST ( TriParProfondeurTest ,
CompositionAlimenteLaProfondeurDepuisLePied  )

La composition depuis l'ECS alimente elle-même l'ordre de profondeur, depuis le pied du quad : deux sprites de hauteurs différentes posés sur la même case s'ordonnent pareil (EX-REN-018).

Cas de test : La composition alimente l'ordre de profondeur depuis le pied du quad.
Categorie : Unitaire · Tri par profondeur
Criticite : Critique
Etapes :
1. Peupler un monde d'un objet haut et d'un personnage bas, poses sur la meme ligne.
2. Composer depuis l'ECS et trier.
Resultat attendu : Les deux portent le meme ordre de profondeur, celui de leur pied commun.

◆ TEST() [2/7]

TEST ( TriParProfondeurTest ,
HorsBandeLeTriFinResteCeluiDeLaCouche  )

Hors de la bande de profondeur, core::Sprite::layer conserve son rôle de tri fin : le rang de couche du LOT-04 continue d'ordonner sol et décor entre eux (EX-LVL-016).

Cas de test : Hors bande de profondeur, le tri fin reste celui de Sprite::layer.
Categorie : Unitaire · Tri par profondeur
Criticite : Majeur
Etapes :
1. Peupler un monde de deux tuiles de rangs de couche differents, la seconde plus basse.
2. Composer et trier.
Resultat attendu : L'ordre suit le rang de couche, pas la position.

◆ TEST() [3/7]

TEST ( TriParProfondeurTest ,
LaProfondeurNeDebordePasDeSaBande  )

Les bandes restent hiérarchisées : la profondeur ne fait jamais passer un objet devant un plan de premier plan, ni sous les tuiles (EX-REN-014).

Cas de test : La profondeur ne deborde pas de sa bande.
Categorie : Unitaire · Tri par profondeur
Criticite : Critique
Etapes :
1. Composer une tuile, un objet tres bas, un plan de premier plan tres haut.
2. Trier.
Resultat attendu : La tuile sort en premier, l'objet ensuite, le premier plan en dernier.

◆ TEST() [4/7]

TEST ( TriParProfondeurTest ,
PersonnageEntreDeuxObjets  )

Le personnage passe derrière un objet plus bas et devant un objet plus haut : le rang de calque ne tranche plus à l'intérieur de la bande (EX-REN-018).

Cas de test : Le personnage passe derriere un objet plus bas et devant un objet plus haut.
Categorie : Unitaire · Tri par profondeur
Criticite : Critique
Etapes :
1. Composer un arbre au-dessus du personnage, le personnage, puis un arbre en dessous.
2. Trier.
Resultat attendu : L'arbre du haut sort avant le personnage, celui du bas apres.

◆ TEST() [5/7]

TEST ( TriParProfondeurTest ,
PiedEgalConserveLOrdreDeComposition  )

À pied égal, l'ordre reste celui de la composition : deux sprites ne peuvent pas scintiller d'une image à l'autre (EX-REN-018).

Cas de test : A pied egal, l'ordre de composition est preserve : aucun scintillement.
Categorie : Unitaire · Tri par profondeur
Criticite : Critique
Etapes :
1. Composer trois primitives de meme pied, a des positions differentes.
2. Trier.
3. Recomposer et retrier a l'identique.
Resultat attendu : Les deux tris rendent exactement le meme ordre.

◆ TEST() [6/7]

TEST ( TriParProfondeurTest ,
QuantificationAuPixel  )

Un écart de moins d'un pixel ne départage pas deux profondeurs : la quantification au pixel évite qu'un arrondi flottant fasse permuter deux sprites (EX-REN-018).

Cas de test : Un ecart inferieur au pixel ne departage pas deux profondeurs.
Categorie : Unitaire · Tri par profondeur
Criticite : Majeur
Etapes :
1. Calculer l'ordre de deux pieds distants d'un centieme d'unite.
2. Le comparer a celui de deux pieds distants d'une demi-unite.
Resultat attendu : Le premier couple partage le meme ordre, le second non.

◆ TEST() [7/7]

TEST ( TriParProfondeurTest ,
TroisPrimitivesSortentParPiedCroissant  )

Trois primitives de la bande de profondeur, à Y croissants, sortent dans l'ordre de leur pied — même quand leurs textures diffèrent (EX-REN-018).

C'est le cœur du lot : avant lui, le regroupement par texture tranchait avant le tri fin, et l'ordre de profondeur ne survivait pas à deux textures. Cas de test : Trois primitives a Y croissants sortent dans l'ordre de leur pied.
Categorie : Unitaire · Tri par profondeur
Criticite : Critique
Etapes :
1. Composer trois primitives de la bande de profondeur, dans le desordre, avec deux textures differentes.
2. Trier la scene.
Resultat attendu : Les trois sortent par pied croissant, quelle que soit leur texture.