Teste sur le parcours Factor

Apprends à tester tes exercices Factor sur Exercism


Quand tu télécharges un exercice, Exercism l'enregistre dans un dossier autonome, par exemple ~/exercism/factor/hello-world. Ce dossier contient un sous-dossier avec ta solution et un autre avec l'exécuteur de tests :

hello-world/
├── hello-world/
│   ├── hello-world.factor        <- your solution
│   └── hello-world-tests.factor  <- the tests
└── exercism-tools/               <- the bundled test runner

Place-toi à la racine de ce dossier avec cd, puis lance les tests avec :

factor -roots=. -run=exercism-tools <exercise>

Remplace <exercise> par le nom de l'exercice (le même nom que celui du dossier). Par exemple, pour tester hello-world :

cd ~/exercism/factor/hello-world
factor -roots=. -run=exercism-tools hello-world

Lance la commande depuis la racine du dossier de l'exercice, c'est-à-dire le répertoire qui contient à la fois les sous-dossiers <exercise> et exercism-tools.

Ce sont les mêmes tests qu'Exercism exécute au moment de la soumission, donc dès qu'ils réussissent tous en local, tu peux soumettre.

Un test à la fois

Chaque exercice démarre avec seulement son premier test actif. Les autres tests sont bloqués par une ligne STOP-HERE dans le fichier <exercise>-tests.factor ; l'exécuteur ignore tout ce qui se trouve en dessous.

"year not divisible by 4 in common year" description
{ f } [ 2015 leap-year? ] unit-test

STOP-HERE

"year divisible by 2, not divisible by 4 in common year" description
{ f } [ 1970 leap-year? ] unit-test

Fais passer le premier test, puis déplace STOP-HERE plus bas, après le test suivant (ou supprime-la pour les activer tous), et relance les tests. Avance ainsi dans le fichier jusqu'à ce que tous les tests réussissent.

Au moment de la soumission, l'exécuteur d'Exercism ignore STOP-HERE et lance tous les tests : assure-toi donc qu'ils réussissent tous avant de soumettre.

Quand les tests réussissent

L'exécuteur affiche chaque test qu'il a lancé, puis se termine sans rien signaler :

Unit Test: { { f } [ 2015 leap-year? ] }

Quand un test échoue

L'exécuteur affiche le test, puis la valeur attendue face à la valeur produite par ton code :

Unit Test: { { f } [ 2015 leap-year? ] }
--> test failed!
###FAIL_BEGIN###
leap/leap-tests.factor: 5
=== Expected:
f
=== Got:
t
###FAIL_END###

Ici, le test a exécuté 2015 leap-year? et attendait f sur la pile, mais il a obtenu t.

Lis un test

Les tests s'écrivent avec unit-test, qui prend un tableau décrivant l'état de la pile après l'exécution d'une quotation :

{ 3 } [ 1 2 + ] unit-test

On exécute ici [ 1 2 + ] et on vérifie que 3 se retrouve sur la pile. Un tableau vide, { }, signifie que la quotation doit laisser la pile vide. La ligne description facultative au-dessus d'un test lui donne simplement un nom lisible.

Pour plus de détails, consulte la documentation de Factor sur les tests unitaires.