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

Tests unitaires des mécanismes interrupteur↔porte (MechanismController). More...

#include <utility>
#include <vector>
#include <gtest/gtest.h>
#include "Core/Gameplay/MechanismController.h"
#include "Core/Levels/GridPosition.h"
#include "Core/Levels/Level.h"
#include "Core/Levels/TileMap.h"
#include "Core/Levels/TileType.h"
#include "Core/Math/Vector2.h"
#include "Core/Physics/Aabb.h"

Functions

 TEST (MechanismControllerTest, ContactOuvreLaPorte)
 Au départ, la porte est fermée (solide) ; toucher l'interrupteur l'ouvre.
 TEST (MechanismControllerTest, BasculeSurFront)
 La bascule est sur front : rester sur l'interrupteur ne re-bascule pas ; revenir bascule.
 TEST (MechanismControllerTest, SansContactRienNeChange)
 Loin de l'interrupteur, rien ne change (la porte reste fermée).
 TEST (MechanismControllerTest, PlaqueDePressionActivationContinue)
 Une plaque de pression ouvre la porte tant que le poids y repose, et la referme dès qu'il en part — activation continue, sans effet de front (EX-GP-025).
 TEST (MechanismControllerTest, PlaqueDePressionPoidsInsuffisant)
 Un poids insuffisant sur la plaque de pression n'ouvre pas la porte.
 TEST (MechanismControllerTest, ContactSeulNOuvrePasLaPorteVerrouillee)
 Le simple contact sur la clé, sans « Interagir », n'ouvre pas la porte verrouillée — contrairement à l'interrupteur (EX-GP-023, EX-CTRL-022).
 TEST (MechanismControllerTest, ContactEtInteragirRamasseLaCleEtOuvreDefinitivement)
 Contact + « Interagir » ramasse la clé et ouvre définitivement la porte verrouillée.
 TEST (MechanismControllerTest, InteragirSansContactNeRamassePasLaCle)
 « Interagir » sans être au contact de la clé ne ramasse rien.
 TEST (MechanismControllerTest, DeuxPairesCleEtPorteIndependantes)
 Deux paires clé/porte verrouillée indépendantes ne s'influencent pas : ramasser l'une n'ouvre pas l'autre.
 TEST (MechanismControllerTest, RechargementReinitialiseCleEtPorte)
 Reconstruire le contrôleur (rechargement du niveau) remet la clé et la porte dans leur état initial (EX-GP-024, même principe que le budget de mouvements).

Detailed Description

Tests unitaires des mécanismes interrupteur↔porte (MechanismController).

Function Documentation

◆ TEST() [1/10]

TEST ( MechanismControllerTest ,
BasculeSurFront  )

La bascule est sur front : rester sur l'interrupteur ne re-bascule pas ; revenir bascule.

Cas de test : La bascule est sur front : rester sur l'interrupteur ne re-bascule pas ; revenir bascule.
Categorie : Unitaire · Mechanism Controller
Criticite : Majeur
Etapes :
1. Mettre en place le contexte du test (arrangement).
2. Executer le scenario et verifier les assertions.
Resultat attendu : La bascule est sur front : rester sur l'interrupteur ne re-bascule pas ; revenir bascule.

◆ TEST() [2/10]

TEST ( MechanismControllerTest ,
ContactEtInteragirRamasseLaCleEtOuvreDefinitivement  )

Contact + « Interagir » ramasse la clé et ouvre définitivement la porte verrouillée.

Cas de test : Contact + Interagir ramasse la clé et ouvre définitivement la porte verrouillée.
Categorie : Unitaire · Mechanism Controller
Criticite : Bloquant
Etapes :
1. Mettre en place le contexte du test (arrangement).
2. Executer le scenario et verifier les assertions.
Resultat attendu : La porte s'ouvre au contact + Interagir, et reste ouverte quoi qu'il arrive ensuite.

◆ TEST() [3/10]

TEST ( MechanismControllerTest ,
ContactOuvreLaPorte  )

Au départ, la porte est fermée (solide) ; toucher l'interrupteur l'ouvre.

Cas de test : Au départ, la porte est fermée (solide) ; toucher l'interrupteur l'ouvre.
Categorie : Unitaire · Mechanism Controller
Criticite : Majeur
Etapes :
1. Mettre en place le contexte du test (arrangement).
2. Executer le scenario et verifier les assertions.
Resultat attendu : Au départ, la porte est fermée (solide) ; toucher l'interrupteur l'ouvre.

