1

我想检查两个列表是否具有相同的成员,无论顺序如何:

let memCount items = items |> Seq.countBy id |> Map.ofSeq
let memberEquals items1 items2 = memCount items1 = memCount items2

目前,我在测试中使用它如下:

memberEquals expected actual |> should be True

但是,这对于错误报告来说并不那么好。

我可以扩展 FsUnit 以添加memberEquals类似于equalsorcontains吗?或者,我可以总是在比较它们之前对列表进行排序。这里最好的方法是什么?

(我将 FsUnit 与 nUnit 一起使用,值得。)

4

1 回答 1

5

您的memberEquals函数不会测试列表是否具有相同的成员(只有相同数量的项目)。最简单的方法是:

let memberEquals items1 items2 = (set items1 = set items2)

如果列表可能包含重复项,您需要将它们作为列表进行排序和比较。

†</sup> 您可以在MSDNset上阅读有关该功能的信息。

于 2012-06-12T19:16:24.147 回答