2013-06-11 36 views
3

我有兩個雙數組。有沒有一種方法使用FluentAssertions來逐個比較數組,使用.BeApproximately()技術?流利的斷言:比較兩個數字集合大約

一個範圍值就足夠整個陣列。

實施例:

double[] source = { 10.01, 8.01, 6.01 }; 
double[] target = { 10.0, 8.0, 6.0 }; 

// THE FOLLOWING IS NOT IMPLEMENTED 
target.Should().BeApproximately(source, 0.01); 

是否有替代的方法?

回答

7

有一個在泛型集合斷言,需要一個函數功能,您可以使用比較期間應用任何謂詞過載。有了這個,你可以做這樣的事情:

source.Should().Equal(target, (left, right) => AreEqualApproximately(left, right, 0.01)); 

你唯一需要做的就是自己創建該方法。

1

我知道最好比較一下列表,但是你可以迭代它並單獨比較它們。我現在不能測試的代碼,但下面應該工作...

double[] source = { 10.01, 8.01, 6.01 }; 
double[] target = { 10.0, 8.0, 6.0 }; 

for(var i=0; i<source.Length; i++) 
    target[i].Should().BeApproximately(source[i], 0.01) 
+0

是的,這有效,但我希望我可以一次打印出所有的違規行爲。 –

+0

希望我能更有幫助,但我不知道有更好的方法來做到這一點。我會提出這個問題,看看我們能否更多地關注它。 – Kevin