Aller au contenu

Tests

tilttek/secret-rolls

Les tests de la bibliothèque

composer install
vendor/bin/phpunit --no-configuration tests

La suite unitaire, sous tests/Unit, s'exécute sans réseau ni base de données : des jets scellés et engagés à partir d'un générateur aléatoire à germe fixe, des résultats relancés à partir de leur germe, des révélations dans l'ordre et une seule fois, des révélations partielles et totales à la clôture, des jets retenus révélés après la scène, chaque refus, des ouvertures et des entrées écrites et relues avec tout le reste refusé, et des journaux vérifiés défaut par défaut — une entrée déplacée, modifiée, hors de sa scène, un jet engagé deux fois ou après la clôture, une révélation qui ne correspond pas. Dans le monodépôt, Infection maintient la bibliothèque à 100 % des mutants couverts.

tests/Fuzz/opening.php est la cible de fuzzing de la vérification d'un jet révélé : n'importe quel texte JSON donne vrai ou faux, jamais une exception. tests/Fuzz/journal.php est celle d'un journal publié : n'importe quel texte JSON est refusé avec InvalidSecretRoll ou donne un journal dont la vérification liste les défauts. composer fuzz lance les deux.

tests/Benchmark/SecretRollsBench.php mesure un jet engagé, un jet révélé vérifié, et l'export d'une scène de 500 jets, tous révélés, lue et vérifiée en entier.

Tester une application

Donnez à SecretRolls un générateur aléatoire à germe fixe, afin que ses germes soient les mêmes à chaque exécution :

$rolls = new SecretRolls(new InMemorySecretRollStore(), secure: new Randomizer(new Xoshiro256StarStar(7)));

Vérifiez ensuite que le journal que l'application publie tient : self::assertSame([], $journal->problems());.