◆ TEST() [4/10]

TEST ( MechanismControllerTest ,
ContactSeulNOuvrePasLaPorteVerrouillee  )

Le simple contact sur la clé, sans « Interagir », n'ouvre pas la porte verrouillée — contrairement à l'interrupteur (EX-GP-023, EX-CTRL-022).

Cas de test : Le simple contact sur la clé n'ouvre pas la porte verrouillée.
Categorie : Unitaire · Mechanism Controller
Criticite : Bloquant
Etapes :
1. Mettre en place le contexte du test (arrangement).
2. Executer le scenario et verifier les assertions.
Resultat attendu : Le contact seul (sans Interagir) n'ouvre pas la porte verrouillée.

◆ TEST() [5/10]

TEST ( MechanismControllerTest ,
DeuxPairesCleEtPorteIndependantes  )

Deux paires clé/porte verrouillée indépendantes ne s'influencent pas : ramasser l'une n'ouvre pas l'autre.

Cas de test : Deux paires clé/porte verrouillée indépendantes ne s'influencent pas.
Categorie : Unitaire · Mechanism Controller
Criticite : Bloquant
Etapes :
1. Mettre en place le contexte du test (arrangement).
2. Executer le scenario et verifier les assertions.
Resultat attendu : Ramasser la première clé ouvre uniquement sa porte, l'autre paire reste fermée.

◆ TEST() [6/10]

TEST ( MechanismControllerTest ,
InteragirSansContactNeRamassePasLaCle  )

« Interagir » sans être au contact de la clé ne ramasse rien.

Cas de test : Interagir sans contact ne ramasse pas la clé.
Categorie : Unitaire · Mechanism Controller
Criticite : Majeur
Etapes :
1. Mettre en place le contexte du test (arrangement).
2. Executer le scenario et verifier les assertions.
Resultat attendu : Interagir loin de la clé n'a aucun effet.

◆ TEST() [7/10]

TEST ( MechanismControllerTest ,
PlaqueDePressionActivationContinue  )

Une plaque de pression ouvre la porte tant que le poids y repose, et la referme dès qu'il en part — activation continue, sans effet de front (EX-GP-025).

Cas de test : Une plaque de pression ouvre la porte tant que le poids y repose, et la referme dès qu'il en part.
Categorie : Unitaire · Mechanism Controller
Criticite : Majeur
Etapes :
1. Mettre en place le contexte du test (arrangement).
2. Executer le scenario et verifier les assertions.
Resultat attendu : Une plaque de pression ouvre la porte tant que le poids y repose, et la referme dès qu'il en part.

◆ TEST() [8/10]

TEST ( MechanismControllerTest ,
PlaqueDePressionPoidsInsuffisant  )

Un poids insuffisant sur la plaque de pression n'ouvre pas la porte.

Cas de test : Un poids insuffisant sur la plaque de pression n'ouvre pas la porte.
Categorie : Unitaire · Mechanism Controller
Criticite : Majeur
Etapes :
1. Mettre en place le contexte du test (arrangement).
2. Executer le scenario et verifier les assertions.
Resultat attendu : Un poids insuffisant sur la plaque de pression n'ouvre pas la porte.

◆ TEST() [9/10]

TEST ( MechanismControllerTest ,
RechargementReinitialiseCleEtPorte  )

Reconstruire le contrôleur (rechargement du niveau) remet la clé et la porte dans leur état initial (EX-GP-024, même principe que le budget de mouvements).

Cas de test : Reconstruire le contrôleur remet la clé et la porte dans leur état initial.
Categorie : Unitaire · Mechanism Controller
Criticite : Majeur
Etapes :
1. Mettre en place le contexte du test (arrangement).
2. Executer le scenario et verifier les assertions.
Resultat attendu : Un nouveau contrôleur construit sur le même niveau redémarre porte fermée, clé non ramassée.

◆ TEST() [10/10]

TEST ( MechanismControllerTest ,
SansContactRienNeChange  )

Loin de l'interrupteur, rien ne change (la porte reste fermée).

Cas de test : Loin de l'interrupteur, rien ne change (la porte reste fermée).
Categorie : Unitaire · Mechanism Controller
Criticite : Majeur
Etapes :
1. Mettre en place le contexte du test (arrangement).
2. Executer le scenario et verifier les assertions.
Resultat attendu : Loin de l'interrupteur, rien ne change (la porte reste fermée).