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

Tests unitaires de core::DeterministicRandom, splitMix64 et deriveSeed (LOT-53 TACHE-01, EX-NFR-002). More...

#include <cstdint>
#include <gtest/gtest.h>
#include "Core/Math/DeterministicRandom.h"

Functions

 TEST (DeterministicRandomTest, SplitMix64VecteursDeReference)
 splitMix64 rend, pour des entrées de référence, exactement les valeurs attendues du mélangeur SplitMix64.
 TEST (DeterministicRandomTest, DeriveSeedVecteursDeReference)
 deriveSeed rend des vecteurs de référence figés, et sépare les trois composantes du triplet : changer le pas ou l'identité produit une graine différente.
 TEST (DeterministicRandomTest, SuiteDeReferenceDepuisUneGraineFixee)
 La suite produite depuis une graine donnée est figée : cinq valeurs de référence.
 TEST (DeterministicRandomTest, MemeGraineMemeSuite)
 Deux instances de même graine produisent la même suite ; deux graines différentes divergent dès le premier tirage.
 TEST (DeterministicRandomTest, NextFloat01ExclutLaBorneHaute)
 nextFloat01 reste dans [0, 1[ sur un grand nombre de tirages, borne haute exclue.
 TEST (DeterministicRandomTest, NextRangeRespecteLesBornes)
 nextRange reste dans [min, max], et rend exactement min quand les deux bornes coïncident — cas d'une durée de vie ou d'une vitesse fixe, où aucun tirage ne discrimine.

Detailed Description

Tests unitaires de core::DeterministicRandom, splitMix64 et deriveSeed (LOT-53 TACHE-01, EX-NFR-002).

Ce fichier fige des vecteurs de référence : les valeurs attendues y sont écrites en dur, calculées indépendamment de l'implémentation. C'est le seul moyen de détecter qu'une refonte a silencieusement changé la suite produite — auquel cas toutes les séquences de particules déjà observées changeraient sans qu'aucun autre test ne s'en aperçoive : elles resteraient reproductibles, simplement plus les mêmes.

Function Documentation

◆ TEST() [1/6]

TEST ( DeterministicRandomTest ,
DeriveSeedVecteursDeReference  )

deriveSeed rend des vecteurs de référence figés, et sépare les trois composantes du triplet : changer le pas ou l'identité produit une graine différente.

Cas de test : deriveSeed : vecteurs de référence et séparation du triplet.
Categorie : Unitaire · Core Math
Criticite : Bloquant
Etapes :
1. deriveSeed sur (1,0,0), (1,0,1) et (1,1,0).
2. Comparer les trois entre eux.
Resultat attendu : Les trois valeurs figées, toutes distinctes : le pas et l'identifiant ne se confondent pas.

◆ TEST() [2/6]

TEST ( DeterministicRandomTest ,
MemeGraineMemeSuite  )

Deux instances de même graine produisent la même suite ; deux graines différentes divergent dès le premier tirage.

Cas de test : DeterministicRandom : même graine, même suite ; graines différentes, suites différentes.
Categorie : Unitaire · Core Math
Criticite : Bloquant
Etapes :
1. Deux instances de graine 7, 16 tirages chacune.
2. Une instance de graine 8, premier tirage.
Resultat attendu : Les deux premières suites coïncident terme à terme ; la troisième diverge dès le premier tirage.

◆ TEST() [3/6]

TEST ( DeterministicRandomTest ,
NextFloat01ExclutLaBorneHaute  )

nextFloat01 reste dans [0, 1[ sur un grand nombre de tirages, borne haute exclue.

Cas de test : nextFloat01 : borne haute exclue.
Categorie : Unitaire · Core Math
Criticite : Majeur
Etapes :
1. 10 000 tirages depuis une graine fixée.
Resultat attendu : Toutes les valeurs sont dans [0, 1[ ; 1.0f n'est jamais atteint.

◆ TEST() [4/6]

TEST ( DeterministicRandomTest ,
NextRangeRespecteLesBornes  )

nextRange reste dans [min, max], et rend exactement min quand les deux bornes coïncident — cas d'une durée de vie ou d'une vitesse fixe, où aucun tirage ne discrimine.

Cas de test : nextRange : bornes respectées, intervalle dégénéré rendu exactement.
Categorie : Unitaire · Core Math
Criticite : Majeur
Etapes :
1. 1 000 tirages dans [-2, 5].
2. Un tirage dans [3, 3].
Resultat attendu : Toutes les valeurs sont dans [-2, 5] ; l'intervalle dégénéré rend exactement 3.

◆ TEST() [5/6]

TEST ( DeterministicRandomTest ,
SplitMix64VecteursDeReference  )

splitMix64 rend, pour des entrées de référence, exactement les valeurs attendues du mélangeur SplitMix64.

Cas de test : splitMix64 : vecteurs de référence.
Categorie : Unitaire · Core Math
Criticite : Bloquant
Etapes :
1. splitMix64 sur 0, 1 et 0x0123456789ABCDEF.
Resultat attendu : Les trois valeurs figées du mélangeur de référence ; 0 est un point fixe du finaliseur.

◆ TEST() [6/6]

TEST ( DeterministicRandomTest ,
SuiteDeReferenceDepuisUneGraineFixee  )

La suite produite depuis une graine donnée est figée : cinq valeurs de référence.

Cas de test : DeterministicRandom : suite de référence depuis une graine fixée.
Categorie : Unitaire · Core Math
Criticite : Bloquant
Etapes :
1. DeterministicRandom(42).
2. Cinq appels à nextUInt32().
Resultat attendu : Exactement les cinq valeurs figées, dans l'ordre.