Тут речь не о spec.
Или о том, что я могу нагенерировать данных.
Вопрос в том, зачем все это.
Можно какой-нибудь пример для edge-cases?
Скажем, если я делаю функцию sort.
И пришу тест - приходит массив интов, выходит отсортированный.
И внутри я выбираю алгоритм сортировки, например от длины вектора или погоды на луне.
В этом случае - понятно, тест покроет все возможные ветки.
Но как правило, нужно самому задать параметры функции, чтобы алгоритм пошел по нужной ветке. При этом нужно по возвращаемому значению понять, какая ветка использовалась.
Например, есть функция рендеринга. Если передается пустая коллекция, то функция возвращает разметку для сообщения "Сообщений нет".
Если передается заполненная коллекция, то возврящается разметка для сообщений из коллекции.
И как тут написать _один_ тест?