测试列表中的所有项目是否在某个项目之前完成
本文关键字:项目 是否 列表 测试 | 更新日期: 2023-09-27 18:21:09
我有一个阶段列表,每个阶段都有Id
、StageNumber
(即索引)、Name
和一个Progress object
,其中包含一个名为IsCompleted
的布尔字段。
如何测试my current stage
(我将传递到方法中的对象)之前的所有项目是否都完成?我有以下代码,但我得到了false返回,我已经检查了我的列表,阶段0被检查为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));
一旦找到索引大于或等于您的任何阶段,它就会失败。我怀疑你想要:
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
之前不应该有任何未完成的阶段"。