Внёс правку, потыкал -- вроде работает. Обычно при тестировании используешь какие-то типовые значения, которые удобно вводить. Типовые -- это круглые. Но реальность не круглая.
Сохраняю в файл два графика, измеренные одновременно за 2 секунды. Всё замечательно работает. Когда начинаются эксплуатационные замеры, оказывается, что выходной файл периодически не открывается. Сначала я думал, что не открываются слишком длинные файлы, но это оказалось не так.
Для хранения у нас используется собственный формат данных, исторический. Функцию сохранения я взял готовую, написанную предками, и модифицировал под свои нужды. Утилита по считыванию доступна в исходных кодах, что позволило мне запустить отладку и посмотреть, где происходит сбой. Причина оказалась простой -- для второго графика сбивается смещение внутри файла, поэтому он начинает считываться с места, где мусор. Но почему это происходит?
ОКАЗАЛОСЬ
Что когда время некруглое, то в графиках может оказаться разное число точек, которое отличается на единицу. При этом вычисление числа точек для поля "число точек" происходит один раз и по одной формуле, а фактическая запись точек делается в другом месте -- и формула там уже другая. Когда время круглое и количество точек одинаковое -- формулы дают одинаковый результат. А когда время некруглое -- числа разные.
***
Я сам мало знаю о модульном тестировании, но может быть, кто-нибудь из читателей знает? Как вы боретесь с подобными ситуациями? Практикуется ли в модульном тестировании рандомизация входных параметров от запуска к запуску чтобы ловить такие ошибки?