Recientemente diseñé un módulo de series temporales donde mi serie temporal es esencialmente a SortedDictionnary<DateTime, double>
.
Ahora me gustaría crear pruebas unitarias para asegurarme de que este módulo siempre funcione y produzca el resultado esperado.
Una operación común es calcular el rendimiento entre los puntos en la serie de tiempo.
Entonces, lo que hago es crear una serie temporal con, digamos, {1.0, 2.0, 4.0} (en algunas fechas), y espero que el resultado sea {100%, 100%}.
La cuestión es que si creo manualmente una serie temporal con los valores {1.0, 1.0} y verifico la igualdad (al comparar cada punto), la prueba no pasaría, ya que siempre habrá imprecisiones al trabajar con representaciones binarias de valores reales. números.
Por lo tanto, decidí crear la siguiente función:
private static bool isCloseEnough(double expected, double actual, double tolerance=0.002)
{
return squaredDifference(expected, actual) < Math.Pow(tolerance,2);
}
¿Hay otra forma común de lidiar con tal caso?