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

Tests unitaires de core::GridDistanceField (amendement LOT-ANNEXE-08, EX-IA-023). More...

#include <gtest/gtest.h>
#include "Core/Levels/GridPosition.h"
#include "Core/Levels/TileMap.h"
#include "Core/Levels/TileType.h"
#include "Core/World/GridDistanceField.h"

Functions

 TEST (GridDistanceFieldTest, DistanceDeLaCibleAElleMemeEstNulle)
 La cible a une distance de zéro à elle-même.
 TEST (GridDistanceFieldTest, GrilleOuverteEgaleDistanceDeManhattan)
 Sur une grille ouverte, la distance vaut la distance de Manhattan (BFS 4-connexe sans obstacle).
 TEST (GridDistanceFieldTest, MurSeparateurCompletRendInatteignable)
 Un mur entièrement séparateur rend les cases de l'autre côté inatteignables (distance sentinelle), sans planter.
 TEST (GridDistanceFieldTest, MurPartielForceUnDetourPlusLongQueLaLigneDirecte)
 Un mur partiel force un détour : la distance de grille suit le chemin réel, plus longue que la distance de Manhattan en ligne directe.
 TEST (GridDistanceFieldTest, CaseHorsGrilleRenvoieLaSentinelle)
 Une case hors-grille renvoie la distance sentinelle sans planter.
 TEST (GridDistanceFieldTest, MultiCiblesDistanceALaPlusProche)
 Le constructeur multi-cibles renvoie la distance à la plus proche des cibles fournies (amendement LOT-ANNEXE-21).
 TEST (GridDistanceFieldTest, MultiCiblesIgnoreUneCibleSolideOuHorsGrille)
 Une cible solide ou hors-grille dans la liste multi-cibles est ignorée, sans empêcher les autres cibles valides de produire un champ atteignable.

Detailed Description

Tests unitaires de core::GridDistanceField (amendement LOT-ANNEXE-08, EX-IA-023).

Function Documentation

◆ TEST() [1/7]

TEST ( GridDistanceFieldTest ,
CaseHorsGrilleRenvoieLaSentinelle  )

Une case hors-grille renvoie la distance sentinelle sans planter.

Cas de test : Case hors-grille : distance sentinelle, pas de plantage.
Categorie : Unitaire · AiSolver Env
Criticite : Mineur
Etapes :
1. Grille 5x5, cible valide.
2. Lit la distance d'une case negative et d'une case au-delà des bornes.
Resultat attendu : Les deux renvoient la sentinelle largeur * hauteur (25).

◆ TEST() [2/7]

TEST ( GridDistanceFieldTest ,
DistanceDeLaCibleAElleMemeEstNulle  )

La cible a une distance de zéro à elle-même.

Cas de test : La distance de la cible à elle-même est nulle.
Categorie : Unitaire · AiSolver Env
Criticite : Majeur
Etapes :
1. Grille ouverte, GridDistanceField construit avec une cible.
Resultat attendu : distance(cible) == 0.

◆ TEST() [3/7]

TEST ( GridDistanceFieldTest ,
GrilleOuverteEgaleDistanceDeManhattan  )

Sur une grille ouverte, la distance vaut la distance de Manhattan (BFS 4-connexe sans obstacle).

Cas de test : Grille sans mur : distance de grille égale à la distance de Manhattan.
Categorie : Unitaire · AiSolver Env
Criticite : Bloquant
Etapes :
1. Grille 10x10 vide, cible en (0,0).
2. Lit la distance de plusieurs cases.
Resultat attendu : Chaque distance égale |colonne| + |ligne|.

◆ TEST() [4/7]

TEST ( GridDistanceFieldTest ,
MultiCiblesDistanceALaPlusProche  )

Le constructeur multi-cibles renvoie la distance à la plus proche des cibles fournies (amendement LOT-ANNEXE-21).

Cas de test : Multi-cibles : distance à la plus proche des cibles fournies.
Categorie : Unitaire · AiSolver Env
Criticite : Bloquant
Etapes :
1. Grille ouverte 10x10, deux cibles (0,0) et (9,9).
2. Lit la distance d'une case proche de chaque cible.
Resultat attendu : Chaque case obtient la distance à la cible la plus proche, pas la plus lointaine.

◆ TEST() [5/7]

TEST ( GridDistanceFieldTest ,
MultiCiblesIgnoreUneCibleSolideOuHorsGrille  )

Une cible solide ou hors-grille dans la liste multi-cibles est ignorée, sans empêcher les autres cibles valides de produire un champ atteignable.

Cas de test : Multi-cibles : une cible invalide n'empêche pas les autres de fonctionner.
Categorie : Unitaire · AiSolver Env
Criticite : Bloquant
Etapes :
1. Grille 5x5, case (1,1) solide utilisée comme première cible, (4,4) valide comme seconde.
Resultat attendu : La distance à (4,4) reste correcte malgré la cible solide.

◆ TEST() [6/7]

TEST ( GridDistanceFieldTest ,
MurPartielForceUnDetourPlusLongQueLaLigneDirecte  )

Un mur partiel force un détour : la distance de grille suit le chemin réel, plus longue que la distance de Manhattan en ligne directe.

Cas de test : Mur partiel (détour) : la distance de grille suit le chemin réel, pas la ligne droite.
Categorie : Unitaire · AiSolver Env
Criticite : Bloquant
Etapes :
1. Grille 3x3, case (1,1) solide (mur direct entre (1,2) et la cible (1,0)).
Resultat attendu : La distance de (1,2) à la cible vaut 4 (détour par une colonne latérale), pas 2 (distance de Manhattan sans obstacle).

◆ TEST() [7/7]

TEST ( GridDistanceFieldTest ,
MurSeparateurCompletRendInatteignable  )

Un mur entièrement séparateur rend les cases de l'autre côté inatteignables (distance sentinelle), sans planter.

Cas de test : Mur séparateur complet : cases isolées à la distance sentinelle.
Categorie : Unitaire · AiSolver Env
Criticite : Bloquant
Etapes :
1. Grille 5x5, colonne 2 entièrement solide (mur de bord en bord).
2. Cible en (0,0), lit la distance d'une case de l'autre côté du mur ((4,0)).
Resultat attendu : La distance renvoyée vaut la sentinelle largeur * hauteur (25), pas de plantage.