Здравствуйте, netch80, Вы писали:
N>Более того, даже при машинной верификации тестирование всё равно необходимо — чтобы повысить шансы, что условия, включённые в аксиоматику верификатора, действительно истинны.
L>>TEST(go_around_zero_v2, testNegativeN)
N>Вот тут уже начинаются нелады. Основная проблема в том, что ты поддался на откровенную провокацию Кодта.
Я знаю
На деле, что-то подобное всегда всплывает в разговорах о юнит-тестировании. Либо вот из таких сферических примеров в вакууме делается вывод, что юнит-тесты писать бесполезно, либо идут по другому пути — всем писать тесты с покрытием кода 100%, а кто не все, того накажем.
L>> unsigned int expected = n*10*2+1; // Ну или 100500 от балды, чтобы просто отловить бесконечный цикл
N>Так не отловишь же — оно может захотеть вообще ничего не делать. Да и в реальности бесконечного цикла не будет при любом из возможных переполнений.
Ну, не бесконечный, но явная чертовщина отловится. На самом деле приходилось подобные чудеса из кода вычленять через серии последовательно приближения юнит-тестами к пониманию, чего же хотелись добиться.
L>>До приемлимой.
N>На всякий случай — "приемлемой".
У меня в последнее время дисграфия какая-то.