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

Tests de l'inventaire, des emplacements d'équipement et des statistiques dérivées (LOT-14, EX-INV-020). More...

#include <algorithm>
#include <array>
#include <filesystem>
#include <string>
#include <vector>
#include <gtest/gtest.h>
#include "Core/Rpg/CharacterSheet.h"
#include "Core/Rpg/Inventory.h"

Functions

 TEST (InventoryTest, LaClasseDArmureNeDerivePasAvecLOrdre)
 Équiper une armure change la CA du montant attendu, et la retirer restitue exactement la valeur d'origine, quel que soit l'ordre des opérations.
 TEST (InventoryTest, ChaqueCategorieDArmureAppliqueSaRegle)
 Les trois formes de la table du livre donnent trois classes d'armure différentes.
 TEST (InventoryTest, UnEmplacementRendCeQuIlPortait)
 Équiper une pièce à un emplacement qui en portait déjà une rend la précédente.
 TEST (InventoryTest, LeSacEmpileEtSeVide)
 Le sac empile les lignes identiques, et une ligne vidée disparaît.
 TEST (InventoryTest, LePoidsPorteCompteLeSacEtLEquipement)
 Le poids porté additionne le sac ET l'équipement, dans une seule unité.
 TEST (InventoryTest, UnIdentifiantInconnuEstSignale)
 Un identifiant qu'aucun catalogue ne porte est signalé, pas confondu avec un objet sans masse.
 TEST (InventoryTest, LaChargeFranchitSesSeuils)
 Les trois seuils de charge, et le comportement défini au dépassement.
 TEST (InventoryTest, SansRegleDeChargeAucunEncombrementNEstAffirme)
 Sans règle de charge chargée, la fiche ne prétend pas connaître une règle qui manque.
 TEST (InventoryTest, LaCaracteristiqueDAttaqueSuitLArme)
 La caractéristique d'attaque suit l'arme : Force au corps à corps, Dextérité à distance, la meilleure des deux pour une arme de finesse.
 TEST (InventoryTest, LaCategorieDecideAvantLEmplacement)
 Un bouclier rangé au torse compte quand même comme un bouclier.
 TEST (InventoryTest, LesEmplacementsSeNommentEtSeRelisent)
 Les seize emplacements se nomment et se relisent dans les deux sens.
 TEST (InventoryTest, LeCatalogueLivreSeCharge)
 Le catalogue d'objets LIVRÉ se charge, et ses poids sont utilisables.
 TEST (InventoryTest, LesBornesDeChargeLivreesSontCellesDuLivre)
 Les bornes de charge LIVRÉES se chargent, et portent les valeurs du livre.

Detailed Description

Tests de l'inventaire, des emplacements d'équipement et des statistiques dérivées (LOT-14, EX-INV-020).

Logique pure, sans Qt.

Le test central est LaClasseDArmureNeDerivePasAvecLOrdre : il équipe et retire dans six ordres différents et vérifie qu'on retombe exactement sur la valeur de départ. C'est le critère d'acceptation du lot, et il attrape le défaut qu'une implémentation accumulative ne signale jamais — après trois équipements et deux retraits dans le désordre, la CA a dérivé, et le personnage est simplement devenu un peu plus résistant.

Function Documentation

◆ TEST() [1/13]

TEST ( InventoryTest ,
ChaqueCategorieDArmureAppliqueSaRegle  )

Les trois formes de la table du livre donnent trois classes d'armure différentes.

Cas de test : Chaque categorie d'armure applique sa propre regle de Dexterite.
Categorie : Unitaire · Inventaire
Criticite : Critique
Etapes :
1. Equiper une armure legere, puis une intermediaire, avec une Dexterite de 18.

  1. Ajouter un bouclier.
    Resultat attendu : Legere : 11 + 4. Intermediaire : 15 + 2 (plafonne). Bouclier : +2 par-dessus.

◆ TEST() [2/13]

TEST ( InventoryTest ,
LaCaracteristiqueDAttaqueSuitLArme  )

La caractéristique d'attaque suit l'arme : Force au corps à corps, Dextérité à distance, la meilleure des deux pour une arme de finesse.

Cas de test : La caracteristique d'attaque suit l'arme portee.
Categorie : Unitaire · Inventaire
Criticite : Critique
Etapes :
1. Equiper une arme de melee, puis une arme a distance, puis une arme de finesse, avec une Dexterite superieure a la Force.
Resultat attendu : Force, puis Dexterite, puis Dexterite (la meilleure des deux).

◆ TEST() [3/13]

TEST ( InventoryTest ,
LaCategorieDecideAvantLEmplacement  )

Un bouclier rangé au torse compte quand même comme un bouclier.

Cas de test : C'est la categorie qui dit comment une piece compte, pas l'emplacement.
Categorie : Unitaire · Inventaire
Criticite : Majeur
Etapes :
1. Ranger un bouclier a l'emplacement du torse.
Resultat attendu : La CA vaut la base sans armure plus le bonus du bouclier, et non 2.

◆ TEST() [4/13]

TEST ( InventoryTest ,
LaChargeFranchitSesSeuils  )

Les trois seuils de charge, et le comportement défini au dépassement.

