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

Tests de la fiche de personnage (LOT-13). More...

#include <array>
#include <filesystem>
#include <string>
#include <vector>
#include <gtest/gtest.h>
#include "Core/Ecs/Components/RpgActor.h"
#include "Core/Rpg/CharacterOptions.h"
#include "Core/Rpg/CharacterSheet.h"
#include "Core/Rpg/Scale.h"
#include "Core/Rpg/Skill.h"

Functions

 TEST (CharacterSheetTest, LesTablesDeReglesSeChargent)
 Les catalogues et les deux tables de regles se chargent.
 TEST (CharacterSheetTest, QuatreFichesIndependantes)
 Quatre fiches independantes coexistent sans se connaitre.
 TEST (CharacterSheetTest, TroisClassesDonnentLesBonsModificateurs)
 Trois classes JSON donnent les bons modificateurs.
 TEST (CharacterSheetTest, LaMonteeDeNiveauEstTesteeAuxBornes)
 La montee de niveau est testee aux bornes : seuil exact, depassement, multi-niveaux.
 TEST (CharacterSheetTest, LaMonteeDeNiveauEstReproductible)
 Deux montees successives donnent le meme resultat qu'une seule du meme total.
 TEST (CharacterSheetTest, LeModificateurDeCompetenceVientDuCatalogue)
 Le modificateur de competence vient du catalogue, pas d'un switch.
 TEST (CharacterSheetTest, LaVitesseSeLitEnCases)
 La vitesse de la fiche se convertit en cases avec l'echelle du LOT-12.
 TEST (CharacterSheetTest, LeComposantDistingueLAbsenceDeFiche)
 Le composant ECS distingue une entite sans fiche d'une entite liee a la premiere.
 TEST (CharacterSheetTest, AucuneValeurDeRegleNEstEcriteDansLeCpp)
 Aucune valeur de regle n'est ecrite dans le C++ du lot.

Detailed Description

Tests de la fiche de personnage (LOT-13).

L'acceptation du lot tient en quatre phrases : trois classes definies en JSON se chargent et donnent les bons modificateurs ; la montee de niveau est reproductible et testee AUX BORNES ; aucune valeur de regle n'est codee en dur ; et un test construit QUATRE fiches independantes, parce que rien ne doit supposer l'unicite du personnage.

Function Documentation

◆ TEST() [1/9]

TEST ( CharacterSheetTest ,
AucuneValeurDeRegleNEstEcriteDansLeCpp  )

Aucune valeur de regle n'est ecrite dans le C++ du lot.

Cas de test : La classe d'armure sans armure et le plafond de caracteristique viennent de la donnee.
Categorie : Unitaire · Fiche de personnage
Criticite : Critique
Etapes :
1. Lire les deux constantes dans rules/character-creation.json.

  1. Verifier que la CA d'une fiche sans armure vaut la constante lue plus le modificateur de Dexterite.
    Resultat attendu : L'egalite tient pour la constante LUE, quelle qu'elle soit : changer le fichier change la fiche, sans recompiler.

◆ TEST() [2/9]

TEST ( CharacterSheetTest ,
LaMonteeDeNiveauEstReproductible  )

Deux montees successives donnent le meme resultat qu'une seule du meme total.

Cas de test : La montee de niveau est reproductible : le chemin ne change pas le resultat.
Categorie : Unitaire · Fiche de personnage
Criticite : Majeur
Etapes :
1. Donner le seuil du niveau 5 en une fois a une fiche, en deux fois a une autre.
Resultat attendu : Meme niveau, memes points de vie, meme total d'experience.

◆ TEST() [3/9]

TEST ( CharacterSheetTest ,
LaMonteeDeNiveauEstTesteeAuxBornes  )

La montee de niveau est testee aux bornes : seuil exact, depassement, multi-niveaux.

