dolya
Version:
Середовище тестування для Мавки
231 lines (157 loc) • 10.3 kB
Markdown
# Документація
Розділ документації містить короткий опис функціоналу,
що надається Долею.
## Приклади написання тестів
Приклади написання тестів можна переглянути
[тут](../%D1%82%D0%B5%D1%81%D1%82%D0%B8/%D1%81%D1%82%D0%B0%D1%80%D1%82.%D1%82%D0%B5%D1%81%D1%82.%D0%BC) та [ось тут](../%D1%82%D0%B5%D1%81%D1%82%D0%B8/%D1%81%D1%82%D0%B0%D1%80%D1%82_%D0%BD%D0%B0%D0%B7%D0%B2%D0%B0%D0%BD%D1%96_%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D0%B8.%D1%82%D0%B5%D1%81%D1%82.%D0%BC).
## Структура
- [`тестовий_випадок(назва, сценарій)`](#тестовий-випадок)
Усередині сценарію:
- [`припустити(значення)`](#припустити)
- [`значення`](#фактичнийобʼєкт-значення) *(властивість)*
- [`навпаки`](#фактичнийобʼєкт-навпаки) *(властивість)*
- [`провалити`](#фактичнийобʼєкт-провалити) *(властивість)*
- [`не_()`](#фактичнийобʼєкт-не)
- [`дорівнює(очікуване_значення)`](#фактичнийобʼєкт-дорівнює)
- [`є_пусто()`](#фактичнийобʼєкт-є-пусто)
- [`є_вірне()`](#фактичнийобʼєкт-є-вірне)
- [`падає()`](#фактичнийобʼєкт-падає)
- [`має_довжину(очікувана_довжина)`](#фактичнийобʼєкт-має-довжину)
- [`містить_елемент(елемент)`](#фактичнийобʼєкт-містить-елемент)
- [`еквівалентний_списку(очікуваний_список)`](#фактичнийобʼєкт-еквівалентний-списку)
- [`провалити(повідомлення)`](#провалити)
- [`друк(...значення)`](#друк)
## Тестовий випадок
```mavka
дія тестовий_випадок(назва текст, сценарій Дія) ніщо
```
Дія `тестовий_випадок()` приймає назву тесту та сценарій,
котрий буде виконано. Не повертає жодних значень.
### Сценарій
```mavka
дія сценарій() ніщо
```
Дія `сценарій()` не приймає та не повертає
жодних значень.
Усередині сценарію можна викликати такі Дії:
- [`припустити(значення)`](#припустити)
- [`провалити(повідомлення)`](#провалити)
- [`друк(...значення)`](#друк)
> **Note**
> Зверніть увагу, що за замовчуванням
> тест вважається успішним.
>
> Аби провалити тест без використання
> припущень, необхідно викликати Дію
> [`провалити()`](#провалити) усередині сценарію.
## Припустити
```mavka
дія припустити(значення щось) ФактичнийОбʼєкт
```
Дія `припустити()` приймає фактичне значення, відносно
якого буде застосовано припущення та повертає
[`ФактичнийОбʼєкт`](#фактичнийобʼєкт), який містить різні операції припущення.
Параметр `значення` потрапляє у властивість [`значення`](#фактичнийобʼєкт-значення) фактичного обʼєкту.
### ФактичнийОбʼєкт
Макет фактичного обʼєкту виглядає наступним чином:
```mavka
макет фактичний_обʼєкт_м
не_() фактичний_обʼєкт_м
дорівнює(очікуване_значення щось) ніщо
є_пусто() ніщо
є_вірне() ніщо
падає() ніщо
має_довжину(очікувана_довжина число) ніщо
містить_елемент(елемент щось) ніщо
еквівалентний_списку(очікуваний_список список) ніщо
кінець
```
Також у фактичному обʼєкті на даний момент можна знайти
такі властивості:
```mavka
значення щось
навпаки логічне
провалити Дія
```
## ФактичнийОбʼєкт: значення
```mavka
значення щось
```
Значення, що було передано у Дію [`припустити()`](#припустити).
## ФактичнийОбʼєкт: навпаки
```mavka
навпаки логічне
```
Визначає, чи наступна операція припущення буде зворотньою.
## ФактичнийОбʼєкт: провалити
```mavka
провалити Дія
```
Див. [Провалити](#провалити).
## ФактичнийОбʼєкт: не
```mavka
дія ФактичнийОбʼєкт.не_() ФактичнийОбʼєкт
```
Робить наступну операцію припущення зворотньою, змінюючи
властивість [`навпаки`](#фактичнийобʼєкт-навпаки) фактичного обʼєкту.
Для прикладу, вираз:
```mavka
припустити(пусто).не_().є_пусто()
```
Означає, що `пусто` не повинне бути `пусто`, що однозначно провалить тест.
## ФактичнийОбʼєкт: дорівнює
```mavka
дія ФактичнийОбʼєкт.дорівнює(очікуване_значення щось) ніщо
```
Припускає, що [`ФактичнийОбʼєкт.значення`](#фактичнийобʼєкт-значення) є рівне очікуваному значенню.
Виконує магічну дію `виконати_порівняння_чи_не_рівно` на [`ФактичнийОбʼєкт.значення`](#фактичнийобʼєкт-значення)
## ФактичнийОбʼєкт: є пусто
```mavka
дія ФактичнийОбʼєкт.є_пусто() ніщо
```
Припускає, що [`ФактичнийОбʼєкт.значення`](#фактичнийобʼєкт-значення) є `пусто`.
## ФактичнийОбʼєкт: є вірне
```mavka
дія ФактичнийОбʼєкт.є_вірне() ніщо
```
Припускає, що [`ФактичнийОбʼєкт.значення`](#фактичнийобʼєкт-значення) дорівнює `так`.
Виконує магічну дію `виконати_порівняння_чи_не_рівно` на [`ФактичнийОбʼєкт.значення`](#фактичнийобʼєкт-значення)
## ФактичнийОбʼєкт: падає
```mavka
дія ФактичнийОбʼєкт.падає() ніщо
```
Припускає, що [`ФактичнийОбʼєкт.значення`](#фактичнийобʼєкт-значення) є `Дія` і не падає.
## ФактичнийОбʼєкт: має довжину
```mavka
дія ФактичнийОбʼєкт.має_довжину(очікувана_довжина число) ніщо
```
Припускає, що [`ФактичнийОбʼєкт.значення`](#фактичнийобʼєкт-значення) є `список` і має довжину
`очікувана_довжина`.
Довжиною списку у фактичному значенні є результат
виконання Дії `ФактичнийОбʼєкт.значення.довжина()`.
## ФактичнийОбʼєкт: містить елемент
```mavka
дія ФактичнийОбʼєкт.містить_елемент(елемент щось) ніщо
```
Припускає, що [`ФактичнийОбʼєкт.значення`](#фактичнийобʼєкт-значення) є `список` і містить `елемент`.
Список у фактичному значенні містить `елемент`, якщо `ФактичнийОбʼєкт.значення.знайти_позицію((ел): ел == елемент)` повертає значення, що `не менше 0`.
## ФактичнийОбʼєкт: еквівалентний списку
```mavka
дія ФактичнийОбʼєкт.еквівалентний_списку(очікуваний_список список) ніщо
```
Припускає, що [`ФактичнийОбʼєкт.значення`](#фактичнийобʼєкт-значення) є `список`
і еквівалентний списку `очікуваний_список`.
Два списки вважаються еквівалентними, якщо вони мають однакову довжину
і містять однакові елементи на кожній позиції. Для перевірки, чи
елементи однакові використовується магічна дія `виконати_порівняння_чи_не_рівно`.
## Провалити
```mavka
дія провалити(повідомлення текст) ніщо
```
Провалює поточний тестовий випадок із вказаним повідомленням.
## Друк
```mavka
дія друк(...значення) ніщо
```
Приймає будь-яку кількість аргументів і друкує їх,
позначаючи кожне повідомлення написом "**Тестовий випадок виводить:**"