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

Tests unitaires de la caméra de suivi : zone morte, anticipation, lissage, bornage (EX-REN-016, LOT-64 TACHE-02). More...

#include <vector>
#include <gtest/gtest.h>
#include "Core/Math/Rect.h"
#include "Core/Math/Vector2.h"
#include "HMI/Graphics/FollowCamera.h"

Functions

 TEST (FollowCameraTest, PremierAppelDemarreSurLePersonnage)
 Le premier appel démarre la caméra directement sur le personnage (borné), sans lissage depuis une position par défaut arbitraire.
 TEST (FollowCameraTest, ZoneMorteImmobiliseLaCameraTantQueLePersonnageYReste)
 Un déplacement à l'intérieur de la zone morte ne déplace pas la caméra ; en sortir la déplace.
 TEST (FollowCameraTest, BornageEmpecheDeMontrerHorsDesLimitesSurLesQuatreBords)
 Sur un niveau plus grand que le cadrage, la caméra ne montre jamais au-delà des limites, sur les quatre bords.
 TEST (FollowCameraTest, NiveauPlusEtroitQueLeCadrageCentreLaCameraSurCetAxe)
 Un niveau plus étroit que le cadrage sur un axe centre la caméra sur cet axe, plutôt que de la coller à un bord.
 TEST (FollowCameraTest, AnticipationSInverseProgressivementSansDiscontinuite)
 L'anticipation s'inverse progressivement au changement de sens : après un pas dans le nouveau sens, elle n'a pas encore atteint la valeur opposée – pas de discontinuité.
 TEST (FollowCameraTest, ArretConserveLaDerniereAnticipation)
 À l'arrêt (sens nul), l'anticipation conserve sa dernière valeur plutôt que de revenir à zéro.
 TEST (FollowCameraTest, MemesEntreesMemeTrajectoire)
 Mêmes entrées, même trajectoire de caméra (déterminisme, EX-NFR-002).
 TEST (FollowCameraTest, SuiviIsotropeSurLesDeuxAxes)
 Le suivi est isotrope : marcher vers le bas décale la caméra exactement autant que marcher vers la droite (EX-EXP-001, LOT-07).
 TEST (FollowCameraTest, AnticipationVerticale)
 L'anticipation suit la direction de marche sur les deux axes : marcher vers le haut décale la caméra vers le haut (LOT-07).

Detailed Description

Tests unitaires de la caméra de suivi : zone morte, anticipation, lissage, bornage (EX-REN-016, LOT-64 TACHE-02).

Function Documentation

◆ TEST() [1/9]

TEST ( FollowCameraTest ,
AnticipationSInverseProgressivementSansDiscontinuite  )

L'anticipation s'inverse progressivement au changement de sens : après un pas dans le nouveau sens, elle n'a pas encore atteint la valeur opposée – pas de discontinuité.

