Создание тестов для функции сложения без переполнения

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

Короткий ответ

Что ответить на собеседовании

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

Подробный разбор

Ответ с пояснениями

Условие

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

Ответ

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

Для контракта «Int + Int возвращает Int, при переполнении — ошибка» минимальный набор:

  • 2 + 3 = 5, -2 + -3 = -5, -7 + 10 = 3.
  • 0 + 0 = 0, x + 0 = x, x + (-x) = 0 для допустимого -x.
  • MAX + 0 = MAX, MIN + 0 = MIN, MAX + MIN = -1.
  • MAX + 1 и MIN + (-1) должны сигнализировать переполнение, а не возвращать число противоположного знака.

Проверьте оба порядка аргументов. В property-based проверке рассчитывайте эталон в более широком типе или BigInteger. Если функция по контракту возвращает Long/BigInteger, вместо ожидания ошибки нужно проверять точную расширенную сумму. Типы и политику переполнения нельзя молча придумывать за автора API.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее