Нещодавно я розробив модуль часових рядів, де мій часовий ряд по суті є 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);
}
Чи існує ще один поширений спосіб вирішення такої справи?