public void ShouldStringifyGivenIntegerWhenApplyIsCalled()
        {
            var input         = Any.Integer();
            var outputBuilder = Substitute.For <IOutputBuilder>();
            var rule          = new IntegerRule(Any.Boolean(), Any.InstanceOf <IRule>(), outputBuilder);

            rule.Apply(input);

            outputBuilder.Received().Append(input.ToString());
        }
        public void ShouldNotCallSuccessorWhenApplyIsCalledAndIsBreakable()
        {
            var input         = Any.Integer();
            var successor     = Substitute.For <IRule>();
            var outputBuilder = Substitute.For <IOutputBuilder>();
            var rule          = new IntegerRule(true, successor, outputBuilder);

            rule.Apply(input);

            outputBuilder.Received().Append(input.ToString());
            successor.DidNotReceive().Apply(input);
        }