Cas de test : La montee de niveau franchit le seuil exact, le depassement et plusieurs niveaux d'un coup.
Categorie : Unitaire · Fiche de personnage
Criticite : Critique
Etapes :
1. Donner exactement le seuil du niveau 2, puis un point de moins, puis le seuil du niveau 5 d'un coup.
Resultat attendu : Le seuil exact fait monter ; un point de moins ne fait pas monter ; le seuil du niveau 5 fait passer directement au niveau 5.

◆ TEST() [4/9]

TEST ( CharacterSheetTest ,
LaVitesseSeLitEnCases  )

La vitesse de la fiche se convertit en cases avec l'echelle du LOT-12.

Cas de test : La vitesse d'un personnage se lit en cases via l'echelle unique du projet.
Categorie : Unitaire · Fiche de personnage
Criticite : Majeur
Etapes :
1. Convertir la vitesse d'un nain (7,50 m) et d'un humain (9 m) en cases.
Resultat attendu : 5 et 6 cases, via core::tilesFromMeters et non une division ecrite sur place.

◆ TEST() [5/9]

TEST ( CharacterSheetTest ,
LeComposantDistingueLAbsenceDeFiche  )

Le composant ECS distingue une entite sans fiche d'une entite liee a la premiere.

Cas de test : Une entite sans fiche ne se confond pas avec une entite liee a la fiche zero.
Categorie : Unitaire · Fiche de personnage
Criticite : Majeur
Etapes :
1. Construire un RpgActor par defaut, puis un lie a l'indice 0.
Resultat attendu : Le premier n'a pas de fiche, le second en a une.

◆ TEST() [6/9]

TEST ( CharacterSheetTest ,
LeModificateurDeCompetenceVientDuCatalogue  )

Le modificateur de competence vient du catalogue, pas d'un switch.

Cas de test : Un jet de competence emploie la caracteristique que le catalogue lui donne.
Categorie : Unitaire · Fiche de personnage
Criticite : Majeur
Etapes :
1. Calculer le modificateur d'une competence maitrisee et d'une autre non maitrisee.

  1. Demander une competence inconnue du catalogue.
    Resultat attendu : La maitrise ajoute le bonus, l'absence de maitrise non ; une competence inconnue est signalee et non devinee.

◆ TEST() [7/9]

TEST ( CharacterSheetTest ,
LesTablesDeReglesSeChargent  )

Les catalogues et les deux tables de regles se chargent.

Cas de test : La table d'experience et les constantes de creation se chargent depuis la donnee.
Categorie : Unitaire · Fiche de personnage
Criticite : Critique
Etapes :
1. Charger rules/experience.json et rules/character-creation.json.
Resultat attendu : Vingt niveaux, seuils strictement croissants, et les deux constantes lues.

◆ TEST() [8/9]

TEST ( CharacterSheetTest ,
QuatreFichesIndependantes  )

Quatre fiches independantes coexistent sans se connaitre.

Cas de test : Quatre fiches de personnage coexistent, chacune avec ses propres valeurs.
Categorie : Unitaire · Fiche de personnage
Criticite : Critique
Etapes :
1. Construire quatre fiches d'especes et de classes differentes.

  1. Modifier les points de vie de la premiere et faire monter la deuxieme de niveau.
    Resultat attendu : Les quatre gardent des valeurs distinctes ; aucune modification n'en touche une autre.

◆ TEST() [9/9]

TEST ( CharacterSheetTest ,
TroisClassesDonnentLesBonsModificateurs  )

Trois classes JSON donnent les bons modificateurs.

Cas de test : Trois classes chargees depuis JSON produisent les bons points de vie et jets de sauvegarde.
Categorie : Unitaire · Fiche de personnage
Criticite : Critique
Etapes :
1. Construire une fiche pour le brawler (d12), le mage (d6) et le priest (d8).

  1. Comparer points de vie et modificateurs de sauvegarde au calcul du livre.
    Resultat attendu : Les points de vie valent le de plus le modificateur de Constitution ; les sauvegardes maitrisees portent le bonus de maitrise, les autres non.