Ho recentemente progettato un modulo di serie temporali in cui le mie serie temporali sono essenzialmente SortedDictionnary<DateTime, double>
.
Ora vorrei creare dei test unitari per assicurarmi che questo modulo funzioni sempre e produca i risultati attesi.
Un'operazione comune è calcolare le prestazioni tra i punti delle serie temporali.
Quindi quello che faccio è creare una serie temporale con, ad esempio, {1.0, 2.0, 4.0} (in alcune date) e mi aspetto che il risultato sia {100%, 100%}.
Il fatto è che se creo manualmente una serie temporale con i valori {1.0, 1.0} e controllo l'uguaglianza (confrontando ogni punto), il test non passerà, poiché ci saranno sempre imprecisioni quando si lavora con i binari rappresentazioni di numeri reali.
Quindi, ho deciso di creare la seguente funzione:
private static bool isCloseEnough(double expected, double actual, double tolerance=0.002)
{
return squaredDifference(expected, actual) < Math.Pow(tolerance,2);
}
C'è un altro modo comune di affrontare un caso del genere?