Cas de test : La charge franchit ses trois seuils et definit le depassement.
Categorie : Unitaire · Inventaire
Criticite : Critique
Etapes :
1. Charger un personnage de Force 10 en dessous du premier seuil, puis entre les deux, puis au-dela du second, puis au-dela de la capacite.
Resultat attendu : Non encombre, encombre (-3 m), lourdement encombre (-6 m), puis hors capacite avec une vitesse nulle.

◆ TEST() [5/13]

TEST ( InventoryTest ,
LaClasseDArmureNeDerivePasAvecLOrdre  )

Équiper une armure change la CA du montant attendu, et la retirer restitue exactement la valeur d'origine, quel que soit l'ordre des opérations.

Cas de test : La classe d'armure ne derive pas avec l'ordre des equipements.
Categorie : Unitaire · Inventaire
Criticite : Critique
Etapes :
1. Relever la CA sans equipement.
2. Jouer six ordres d'equipement et de retrait d'une armure et d'un bouclier.
3. Relever la CA apres chaque sequence complete.
Resultat attendu : La CA revient exactement a sa valeur de depart dans les six cas.

◆ TEST() [6/13]

TEST ( InventoryTest ,
LeCatalogueLivreSeCharge  )

Le catalogue d'objets LIVRÉ se charge, et ses poids sont utilisables.

Cas de test : Le catalogue d'objets livre se charge.
Categorie : Unitaire · Inventaire
Criticite : Majeur
Etapes :
1. Charger Source/Elements/Rpg/items.
Resultat attendu : Le catalogue est non vide, sans erreur, et chaque objet porte un identifiant.

◆ TEST() [7/13]

TEST ( InventoryTest ,
LePoidsPorteCompteLeSacEtLEquipement  )

Le poids porté additionne le sac ET l'équipement, dans une seule unité.

Cas de test : Le poids porte compte le sac et l'equipement.
Categorie : Unitaire · Inventaire
Criticite : Majeur
Etapes :
1. Equiper une armure et une arme.
2. Ajouter des objets au sac.
Resultat attendu : Le total est la somme des grammes, quantites comprises.

◆ TEST() [8/13]

TEST ( InventoryTest ,
LeSacEmpileEtSeVide  )

Le sac empile les lignes identiques, et une ligne vidée disparaît.

Cas de test : Le sac empile, et une ligne videe disparait.
Categorie : Unitaire · Inventaire
Criticite : Majeur
Etapes :
1. Ajouter deux fois le meme objet.
2. En retirer plus qu'il n'y en a.
Resultat attendu : Une seule ligne de quantite cumulee ; le retrait rend ce qui existait, et la ligne disparait.

◆ TEST() [9/13]

TEST ( InventoryTest ,
LesBornesDeChargeLivreesSontCellesDuLivre  )

Les bornes de charge LIVRÉES se chargent, et portent les valeurs du livre.

Cas de test : Les bornes de charge livrees portent les valeurs du livre.
Categorie : Unitaire · Inventaire
Criticite : Critique
Etapes :
1. Charger Source/Elements/Rpg/rules/encumbrance.json.
Resultat attendu : 7,5 kg par point de Force, seuils a 2,5 et 5, penalites de 3 et 6 metres.

◆ TEST() [10/13]

TEST ( InventoryTest ,
LesEmplacementsSeNommentEtSeRelisent  )

Les seize emplacements se nomment et se relisent dans les deux sens.

Cas de test : Les seize emplacements se nomment et se relisent.
Categorie : Unitaire · Inventaire
Criticite : Mineur
Etapes :
1. Convertir chaque emplacement en nom, puis le nom en emplacement.
Resultat attendu : L'aller-retour redonne l'emplacement de depart, et un nom inconnu ne se devine pas.

◆ TEST() [11/13]

TEST ( InventoryTest ,
SansRegleDeChargeAucunEncombrementNEstAffirme  )

Sans règle de charge chargée, la fiche ne prétend pas connaître une règle qui manque.

Cas de test : Sans regle de charge, aucun encombrement n'est affirme.
Categorie : Unitaire · Inventaire
Criticite : Majeur
Etapes :
1. Deriver les statistiques avec des bornes de charge non chargees.
Resultat attendu : La charge reste << non encombre >>, la capacite vaut zero, et la vitesse est intacte.

◆ TEST() [12/13]

TEST ( InventoryTest ,
UnEmplacementRendCeQuIlPortait  )

Équiper une pièce à un emplacement qui en portait déjà une rend la précédente.

Cas de test : Un emplacement ne porte jamais deux pieces, et ce qui en sort est rendu.
Categorie : Unitaire · Inventaire
Criticite : Majeur
Etapes :
1. Equiper une armure, puis une autre au meme emplacement.
Resultat attendu : La premiere est rendue a l'appelant, et l'emplacement ne porte que la seconde.

◆ TEST() [13/13]

TEST ( InventoryTest ,
UnIdentifiantInconnuEstSignale  )

Un identifiant qu'aucun catalogue ne porte est signalé, pas confondu avec un objet sans masse.

Cas de test : Un identifiant inconnu des catalogues est signale.
Categorie : Unitaire · Inventaire
Criticite : Majeur
Etapes :
1. Mettre au sac un identifiant absent des catalogues.
Resultat attendu : Il figure dans les identifiants inconnus, et ne pese rien.