C# CollectionAssert.Contains(int[][], int[]) 不通过

我要测试的函数返回一个int[][] aaiCluster1带数据的


aaiCluster1[0] = int[] { 1, 2 }

aaiCluster1[1] = int[] { 0 }

所以我测试使用


CollectionAssert.AreEqual (aaiCluster1[0], new int[] { 1, 2 });

CollectionAssert.AreEqual (aaiCluster1[1], new int[] { 0 });

但顺序int[]并不重要,可能会改变,所以我宁愿测试


CollectionAssert.Contains (aaiCluster1, new int[] { 1, 2 });

但这失败了。

此命令是否无法评估数组的内容?

任何不需要额外辅助功能的合适解决方法的想法?


编辑

我必须澄清:

这是关于测试一个锯齿状数组是否包含另一个嵌套在其中的简单数组。

我还需要解释什么??


编辑 #2

2 建议的答案CollectionAssert.AreEquivalent已经给出并再次被删除,因为AreEquivalent这不是我正在寻找的......它在这里不起作用。

给出了 1 个建议的答案Sequence.whatever,而且它更错误。


编辑 #3

我恢复了 Igor 对我的问题的更改,因为我觉得它们改变了太多含义。然而,我认为他的话是一个很好的替代描述,所以这是他的文字:


所以我测试使用


CollectionAssert.AreEqual(new int[] { 1, 2 }, aaiCluster1[0]);

CollectionAssert.AreEqual(new int[] { 0 }, aaiCluster1[1]);

但是aaiCluster1(实际)中的顺序是未知的,因此一旦返回的顺序aaiCluster1发生变化,上述测试就会失败。



我怎么能调用类似的东西


CollectionAssert.AreEqual(new int[] { 1, 2 }, aaiCluster1);

// CollectionAssert.AreEqual(ICollection<T> expected, ICollection<ICollection<T>> actual);

其中所有数组aaiCluster1都根据预期参数进行评估,new int[] { 1, 2 }如果发现至少一个包含的数组等于预期参数,则断言通过?


慕村225694
浏览 219回答 2
2回答

慕工程0101907

aaiCluster1.ContainsArray(new int[] { 1, 2 });static class Extensions{&nbsp; &nbsp; public static bool ItemsEqual<TSource>(this TSource[] array1, TSource[] array2)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; if (array1 == null && array2 == null)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return true;&nbsp; &nbsp; &nbsp; &nbsp; if (array1 == null || array2 == null)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return false;&nbsp; &nbsp; &nbsp; &nbsp; return array1.Count() == array2.Count() && !array1.Except(array2).Any();&nbsp; &nbsp; }&nbsp; &nbsp; public static bool ContainsArray<TSource>(this TSource[][] array1, TSource[] array2)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; return array1.Any(x => x.ItemsEqual(array2));&nbsp; &nbsp; }}

九州编程

如果你想确保现场完全包含另一个你可以使用 linq,假设没有重复,你可以这样做:Assert.IsTrue(new&nbsp;int[]&nbsp;{&nbsp;1,&nbsp;2&nbsp;}.Except(aaiCluster1[0]).Count()&nbsp;==&nbsp;0);
打开App,查看更多内容
随时随地看视频慕课网APP