|
JustAnotherDnDGame 0.1.0
Jeu de rôle tactique au d20, vue de dessus, en C++/Qt
|
Tests unitaires du décalage de parallaxe, de son bornage et de sa table d'activation (LOT-49 TACHE-03, généralisé au LOT-69 TACHE-06 : facteur par axe, porté par le plan). More...
#include <cmath>#include <gtest/gtest.h>#include "Core/Levels/CameraFraming.h"#include "Core/Math/Rect.h"#include "Core/Math/Vector2.h"#include "HMI/Graphics/Camera2D.h"#include "HMI/Graphics/Parallax.h"Functions | |
| TEST (ParallaxTest, FacteurUnLaissePositionInchangee) | |
| À facteur 1.0, la position de rendu est strictement inchangée, quel que soit le cadrage de la caméra. | |
| TEST (ParallaxTest, FacteurParAxeAgitIndependamment) | |
| Le facteur est par axe : un plan peut défiler horizontalement sans bouger verticalement, ce qu'un facteur unique ne pouvait pas exprimer. | |
| TEST (ParallaxTest, FacteursOpposesProduisentDesDecalagesOpposesEtProportionnels) | |
| Deux facteurs équidistants de 1.0 produisent des décalages de sens opposés et de même amplitude (proportionnalité au facteur). | |
| TEST (ParallaxTest, MemePositionRelativeDonneMemePositionEcranEntreSalles) | |
| Le décalage se calcule depuis le centre de la salle courante : un contenu à la même position relative dans deux salles différentes se retrouve au même endroit à l'écran — c'est le test qui verrouille l'arbitrage (decors.md). | |
| TEST (ParallaxTest, ParallaxModelPositionEstLInverseDeParallaxRenderPosition) | |
| parallaxModelPosition est l'inverse exact de parallaxRenderPosition. | |
| TEST (ParallaxTest, DecalageBorneLaisseLePlanCouvrantAuBordDuNiveau) | |
| Un plan à facteur 0,5, caméra au bord du niveau, couvre toujours le cadrage : le décalage est borné avant d'être appliqué. | |
| TEST (ParallaxTest, PlanPlusPetitQueLeCadrageNEstPasDecale) | |
| Un plan plus petit que le cadrage ne peut être couvrant : son décalage est ramené à zéro plutôt que de le laisser dériver. | |
| TEST (ParallaxTest, RoundToScreenPixelArrondiAuPixelEcran) | |
| L'arrondi au pixel écran s'applique après le bornage : un décalage borné reste fractionnaire, et c'est lui qu'il faut aligner. | |
| TEST (ParallaxTest, TableDActivationExhaustive) | |
| La table d'activation est exhaustive : trois modes de cadrage × deux valeurs du drapeau de niveau, aucune combinaison laissée à l'interprétation. | |
Tests unitaires du décalage de parallaxe, de son bornage et de sa table d'activation (LOT-49 TACHE-03, généralisé au LOT-69 TACHE-06 : facteur par axe, porté par le plan).
| TEST | ( | ParallaxTest | , |
| DecalageBorneLaisseLePlanCouvrantAuBordDuNiveau | ) |
Un plan à facteur 0,5, caméra au bord du niveau, couvre toujours le cadrage : le décalage est borné avant d'être appliqué.
Sans ce bornage, une bande vide apparaîtrait au bout de la course — le défaut ne se verrait qu'au bord d'un niveau, en jeu, et pas une seule fois pendant l'édition. Cas de test : Un plan borne couvre toujours le cadrage, camera au bord du niveau.
Categorie : Unitaire · Parallax
Criticite : Critique
Etapes :
1. Placer la camera contre le bord droit d'un niveau et calculer le decalage d'un plan a facteur 0,1.
2. Borner ce decalage.
Resultat attendu : Le plan decale contient encore entierement le cadrage.
| TEST | ( | ParallaxTest | , |
| FacteurParAxeAgitIndependamment | ) |
Le facteur est par axe : un plan peut défiler horizontalement sans bouger verticalement, ce qu'un facteur unique ne pouvait pas exprimer.
Cas de test : Le facteur de parallaxe agit axe par axe.
Categorie : Unitaire · Parallax
Criticite : Critique
Etapes :
1. Calculer la position de rendu avec un facteur different sur X et sur Y.
Resultat attendu : X est decale, Y reste inchange.
| TEST | ( | ParallaxTest | , |
| FacteursOpposesProduisentDesDecalagesOpposesEtProportionnels | ) |
Deux facteurs équidistants de 1.0 produisent des décalages de sens opposés et de même amplitude (proportionnalité au facteur).
Cas de test : Des facteurs opposes autour de 1 produisent des decalages opposes.
Categorie : Unitaire · Parallax
Criticite : Critique
Etapes :
1. Calculer le decalage pour un facteur inferieur et un facteur superieur a 1, equidistants.
Resultat attendu : Les deux decalages sont de signe oppose et de meme amplitude.
| TEST | ( | ParallaxTest | , |
| FacteurUnLaissePositionInchangee | ) |
À facteur 1.0, la position de rendu est strictement inchangée, quel que soit le cadrage de la caméra.
Cas de test : Facteur 1 laisse la position inchangee.
Categorie : Unitaire · Parallax
Criticite : Critique
Etapes :
1. Calculer la position de rendu a facteur 1.0 sur les deux axes.
Resultat attendu : La position renvoyee est identique a la position modele.
| TEST | ( | ParallaxTest | , |
| MemePositionRelativeDonneMemePositionEcranEntreSalles | ) |
Le décalage se calcule depuis le centre de la salle courante : un contenu à la même position relative dans deux salles différentes se retrouve au même endroit à l'écran — c'est le test qui verrouille l'arbitrage (decors.md).
Cas de test : Meme position relative -> meme position ecran dans deux salles.
Categorie : Unitaire · Parallax
Criticite : Critique
Etapes :
1. Placer un point a la meme position RELATIVE dans deux salles de centres differents.
2. Comparer leurs positions de rendu, ramenees au centre de leur salle.
Resultat attendu : Les deux ecarts au centre sont identiques.
| TEST | ( | ParallaxTest | , |
| ParallaxModelPositionEstLInverseDeParallaxRenderPosition | ) |
parallaxModelPosition est l'inverse exact de parallaxRenderPosition.
Cas de test : parallaxModelPosition est l'inverse de parallaxRenderPosition.
Categorie : Unitaire · Parallax
Criticite : Critique
Etapes :
1. Convertir une position modele en position de rendu, puis revenir.
Resultat attendu : La position de depart est retrouvee sur les deux axes.
| TEST | ( | ParallaxTest | , |
| PlanPlusPetitQueLeCadrageNEstPasDecale | ) |
Un plan plus petit que le cadrage ne peut être couvrant : son décalage est ramené à zéro plutôt que de le laisser dériver.
Cas de test : Un plan plus petit que le cadrage n'est pas decale.
Categorie : Unitaire · Parallax
Criticite : Majeur
Etapes :
1. Borner un decalage pour un plan plus petit que le cadrage.
Resultat attendu : Le decalage vaut zero sur les deux axes.
| TEST | ( | ParallaxTest | , |
| RoundToScreenPixelArrondiAuPixelEcran | ) |
L'arrondi au pixel écran s'applique après le bornage : un décalage borné reste fractionnaire, et c'est lui qu'il faut aligner.
Cas de test : roundToScreenPixel arrondit au pixel ecran le plus proche.
Categorie : Unitaire · Parallax
Criticite : Critique
Etapes :
1. Arrondir une position fractionnaire a une echelle de 16 px par unite.
2. Recommencer a echelle nulle.
Resultat attendu : La position est alignee au pixel ; a echelle nulle, elle est renvoyee inchangee.
| TEST | ( | ParallaxTest | , |
| TableDActivationExhaustive | ) |
La table d'activation est exhaustive : trois modes de cadrage × deux valeurs du drapeau de niveau, aucune combinaison laissée à l'interprétation.
Le mode suivi y est actif, ce qui inverse la décision du LOT-64 — assumé : celui-ci avait coupé la parallaxe parce qu'un décor est un objet collé au contenu et paraissait « suivre » la caméra ; un plan est un fond, l'argument tombe. Cas de test : La table d'activation de la parallaxe est exhaustive.
Categorie : Unitaire · Parallax
Criticite : Critique
Etapes :
1. Interroger planeParallaxActive pour les trois modes de cadrage, drapeau actif puis inactif.
Resultat attendu : Actif en suivi et par salle, neutralise en niveau entier ; toujours inactif si le drapeau du niveau est faux.