Fluent断言:近似地比较两个数字集合

本文关键字:两个 集合 数字 比较 断言 Fluent | 更新日期: 2023-09-27 18:17:52

我有两个双精度数组。是否有一种方法使用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);   

有其他方法吗?

Fluent断言:近似地比较两个数字集合

在泛型集合断言上有一个重载,它接受一个Func,您可以使用该Func在比较期间应用任何谓词。有了它,你可以这样做:

source.Should().Equal(target, (left, right) => AreEqualApproximately(left, right, 0.01));
你只需要自己创建这个方法。

我知道比较列表是可取的,但你可以迭代它并单独比较它们。我现在不能测试代码,但下面应该可以工作…

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)