کاتای الماس یک حرف را به عنوان ورودی میگیرد و آن را به شکل یک الماس بیرون میدهد. با گرفتن یک حرف، الماسی را چاپ میکند که با «A» شروع میشود و حرف دادهشده در پهنترین نقطهی آن قرار میگیرد.
در مثالهای زیر، فاصلهها با نویسهی · نشان داده شدهاند.
الماس برای حرف «A»:
A
الماس برای حرف «C»:
··A··
·B·B·
C···C
·B·B·
··A··
الماس برای حرف «E»:
····A····
···B·B···
··C···C··
·D·····D·
E·······E
·D·····D·
··C···C··
···B·B···
····A····
تستهای این تمرین با تستهای معمول شما متفاوتاند. بهطور معمول، یک تست بررسی میکند که برای یک ورودی مشخص، خروجی با مقدار مورد انتظار مطابقت دارد یا نه. به این کار «تست مبتنی بر مقدار» میگویند. اما این تمرین از «تست مبتنی بر ویژگی» استفاده میکند، که در آن تستها بررسی میکنند آیا خروجی برای طیفی از ورودیها ویژگی مشخصی دارد یا نه. دو تفاوت کلیدی که تست مبتنی بر ویژگی را از تست مبتنی بر مقدار جدا میکند عبارتاند از:
در این تمرین، همهی تستها ویژگیای از شکل لوزی را بررسی میکنند که کد شما باید تولید کند. علاوه بر این، همهی تستها بررسی میکنند که ویژگی مورد آزمایش برای همهی حروف ورودی معتبر ('A' تا 'Z') برقرار باشد.
تستهای این تمرین برای امکانپذیر کردن تست مبتنی بر ویژگی از بستههای FsCheck و FsCheck.Xunit استفاده میکنند. برای آشنایی بیشتر با FsCheck، میتوانید مستندات آن را اینجا ببینید.
اگر میخواهید دربارهی تست مبتنی بر ویژگی اطلاعات بیشتری به دست آورید، این مقاله را ببینید.