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

Tests unitaires des raccords automatiques (LOT-42, EX-EDIT-025). More...

#include <array>
#include <cstdint>
#include <set>
#include <string_view>
#include <gtest/gtest.h>
#include "Core/Levels/TileMap.h"
#include "Core/Levels/TileType.h"
#include "HMI/Graphics/TileAutotile.h"

Functions

 TEST (TileAutotileTest, SeizeConfigurationsSeizeCasesDistinctes)
 Les seize configurations donnent seize cases distinctes de la planche.
 TEST (TileAutotileTest, TableDeCorrespondanceExhaustive)
 Chaque masque designe la case attendue de la planche.
 TEST (TileAutotileTest, ExterieurDeLaGrilleCompteSolide)
 L'exterieur de la grille compte comme solide.
 TEST (TileAutotileTest, TuileIsoleeAuCentre)
 Une tuile entouree de vide au centre de la grille est isolee.
 TEST (TileAutotileTest, DessusDePlateformeDistinctDeLInterieur)
 Le dessus d'une plateforme differe de son interieur.
 TEST (TileAutotileTest, RaccordEntreTypesSolidesDifferents)
 Les blocs poussables se raccordent aux murs.
 TEST (TileAutotileTest, CaseRepresentativeEstLInterieurPlein)
 La case representative est l'interieur plein.
 TEST (TileAutotileTest, BitsParasitesIgnores)
 Les bits hors des quatre voisins sont ignores.
 TEST (TileAutotileTest, SeizeMasquesProduisentSeizeClesDeLibelleDistinctes)
 Chacun des seize masques produit une clé de libellé distincte (atelier pixel art, LOT-54 TACHE-08) : aucune case de la planche ne partage le libellé d'une autre.
 TEST (TileAutotileTest, LibelleIgnoreLesBitsParasites)
 Les bits parasites d'un masque de libellé sont ignorés, comme pour autotileCell.
 TEST (TileAutotileTest, AssemblageTroisParTroisPlaceLInterieurPleinAuCentre)
 L'assemblage 3×3 démonstratif place l'intérieur plein (les quatre voisins internes solides) au centre, et couvre coins/bords/intérieur — un panorama représentatif des seize configurations, pas seulement un sous-ensemble.
 TEST (TileAutotileTest, AssemblageResoutDesCasesValidesViaLaTableCanonique)
 Chaque masque de l'assemblage 3×3 résout, via la table canonique, une case valide de la planche 4×4 — jamais une seconde table qui pourrait diverger.

Detailed Description

Tests unitaires des raccords automatiques (LOT-42, EX-EDIT-025).

Function Documentation

◆ TEST() [1/12]

TEST ( TileAutotileTest ,
AssemblageResoutDesCasesValidesViaLaTableCanonique  )

Chaque masque de l'assemblage 3×3 résout, via la table canonique, une case valide de la planche 4×4 — jamais une seconde table qui pourrait diverger.

Cas de test : Chaque masque de l'assemblage resout une case valide de la planche.
Categorie : Unitaire · Raccords automatiques
Criticite : Majeur
Etapes :
1. Resoudre la case de chacun des neuf masques via autotileCell.
Resultat attendu : Chaque case tient dans la planche 4x4 (colonne et ligne entre 0 et 3).

◆ TEST() [2/12]

TEST ( TileAutotileTest ,
AssemblageTroisParTroisPlaceLInterieurPleinAuCentre  )

L'assemblage 3×3 démonstratif place l'intérieur plein (les quatre voisins internes solides) au centre, et couvre coins/bords/intérieur — un panorama représentatif des seize configurations, pas seulement un sous-ensemble.

Cas de test : L'assemblage 3x3 place l'interieur plein au centre.
Categorie : Unitaire · Raccords automatiques
Criticite : Majeur
Etapes :
1. Produire les neuf masques de l'assemblage.
2. Verifier la case centrale et la diversite des masques.
Resultat attendu : Le masque central vaut le masque plein (quatre voisins) ; les neuf masques ne sont pas tous identiques.

◆ TEST() [3/12]

TEST ( TileAutotileTest ,
BitsParasitesIgnores  )

Les bits hors des quatre voisins sont ignores.

Cas de test : Un masque portant des bits parasites reste dans la planche.
Categorie : Unitaire · Raccords automatiques
Criticite : Mineur
Etapes :
1. Demander la case d'un masque dont les bits de poids fort sont a 1.
Resultat attendu : La case est celle des quatre bits de poids faible, sans depassement de table.

◆ TEST() [4/12]

