الاختبار في مسار Factor

تعرّف على كيفية اختبار تمارين 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 حول اختبار الوحدات.