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

Tests unitaires de l'émetteur de particules déterministe (LOT-53 TACHE-01, EX-REN-008). More...

#include <vector>
#include <gtest/gtest.h>
#include "Core/Ecs/Components/Actor.h"
#include "Core/Ecs/Components/Particle.h"
#include "Core/Ecs/Systems/ParticleSystem.h"
#include "Core/Ecs/World.h"
#include "Core/Math/Vector2.h"

Functions

 TEST (ParticleSystemTest, DeterminismeMemeSequenceMemesParticules)
 Deux exécutions de la même séquence d'émissions/pas produisent exactement les mêmes particules (position, vitesse, durée de vie) à chaque pas : c'est le test central de la tâche.
 TEST (ParticleSystemTest, BudgetJamaisDepasseRecycleLaPlusAncienne)
 Émettre bien au-delà du budget ne dépasse jamais MAX_PARTICLES, et recycle les plus anciennes en premier (les origines les plus récemment émises survivent).
 TEST (ParticleSystemTest, DureeDeVieDisparaitAuPasAttendu)
 Une particule disparaît exactement au pas où sa durée de vie atteint zéro, ni avant ni après.
 TEST (ParticleSystemTest, AucunEffetSurLesEntitesDeGameplay)
 Les particules n'ont aucun effet sur une entité de gameplay présente dans le même monde.
 TEST (ParticleSystemTest, ClearVideToutesLesParticulesVivantes)
 clear() détruit toutes les particules vivantes (rechargement de niveau, TACHE-02).

Detailed Description

Tests unitaires de l'émetteur de particules déterministe (LOT-53 TACHE-01, EX-REN-008).

Function Documentation

◆ TEST() [1/5]

TEST ( ParticleSystemTest ,
AucunEffetSurLesEntitesDeGameplay  )

Les particules n'ont aucun effet sur une entité de gameplay présente dans le même monde.

Cas de test : Aucun effet sur le gameplay.
Categorie : Unitaire · Émetteur de particules
Criticite : Critique
Etapes :
1. Peupler un core::Actor dans le monde.
2. Émettre et simuler des particules plusieurs pas.
Resultat attendu : Les champs du core::Actor restent strictement inchangés.

◆ TEST() [2/5]

TEST ( ParticleSystemTest ,
BudgetJamaisDepasseRecycleLaPlusAncienne  )

Émettre bien au-delà du budget ne dépasse jamais MAX_PARTICLES, et recycle les plus anciennes en premier (les origines les plus récemment émises survivent).

Cas de test : Budget : jamais dépassé, recyclage de la plus ancienne.
Categorie : Unitaire · Émetteur de particules
Criticite : Critique
Etapes :
1. Émettre MAX_PARTICLES + 5 particules individuelles, une origine distincte chacune (x = 0, 1, 2...).
2. Lire le nombre de particules vivantes et leurs origines.
Resultat attendu : aliveCount() == MAX_PARTICLES ; les 5 premières origines (x = 0..4) ont disparu, les plus récentes (x = 5..MAX_PARTICLES+4) sont toutes présentes.

◆ TEST() [3/5]

TEST ( ParticleSystemTest ,
ClearVideToutesLesParticulesVivantes  )

clear() détruit toutes les particules vivantes (rechargement de niveau, TACHE-02).

Cas de test : clear() vide toutes les particules vivantes.
Categorie : Unitaire · Émetteur de particules
Criticite : Majeur
Etapes :
1. Émettre plusieurs particules.
2. Appeler clear().
Resultat attendu : aliveCount() == 0, et la simulation suivante n'a rien à intégrer.

◆ TEST() [4/5]

TEST ( ParticleSystemTest ,
DeterminismeMemeSequenceMemesParticules  )

Deux exécutions de la même séquence d'émissions/pas produisent exactement les mêmes particules (position, vitesse, durée de vie) à chaque pas : c'est le test central de la tâche.

Cas de test : Déterminisme : même séquence -> mêmes particules.
Categorie : Unitaire · Émetteur de particules
Criticite : Critique
Etapes :
1. Deux ParticleSystem/World construits à l'identique (graine par défaut).

  1. Rejouer sur chacun la même séquence : émettre un effet dispersé, avancer plusieurs pas, émettre à nouveau, avancer encore.
    Resultat attendu : Les deux mondes contiennent, à chaque pas, des particules aux mêmes positions, vitesses et durées de vie restantes.

◆ TEST() [5/5]

TEST ( ParticleSystemTest ,
DureeDeVieDisparaitAuPasAttendu  )

Une particule disparaît exactement au pas où sa durée de vie atteint zéro, ni avant ni après.

Cas de test : Durée de vie : disparition au pas attendu.
Categorie : Unitaire · Émetteur de particules
Criticite : Majeur
Etapes :
1. Émettre une particule de durée de vie fixe 1,0 s.
2. Avancer de 0,25 s par pas (fixedDelta, exactement représentable en flottant), trois fois.
3. Avancer un quatrième pas.
Resultat attendu : Vivante après les trois premiers pas (life = 0,25) ; disparue après le quatrième.