TEST ( TileAutotileTest ,
CaseRepresentativeEstLInterieurPlein  )

La case representative est l'interieur plein.

Cas de test : La case representative d'une planche est son interieur plein.
Categorie : Unitaire · Raccords automatiques
Criticite : Mineur
Etapes :
1. Demander la case representative de la planche.
Resultat attendu : Elle est celle du masque a quatre voisins, et non la case zero.

◆ TEST() [5/12]

TEST ( TileAutotileTest ,
DessusDePlateformeDistinctDeLInterieur  )

Le dessus d'une plateforme differe de son interieur.

Cas de test : Le dessus d'une plateforme pleine differe de son interieur.
Categorie : Unitaire · Raccords automatiques
Criticite : Critique
Etapes :
1. Remplir de solide les lignes 2 a 4 d'une grille vide.

  1. Comparer la case de la ligne de surface et celle d'une case enfouie.
    Resultat attendu : La surface rend la case « bord haut », l'interieur la case « plein » ; elles different.

◆ TEST() [6/12]

TEST ( TileAutotileTest ,
ExterieurDeLaGrilleCompteSolide  )

L'exterieur de la grille compte comme solide.

Cas de test : L'exterieur de la grille compte comme solide.
Categorie : Unitaire · Raccords automatiques
Criticite : Critique
Etapes :
1. Placer un solide isole dans le coin haut-gauche d'une grille vide.
Resultat attendu : Ses voisins haut et gauche, hors grille, sont comptes solides ; bas et droite non.

◆ TEST() [7/12]

TEST ( TileAutotileTest ,
LibelleIgnoreLesBitsParasites  )

Les bits parasites d'un masque de libellé sont ignorés, comme pour autotileCell.

Cas de test : Un masque de libelle portant des bits parasites reste dans la table.
Categorie : Unitaire · Raccords automatiques
Criticite : Mineur
Etapes :
1. Demander le libelle d'un masque dont les bits de poids fort sont a 1.
Resultat attendu : Le libelle est celui des quatre bits de poids faible.

◆ TEST() [8/12]

TEST ( TileAutotileTest ,
RaccordEntreTypesSolidesDifferents  )

Les blocs poussables se raccordent aux murs.

Cas de test : Le voisinage est celui de la solidite, pas du type de tuile.
Categorie : Unitaire · Raccords automatiques
Criticite : Majeur
Etapes :
1. Placer un solide et, a sa droite, un bloc poussable.
Resultat attendu : Le solide compte le bloc comme voisin solide.

◆ TEST() [9/12]

TEST ( TileAutotileTest ,
SeizeConfigurationsSeizeCasesDistinctes  )

Les seize configurations donnent seize cases distinctes de la planche.

Cas de test : Les seize configurations de voisinage donnent seize cases distinctes.
Categorie : Unitaire · Raccords automatiques
Criticite : Critique
Etapes :
1. Calculer la case de chacun des seize masques possibles.
Resultat attendu : Les seize cases sont deux a deux differentes et tiennent dans la planche 4x4.

◆ TEST() [10/12]

TEST ( TileAutotileTest ,
SeizeMasquesProduisentSeizeClesDeLibelleDistinctes  )

Chacun des seize masques produit une clé de libellé distincte (atelier pixel art, LOT-54 TACHE-08) : aucune case de la planche ne partage le libellé d'une autre.

Cas de test : Les seize masques produisent seize cles de libelle distinctes.
Categorie : Unitaire · Raccords automatiques
Criticite : Majeur
Etapes :
1. Produire la cle de libelle de chacun des seize masques.
Resultat attendu : Les seize cles sont deux a deux differentes.

◆ TEST() [11/12]

TEST ( TileAutotileTest ,
TableDeCorrespondanceExhaustive  )

Chaque masque designe la case attendue de la planche.

Cas de test : Chaque masque de voisinage designe la case attendue de la planche.
Categorie : Unitaire · Raccords automatiques
Criticite : Critique
Etapes :
1. Verifier la case des seize masques, un a un.
Resultat attendu : Chaque masque rend la case documentee dans la table de correspondance.

◆ TEST() [12/12]

TEST ( TileAutotileTest ,
TuileIsoleeAuCentre  )

Une tuile entouree de vide au centre de la grille est isolee.

Cas de test : Une tuile solide entouree de vide donne la configuration isolee.
Categorie : Unitaire · Raccords automatiques
Criticite : Majeur
Etapes :
1. Placer un solide au centre d'une grille vide, loin des bords.
Resultat attendu : Son masque est nul et sa case est celle de la tuile isolee.