تعرّف على كيفية اختبار تمارين 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، الذي يأخذ مصفوفة تصف شكل المكدس بعد تشغيل quotation:
{ 3 } [ 1 2 + ] unit-test
يشغّل هذا الأمر [ 1 2 + ] ويتحقق من أنه يترك 3 على المكدس. وتعني المصفوفة الفارغة { } أن quotation يجب أن يترك المكدس فارغًا. أما سطر description الاختياري فوق الاختبار فيمنحه اسمًا مقروءًا فحسب.
لمزيد من التفاصيل، راجع وثائق Factor حول اختبار الوحدات.