亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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

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

C#
慕村225694 2021-10-24 20:37:41
我要測試的函數返回一個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 });但這失敗了。此命令是否無法評估數組的內容?任何不需要額外輔助功能的合適解決方法的想法?編輯我必須澄清:這是關于測試一個鋸齒狀數組是否包含另一個嵌套在其中的簡單數組。我還需要解釋什么??編輯 #22 建議的答案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 }如果發現至少一個包含的數組等于預期參數,則斷言通過?
查看完整描述

2 回答

?
慕工程0101907

TA貢獻1887條經驗 獲得超5個贊

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


static class Extensions

{

    public static bool ItemsEqual<TSource>(this TSource[] array1, TSource[] array2)

    {

        if (array1 == null && array2 == null)

            return true;

        if (array1 == null || array2 == null)

            return false;

        return array1.Count() == array2.Count() && !array1.Except(array2).Any();

    }


    public static bool ContainsArray<TSource>(this TSource[][] array1, TSource[] array2)

    {

        return array1.Any(x => x.ItemsEqual(array2));

    }

}


查看完整回答
反對 回復 2021-10-24
?
九州編程

TA貢獻1785條經驗 獲得超4個贊

如果你想確保現場完全包含另一個你可以使用 linq,假設沒有重復,你可以這樣做:

Assert.IsTrue(new int[] { 1, 2 }.Except(aaiCluster1[0]).Count() == 0);


查看完整回答
反對 回復 2021-10-24
  • 2 回答
  • 0 關注
  • 246 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號