Cas de test : L'anticipation s'inverse progressivement, sans discontinuité.
Categorie : Unitaire · Follow Camera
Criticite : Majeur
Etapes :
1. Avancer de nombreux pas vers la droite (anticipation proche de +1).
2. Inverser le sens d'un seul pas.
Resultat attendu : L'anticipation reste strictement positive juste après l'inversion (elle a commencé à revenir, mais n'a pas sauté à -1).

◆ TEST() [2/9]

TEST ( FollowCameraTest ,
AnticipationVerticale  )

L'anticipation suit la direction de marche sur les deux axes : marcher vers le haut décale la caméra vers le haut (LOT-07).

Cas de test : L'anticipation suit la marche verticale, pas seulement l'horizontale.
Categorie : Unitaire · Camera de suivi
Criticite : Majeur
Etapes :
1. Faire marcher le personnage vers le haut, sans bouger, sur 60 pas.
Resultat attendu : L'anticipation verticale s'etablit vers le haut, l'horizontale reste nulle.

◆ TEST() [3/9]

TEST ( FollowCameraTest ,
ArretConserveLaDerniereAnticipation  )

À l'arrêt (sens nul), l'anticipation conserve sa dernière valeur plutôt que de revenir à zéro.

Cas de test : À l'arrêt, l'anticipation conserve sa dernière valeur.
Categorie : Unitaire · Follow Camera
Criticite : Mineur
Etapes :
1. Établir une anticipation vers la droite.
2. Avancer un pas avec un sens nul (personnage immobile).
Resultat attendu : L'anticipation reste inchangée.

◆ TEST() [4/9]

TEST ( FollowCameraTest ,
BornageEmpecheDeMontrerHorsDesLimitesSurLesQuatreBords  )

Sur un niveau plus grand que le cadrage, la caméra ne montre jamais au-delà des limites, sur les quatre bords.

Cas de test : Le bornage empêche de montrer hors des limites du niveau, sur les quatre bords.
Categorie : Unitaire · Follow Camera
Criticite : Critique
Etapes :
1. Amener le personnage successivement dans chaque coin du niveau.
2. Avancer suffisamment de pas pour que la caméra rattrape sa cible.
Resultat attendu : Le centre reste toujours à au moins une demi-largeur/demi-hauteur de cadrage des bords du niveau, sur les quatre côtés.

◆ TEST() [5/9]

TEST ( FollowCameraTest ,
MemesEntreesMemeTrajectoire  )

Mêmes entrées, même trajectoire de caméra (déterminisme, EX-NFR-002).

Cas de test : Mêmes entrées, même trajectoire de caméra.
Categorie : Unitaire · Follow Camera
Criticite : Majeur
Etapes :
1. Rejouer deux fois la même séquence de positions depuis un état vierge.
2. Comparer les états finaux.
Resultat attendu : Les deux trajectoires produisent exactement le même état final.

◆ TEST() [6/9]

TEST ( FollowCameraTest ,
NiveauPlusEtroitQueLeCadrageCentreLaCameraSurCetAxe  )

Un niveau plus étroit que le cadrage sur un axe centre la caméra sur cet axe, plutôt que de la coller à un bord.

Cas de test : Un axe plus étroit que le cadrage centre la caméra, sans la coller à un bord.
Categorie : Unitaire · Follow Camera
Criticite : Majeur
Etapes :
1. Construire un niveau plus étroit que le cadrage sur l'axe horizontal.
2. Amener le personnage tout contre le bord gauche puis avancer suffisamment de pas.
Resultat attendu : Le centre horizontal reste au milieu du niveau, jamais collé au bord.

◆ TEST() [7/9]

TEST ( FollowCameraTest ,
PremierAppelDemarreSurLePersonnage  )

Le premier appel démarre la caméra directement sur le personnage (borné), sans lissage depuis une position par défaut arbitraire.

Cas de test : Le premier appel démarre la caméra sur le personnage.
Categorie : Unitaire · Follow Camera
Criticite : Majeur
Etapes :
1. Avancer un état non initialisé pour un personnage loin des bords.
2. Vérifier le centre résultant.
Resultat attendu : Le centre résultant est exactement la position du personnage.

◆ TEST() [8/9]

TEST ( FollowCameraTest ,
SuiviIsotropeSurLesDeuxAxes  )

Le suivi est isotrope : marcher vers le bas décale la caméra exactement autant que marcher vers la droite (EX-EXP-001, LOT-07).

La zone morte du jeu de plateforme était plus large que haute, et l'anticipation purement horizontale : deux biais qui n'ont plus lieu d'être dès lors qu'aucun axe n'est privilégié. Cas de test : Le suivi est isotrope : haut, bas, gauche et droite se valent.
Categorie : Unitaire · Camera de suivi
Criticite : Majeur
Etapes :
1. Faire marcher le personnage vers la droite sur 60 pas, camera suivie.
2. Recommencer vers le bas.
Resultat attendu : Les deux deplacements de camera ont la meme amplitude.

◆ TEST() [9/9]

TEST ( FollowCameraTest ,
ZoneMorteImmobiliseLaCameraTantQueLePersonnageYReste  )

Un déplacement à l'intérieur de la zone morte ne déplace pas la caméra ; en sortir la déplace.

Cas de test : La zone morte immobilise la caméra tant que le personnage y reste.
Categorie : Unitaire · Follow Camera
Criticite : Critique
Etapes :
1. Initialiser la caméra sur le personnage.
2. Déplacer le personnage d'une distance inférieure à la zone morte.
3. Le déplacer d'une distance qui en sort.
Resultat attendu : Le déplacement interne à la zone morte ne change ni l'ancre ni le centre visé ; sortir de la zone morte déplace l'ancre.