public void WhenNoRuleMatchesCalculatorShouldReturnTheNumber() { // arrange var target = new FizzBuzz(ASequence.Of(ARule(), ARule())); // act var result = target.CalculateFor(1); // assert result.Should().Be("1", "because no rule matches"); }
public void CalculatorShouldReturnResultFromFirstApplyingRule() { // arrange var rules = ASequence.Of(AMatchingRuleWithResult("My Result"), ARule()); var target = new FizzBuzz(rules); // act var result = target.CalculateFor(1); // assert result.Should().Be("My Result"); }
public void CalculatorShouldAskWhichRuleApplies() { // arrange var rule1 = ARule(); var rule2 = ARule(); var rules = ASequence.Of(rule1, rule2); var target = new FizzBuzz(rules); // act target.CalculateFor(1); // assert rule1.ToMock().Verify(x => x.AppliesTo(1), Times.Once); rule2.ToMock().Verify(x => x.AppliesTo(1), Times.Once); }