Niedawno zaprojektowałem moduł szeregów czasowych, w którym moje szeregi czasowe są zasadniczo SortedDictionnary<DateTime, double>
.
Teraz chciałbym utworzyć testy jednostkowe, aby upewnić się, że ten moduł zawsze działa i daje oczekiwany wynik.
Częstą operacją jest obliczanie wydajności między punktami w szeregu czasowym.
Więc tworzę szereg czasowy, powiedzmy {1.0, 2.0, 4.0} (w niektórych terminach), i spodziewam się, że wynik wyniesie {100%, 100%}.
Chodzi o to, że jeśli ręcznie utworzę szereg czasowy z wartościami {1.0, 1.0} i sprawdzę równość (porównując każdy punkt), test nie przejdzie, ponieważ zawsze będą niedokładności podczas pracy z reprezentacjami binarnymi rzeczywistych liczby.
Dlatego postanowiłem utworzyć następującą funkcję:
private static bool isCloseEnough(double expected, double actual, double tolerance=0.002)
{
return squaredDifference(expected, actual) < Math.Pow(tolerance,2);
}
Czy istnieje inny wspólny sposób radzenia sobie z takim przypadkiem?