2012-01-20 56 views
0

前完成我有級數的列表,每個都有IdStageNumber(即指數),Name和包含布爾字段名爲IsCompleted一個Progress object測試如果列表中的所有項目都是某一個項目

如何測試,如果前my current stage所有(OBJ,我會進入一個方法)是否齊全?我有以下的代碼,但我得到假回來後,我已經檢查了我的列表,併爲completed

var indexToTest = mystage.StageNumber; //1 in this instance, as 0 is always true 

Assert.IsTrue(progress.Stages.All(stage => stage.StageNumber < indexToTest && stage.Progress.IsCompleted)); 

回答

3

這是怎麼回事,因爲它發現的任何階段,指數要儘快失敗,0期被檢查大於或等於你的。我懷疑你想要:

Assert.IsTrue(progress.Stages.TakeWhile(stage => stage.StageNumber < indexToTest) 
          .All(stage => stage.Progress.IsCompleted)); 

這是假設階段是有序的。如果他們沒有,你真的想測試的每一個階段是要麼在/後您的索引測試它完成:

Assert.IsTrue(progress.Stages.All(stage => stage.StageNumber >= indexToTest 
              || stage.Progress.IsCompleted)); 

編輯:如果它可以幫助你想想,這裏的一種替代方案:

Assert.IsFalse(progress.Stages.Any(stage => stage.StageNumber < indexToTest 
              && !stage.Progress.IsCompleted)); 

這是說「不應該indexToTest之前的任何階段,該階段完成」。

+0

我已經按索引(階段號)排序我的列表,它仍然失敗,即順序StageNumber,該列表似乎好像對象出來0,1,2真的很奇怪 – Haroon

+0

@Haroon:你的意思是還是失敗,*你*的代碼,或我的兩個*選項*?如果我的建議是失敗,還有別的東西錯了,你應該發表一個簡短但完整的程序來說明問題。 –

+0

不,它與我的代碼失敗 - 我做了排序+我上面寫的,只是要測試您的建議... – Haroon

相關問題