Ката «Діамант» приймає на вхід літеру та виводить її у формі діаманта. Отримавши літеру, вона друкує діамант, що починається з '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, документацію про цей фреймворк можна знайти тут.
Якщо хочете більше інформації про тестування на основі властивостей, радимо прочитати цю статтю.
Зареєструйтеся на Exercism, щоб вивчати й опановувати C#, а також 62 концепції178 вправ та справжнє наставництво від людей, і все це безкоштовно.