Geçenlerde zaman serilerimin esasen a olduğu bir zaman serisi modülü tasarladım SortedDictionnary<DateTime, double>
.
Şimdi bu modülün her zaman çalıştığından ve beklenen sonucu ürettiğinden emin olmak için birim testleri oluşturmak istiyorum.
Yaygın bir işlem, zaman serisindeki noktalar arasındaki performansı hesaplamaktır.
Yaptığım şey, {1.0, 2.0, 4.0} (bazı tarihlerde) ile bir zaman serisi oluşturmak ve sonucun {% 100,% 100} olmasını bekliyorum.
Mesele şu ki, el ile {1.0, 1.0} değerleriyle bir zaman dizisi oluşturursam ve eşitliği kontrol edersem (her noktayı karşılaştırarak), test geçemez, çünkü gerçek ikili gösterimlerle çalışırken her zaman yanlışlıklar olacaktır sayılar.
Bu nedenle, aşağıdaki işlevi oluşturmaya karar verdim:
private static bool isCloseEnough(double expected, double actual, double tolerance=0.002)
{
return squaredDifference(expected, actual) < Math.Pow(tolerance,2);
}
Böyle bir durumla baş etmenin başka bir yaygın yolu var mı?