Недавно я разработал модуль временных рядов, где мои временные ряды по сути являются SortedDictionnary<DateTime, double>
.
Теперь я хотел бы создать модульные тесты, чтобы убедиться, что этот модуль всегда работает и дает ожидаемый результат.
Обычной операцией является вычисление производительности между точками во временном ряду.
Поэтому я делаю временные ряды с, скажем, {1.0, 2.0, 4.0} (в некоторые даты), и я ожидаю, что результат будет {100%, 100%}.
Дело в том, что если я вручную создаю временной ряд со значениями {1.0, 1.0} и проверяю равенство (сравнивая каждую точку), тест не будет пройден, так как всегда будут неточности при работе с двоичными представлениями реального номера.
Поэтому я решил создать следующую функцию:
private static bool isCloseEnough(double expected, double actual, double tolerance=0.002)
{
return squaredDifference(expected, actual) < Math.Pow(tolerance,2);
}
Есть ли другой распространенный способ справиться с таким делом?