kuchma19 / testing-homework

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Разработка посредством тестирования

При выполнении задания используйте технику разработки посредством тестирования (TDD), которая демонстрировалась на лекции. Соблюдайте порядок шагов в цикле:

  • Написание нового падающего теста.
  • Написание минимального количества кода для прохождения всех тестов.
  • Выполнение рефакторинга кода и тестов.

1. Range

Реализуйте абстрактный тип данных Range, представляющий замкнутый целочисленный интервал.

Range должен поддерживать следующие операции.

  • Конструирование:

    • Создание пустого интервала.
    • Создание интервала [min; max] по концевым точкам.
  • Бинарные операции:

    • Пересечение интервалов.
    • Объединение пересекающихся интервалов.
  • Унарные предикаты:

    • Проверка интервала на пустоту.
    • Проверка точки на вхождение в интервал.
  • Бинарные предикаты:

    • Проверка двух интервалов на равенство.
    • Проверка двух интервалов на пересечение.
    • Проверка интервала на вхождение в другой.
  • Прочее:

    • Перечисление всех точек интервала в порядке возрастания.
    • Вычисление минимума интервала.
    • Вычисление максимума интервала.
    • Вычисление строкового представления интервала, например, в формате [-3; 7].

2. Account

Реализуйте абстрактный тип данных Account, представляющий модель банковского расчетного счета. Счет ведется в условных единицах и не допускает достижения отрицательного баланса. Account должен поддерживать следующие операции:

  • Внести средства на счет.
  • Снять средства со счета.
  • Сформировать выписку по счету.

Пример формата выписки:

Time                  Amount    Balance
28.09.2021 13:37:00   +500      500
28.09.2021 13:37:01   -100      400

Формулировка

Обратите внимание, что задания намеренно сформулированы недостаточно подробно и предоставляют определенное пространство для интерпретаций, подобно тем задачам, с которыми сталкиваются разработчики программных продуктов в своей практике каждый день. Мы ожидаем, однако, что вы поймете все правильно и предложите наилучшее решение из возможных.

В случае наличия каких-либо вопросов или сомнений, пожалуйста, обращайтесь к вашему семинаристу за разъяснениями.

About


Languages

Language:Scala 100.0%