public void ShouldBuildDivisibleBy15RuleOnRequest() { var divisibleBy15RuleBuilder = new DivisibleBy15RuleBuilder(); var rule = divisibleBy15RuleBuilder.Build(); rule.GetType().Should().Be <DivisibleBy15Rule>(); rule.GetType().Should().BeAssignableTo <IRule>(); }
public void ShouldBuildDefaultDivisibleBy15RuleOnRequestWhichHasNoSideEfects() { var divisibleBy15RuleBuilder = new DivisibleBy15RuleBuilder(); var rule = divisibleBy15RuleBuilder.Build(); Action act = () => rule.Apply(Any.Integer()); act.Should().NotThrow(); }
public static IRule Create(IOutputBuilder outputBuilder) { var by15RuleBuilder = new DivisibleBy15RuleBuilder().RedirectResultTo(outputBuilder); var by3RuleBuilder = new DivisibleBy3RuleBuilder().RedirectResultTo(outputBuilder); var by5RuleBuilder = new DivisibleBy5RuleBuilder().RedirectResultTo(outputBuilder); var integerRuleBuilder = new IntegerRuleBuilder().RedirectResultTo(outputBuilder); var endOfChain = new NullRule(); integerRuleBuilder.ContinueWith(endOfChain); by5RuleBuilder.BreakIfApplied().ContinueWith(integerRuleBuilder.Build()); by3RuleBuilder.BreakIfApplied().ContinueWith(by5RuleBuilder.Build()); by15RuleBuilder.BreakIfApplied().ContinueWith(by3RuleBuilder.Build()); return(by15RuleBuilder.Build()); }