|
JustAnotherDnDGame 0.1.0
Jeu de rôle tactique au d20, vue de dessus, en C++/Qt
|
Tests unitaires du déplacement libre en 8 directions (EX-EXP-001 à EX-EXP-004, LOT-06). More...
#include <cmath>#include <vector>#include <gtest/gtest.h>#include "Core/Ecs/Components/Actor.h"#include "Core/Ecs/Components/Collider.h"#include "Core/Ecs/Components/Transform.h"#include "Core/Ecs/Components/Velocity.h"#include "Core/Ecs/Systems/TopDownMovementSystem.h"#include "Core/Ecs/World.h"#include "Core/Levels/TileMap.h"#include "Core/Levels/TileType.h"#include "Core/Math/Vector2.h"#include "Core/Physics/PlayerInput.h"#include "Core/Physics/TopDownConfig.h"Functions | |
| TEST (DeplacementTopDownTest, LaDiagonaleNEstPasPlusRapide) | |
| La diagonale n'est pas plus rapide que la marche cardinale (EX-EXP-001). | |
| TEST (DeplacementTopDownTest, LesQuatreDirectionsCardinalesSontEquivalentes) | |
| Marcher vers le haut va aussi vite que marcher vers la droite : aucun axe n'est privilégié, faute de gravité (EX-EXP-001). | |
| TEST (DeplacementTopDownTest, AucuneTraverseeDeMurAVitesseAbsurde) | |
| Le personnage ne traverse aucun mur, même lancé à une vitesse absurde : le balayage est continu (EX-EXP-002). | |
| TEST (DeplacementTopDownTest, GlissementLeLongDUnMurPrisEnBiais) | |
| Un mur pris en biais laisse glisser le long de sa surface : l'axe libre continue d'avancer (EX-EXP-003). | |
| TEST (DeplacementTopDownTest, PousserContreUnMurNAccumuleAucunElan) | |
| Pousser contre un mur n'accumule aucun élan : la vitesse de l'axe bloqué est annulée (EX-EXP-003). | |
| TEST (DeplacementTopDownTest, OrientationConserveeALArret) | |
| L'orientation suit la marche et survit à l'arrêt : un personnage immobile regarde là où il allait (EX-EXP-004). | |
| TEST (DeplacementTopDownTest, IntentionRelacheeArreteNet) | |
| Intention relâchée : le personnage s'arrête net, sans dérive résiduelle (EX-EXP-001). | |
| TEST (DeplacementTopDownTest, MemesEntreesMemesPositionsSur600Pas) | |
| Déterminisme : mêmes entrées, mêmes positions, sur 600 pas (EX-NFR-002). | |
| TEST (DeplacementTopDownTest, EntiteSansActeurIgnoree) | |
| Une entité incomplète (sans Actor) est ignorée sans plantage (EX-NFR-040). | |
Tests unitaires du déplacement libre en 8 directions (EX-EXP-001 à EX-EXP-004, LOT-06).
Logique pure : ni fenêtre, ni GPU (EX-ARCH-001).
| TEST | ( | DeplacementTopDownTest | , |
| AucuneTraverseeDeMurAVitesseAbsurde | ) |
Le personnage ne traverse aucun mur, même lancé à une vitesse absurde : le balayage est continu (EX-EXP-002).
Cas de test : Un acteur lance a vitesse absurde ne traverse pas un mur.
Categorie : Unitaire · Deplacement top-down
Criticite : Critique
Etapes :
1. Poser un acteur pres du mur de droite, avec une vitesse de 1000 unites/s.
2. Avancer d'un pas.
Resultat attendu : L'acteur s'arrete contre le mur, du bon cote.
| TEST | ( | DeplacementTopDownTest | , |
| EntiteSansActeurIgnoree | ) |
Une entité incomplète (sans Actor) est ignorée sans plantage (EX-NFR-040).
Cas de test : Une entite sans composant Actor est ignoree sans planter.
Categorie : Unitaire · Deplacement top-down
Criticite : Mineur
Etapes :
1. Creer une entite portant Transform, Velocity et Collider, mais pas Actor.
2. Lui appliquer un pas de deplacement.
Resultat attendu : Sa position n'a pas bouge, et rien n'a plante.
| TEST | ( | DeplacementTopDownTest | , |
| GlissementLeLongDUnMurPrisEnBiais | ) |
Un mur pris en biais laisse glisser le long de sa surface : l'axe libre continue d'avancer (EX-EXP-003).
Cas de test : Un mur pris en biais laisse glisser le long de sa surface.
Categorie : Unitaire · Deplacement top-down
Criticite : Critique
Etapes :
1. Placer un acteur contre le mur du haut.
2. Marcher en diagonale haut-droite pendant 60 pas.
Resultat attendu : L'acteur n'a pas traverse le mur, mais a bien avance vers la droite.
| TEST | ( | DeplacementTopDownTest | , |
| IntentionRelacheeArreteNet | ) |
Intention relâchée : le personnage s'arrête net, sans dérive résiduelle (EX-EXP-001).
Cas de test : Intention relachee, l'acteur s'arrete net.
Categorie : Unitaire · Deplacement top-down
Criticite : Majeur
Etapes :
1. Lancer un acteur a pleine vitesse.
2. Relacher l'intention pendant 60 pas.
Resultat attendu : Sa vitesse est exactement nulle, et sa position ne bouge plus.
| TEST | ( | DeplacementTopDownTest | , |
| LaDiagonaleNEstPasPlusRapide | ) |
La diagonale n'est pas plus rapide que la marche cardinale (EX-EXP-001).
Sans normalisation de l'intention, aller en diagonale donnerait √2 ≈ 1,41 fois la vitesse cardinale : le défaut le plus courant du genre, et le plus visible en jeu. Cas de test : La diagonale n'est pas plus rapide que la marche cardinale.
Categorie : Unitaire · Deplacement top-down
Criticite : Critique
Etapes :
1. Faire marcher un acteur vers la droite pendant 60 pas.
2. Faire marcher un second acteur en diagonale bas-droite pendant 60 pas.
Resultat attendu : Les deux distances parcourues sont egales.
| TEST | ( | DeplacementTopDownTest | , |
| LesQuatreDirectionsCardinalesSontEquivalentes | ) |
Marcher vers le haut va aussi vite que marcher vers la droite : aucun axe n'est privilégié, faute de gravité (EX-EXP-001).
Cas de test : Aucun axe n'est privilegie : la marche est isotrope.
Categorie : Unitaire · Deplacement top-down
Criticite : Majeur
Etapes :
1. Faire marcher un acteur vers chacune des quatre directions cardinales, 30 pas.
Resultat attendu : Les quatre distances parcourues sont egales.
| TEST | ( | DeplacementTopDownTest | , |
| MemesEntreesMemesPositionsSur600Pas | ) |
Déterminisme : mêmes entrées, mêmes positions, sur 600 pas (EX-NFR-002).
Cas de test : Memes entrees, memes positions sur 600 pas.
Categorie : Unitaire · Deplacement top-down
Criticite : Critique
Etapes :
1. Rejouer deux fois la meme sequence de 600 intentions variables.
2. Comparer les trajectoires pas a pas.
Resultat attendu : Les deux trajectoires coincident exactement, au bit pres.
| TEST | ( | DeplacementTopDownTest | , |
| OrientationConserveeALArret | ) |
L'orientation suit la marche et survit à l'arrêt : un personnage immobile regarde là où il allait (EX-EXP-004).
Cas de test : L'orientation suit la marche et survit a l'arret.
Categorie : Unitaire · Deplacement top-down
Criticite : Majeur
Etapes :
1. Marcher vers le bas, puis relacher l'intention pendant 60 pas.
Resultat attendu : L'orientation vaut toujours (0, 1) apres l'arret.
| TEST | ( | DeplacementTopDownTest | , |
| PousserContreUnMurNAccumuleAucunElan | ) |
Pousser contre un mur n'accumule aucun élan : la vitesse de l'axe bloqué est annulée (EX-EXP-003).
Cas de test : Pousser contre un mur n'accumule aucun elan.
Categorie : Unitaire · Deplacement top-down
Criticite : Majeur
Etapes :
1. Pousser un acteur contre le mur de droite pendant 120 pas.
Resultat attendu : Sa vitesse horizontale est nulle, et sa position n'a pas depasse le mur.