public void RunAll_ReturnsExpectedResults() { var e = new MockA11yElement(); var ruleMocks = new List <Mock <IRule> >(); var codes = Enum.GetValues(typeof(EvaluationCode)) as IEnumerable <EvaluationCode>; foreach (var code in codes) { ruleMocks.Add(CreateRuleMock(Condition.True, code, e)); } var rules = from m in ruleMocks select(m.Object); var providerMock = new Mock <IRuleProvider>(MockBehavior.Strict); providerMock.Setup(m => m.All).Returns(() => rules).Verifiable(); var runner = new RuleRunner(providerMock.Object); var results = runner.RunAll(e); Assert.AreEqual(codes.Count(), results.Count()); for (var i = 0; i < results.Count(); ++i) { var result = results.ElementAt(i); var expectedCode = codes.ElementAt(i); var ruleMock = ruleMocks[i]; Assert.AreEqual(expectedCode, result.EvaluationCode); Assert.AreEqual(e, result.element); Assert.AreEqual(ruleMock.Object.Info, result.RuleInfo); ruleMock.VerifyAll(); } providerMock.VerifyAll(); }