Tanuld meg, hogyan tesztelheted a Factor-feladataidat az Exercism-ön
Amikor letöltesz egy feladatot, az Exercism egy önálló mappaként menti el, például ~/exercism/factor/hello-world. Ez a mappa egy almappát tartalmaz a megoldásoddal, és egy másikat a tesztfuttatóval:
hello-world/
├── hello-world/
│ ├── hello-world.factor <- your solution
│ └── hello-world-tests.factor <- the tests
└── exercism-tools/ <- the bundled test runner
Lépj be a mappa gyökerébe a cd paranccsal, majd futtasd a teszteket ezzel:
factor -roots=. -run=exercism-tools <exercise>
A <exercise> helyére írd a feladat nevét (ugyanazt, mint a mappa neve). Például a hello-world teszteléséhez:
cd ~/exercism/factor/hello-world
factor -roots=. -run=exercism-tools hello-world
A parancsot a feladat mappájának gyökeréből futtasd, abból a könyvtárból, amelyben mind a(z) <exercise>, mind az exercism-tools almappa megtalálható.
Ugyanezeket a teszteket futtatja az Exercism a beküldéskor, szóval ha mind sikeresen lefut helyben, készen állsz a beküldésre.
Minden feladatnál kezdetben csak az első teszt aktív. A többi tesztet egy STOP-HERE sor tartja vissza a(z) <exercise>-tests.factor fájlban; a futtató mindent figyelmen kívül hagy, ami ez alatt van.
"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
Először hozd működésbe az első tesztet, aztán mozgasd le a STOP-HERE sort a következő teszt alá (vagy töröld, hogy az összes engedélyezve legyen), és futtasd újra a teszteket. Haladj így végig a fájlon, amíg minden teszt sikeres nem lesz.
Beküldéskor az Exercism futtatója figyelmen kívül hagyja a STOP-HERE sort, és minden tesztet lefuttat, ezért győződj meg róla, hogy mind sikeres, mielőtt beküldöd.
A futtató kiírja az egyes lefuttatott teszteket, majd csendben kilép:
Unit Test: { { f } [ 2015 leap-year? ] }
A futtató megmutatja a tesztet, majd az elvárt értéket a kódod által adott értékkel szemben:
Unit Test: { { f } [ 2015 leap-year? ] }
--> test failed!
###FAIL_BEGIN###
leap/leap-tests.factor: 5
=== Expected:
f
=== Got:
t
###FAIL_END###
Itt a teszt a 2015 leap-year? kifejezést futtatta, és f-et várt a vermen, de t-t kapott.
A teszteket a unit-test szóval írjuk le, amely egy tömböt kap, ami leírja, milyen legyen a verem egy quotation lefuttatása után:
{ 3 } [ 1 2 + ] unit-test
Ez lefuttatja a(z) [ 1 2 + ] kifejezést, és ellenőrzi, hogy 3-at hagy-e a vermen. Az üres tömb, { }, azt jelenti, hogy a quotationnek üresen kell hagynia a vermet. A tesztek fölötti opcionális description sor egyszerűen egy olvasható nevet ad a tesztnek.
További részletekért lásd a Factor dokumentációját az egységtesztelésről.