Μάθε πώς να κάνεις δοκιμές στις ασκήσεις σου στη Factor στο Exercism
Όταν κατεβάζεις μια άσκηση, το Exercism την αποθηκεύει ως έναν αυτοτελή φάκελο, για παράδειγμα ~/exercism/factor/hello-world. Ο φάκελος αυτός περιέχει έναν υποφάκελο με τη λύση σου και έναν άλλο με το πρόγραμμα εκτέλεσης τεστ:
hello-world/
├── hello-world/
│ ├── hello-world.factor <- your solution
│ └── hello-world-tests.factor <- the tests
└── exercism-tools/ <- the bundled test runner
Κάνε cd στον εξωτερικό φάκελο και τρέξε τα τεστ με:
factor -roots=. -run=exercism-tools <exercise>
Αντικατέστησε το <exercise> με το όνομα της άσκησης (το ίδιο όνομα με τον φάκελο). Για παράδειγμα, για να τρέξεις το hello-world:
cd ~/exercism/factor/hello-world
factor -roots=. -run=exercism-tools hello-world
Τρέξε την εντολή από τον εξωτερικό φάκελο της άσκησης, τον κατάλογο που περιέχει και τους δύο υποφακέλους <exercise> και exercism-tools.
Αυτά είναι τα ίδια τεστ που τρέχει το Exercism όταν υποβάλλεις, οπότε μόλις περάσουν όλα τοπικά, είσαι έτοιμος να υποβάλεις.
Κάθε άσκηση ξεκινά με ενεργό μόνο το πρώτο της τεστ. Τα υπόλοιπα τεστ συγκρατούνται από μια γραμμή STOP-HERE στο αρχείο <exercise>-tests.factor, και το πρόγραμμα εκτέλεσης αγνοεί ό,τι βρίσκεται από κάτω.
"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
Κάνε το πρώτο τεστ να περάσει, μετά μετακίνησε το STOP-HERE πιο κάτω από το επόμενο τεστ (ή διάγραψέ το για να τα ενεργοποιήσεις όλα) και τρέξε τα τεστ ξανά. Δούλεψε το αρχείο με αυτόν τον τρόπο μέχρι να περάσουν όλα τα τεστ.
Όταν υποβάλλεις, το πρόγραμμα εκτέλεσης του Exercism αγνοεί το STOP-HERE και τρέχει κάθε τεστ, οπότε βεβαιώσου ότι περνούν όλα πριν υποβάλεις.
Το πρόγραμμα εκτέλεσης εκτυπώνει κάθε τεστ που έτρεξε και τερματίζει ήσυχα:
Unit Test: { { f } [ 2015 leap-year? ] }
Το πρόγραμμα εκτέλεσης δείχνει το τεστ και μετά την τιμή που περίμενε εναντίον της τιμής που παρήγαγε ο κώδικάς σου:
Unit Test: { { f } [ 2015 leap-year? ] }
--> test failed!
###FAIL_BEGIN###
leap/leap-tests.factor: 5
=== Expected:
f
=== Got:
t
###FAIL_END###
Εδώ το τεστ έτρεξε το 2015 leap-year? και περίμενε f στη στοίβα, αλλά πήρε t.
Τα τεστ γράφονται με το unit-test, το οποίο παίρνει έναν πίνακα που περιγράφει πώς θα πρέπει να είναι η στοίβα μετά την εκτέλεση μιας παράθεσης:
{ 3 } [ 1 2 + ] unit-test
Αυτό τρέχει το [ 1 2 + ] και ελέγχει ότι αφήνει το 3 στη στοίβα. Ένας κενός πίνακας, { }, σημαίνει ότι η παράθεση θα πρέπει να αφήσει τη στοίβα κενή. Η προαιρετική γραμμή description πάνω από ένα τεστ απλώς του δίνει ένα ευανάγνωστο όνομα.
Για περισσότερες λεπτομέρειες, δες την τεκμηρίωση του Factor για δοκιμές μονάδας.