コード例 #1
0
        public void Compute_NoMatchRule_ShouldReturnInput(int input)
        {
            var ruleProvider = Substitute.For <IRuleProvider>();

            ruleProvider.Match(input).Returns(Enumerable.Empty <IRule>());

            var formatter = new FizzBuzzFormatter(ruleProvider);

            var output = formatter.Compute(input);

            Assert.Equal(input.ToString(), output);
        }
コード例 #2
0
        public void Compute_MatchSingleRule_ShouldReturnRuleLabel()
        {
            var i            = 11;
            var expected     = "Fizz";
            var ruleProvider = Substitute.For <IRuleProvider>();
            var fizzRule     = Substitute.For <IRule>();

            fizzRule.Label.Returns(expected);
            ruleProvider.Match(i).Returns(new[] { fizzRule });

            var formatter = new FizzBuzzFormatter(ruleProvider);

            var output = formatter.Compute(i);

            Assert.Equal(expected, output);
        }
コード例 #3
0
        public void Compute_MatchMultipleRuleWithSameLabel_ShouldReturnSingleRuleLabel()
        {
            var i            = 11;
            var expected     = "Fizz";
            var ruleProvider = Substitute.For <IRuleProvider>();
            var fizzRules    = new List <IRule> {
                Substitute.For <IRule>(), Substitute.For <IRule>()
            };

            fizzRules.ForEach(rule => rule.Label.Returns(expected));

            ruleProvider.Match(i).Returns(fizzRules);

            var formatter = new FizzBuzzFormatter(ruleProvider);

            var output = formatter.Compute(i);

            Assert.Equal(expected, output);
        }
コード例 #4
0
        public void ShouldGenerateSummaryReportForFizzBuzz()
        {
            var sequence = new object[]
            {
                1, 2, "lucky", 4, "buzz", "fizz", 7, 8, "fizz", "buzz", 11, "fizz", "lucky", 14, "fizzbuzz", 16, 17, "fizz", 19, "buzz"
            };

            var expected = new StringBuilder("1 2 lucky 4 buzz fizz 7 8 fizz buzz 11 fizz lucky 14 fizzbuzz 16 17 fizz 19 buzz")
                .AppendLine("fizz: 4")
                .AppendLine("buzz: 3")
                .AppendLine("fizzbuzz: 1")
                .AppendLine("lucky: 2")
                .Append("integer: 10")
                .ToString();

            var sut = new FizzBuzzFormatter();

            var result = sut.FormatFizzBuzzSequence(sequence);

            Assert.That(result, Is.EqualTo(expected));
        }
コード例 #5
0
        public void Compute_MatchMultipleRuleWithDifferentLabel_ShouldReturnAggregateRuleLabel()
        {
            var i         = 11;
            var expected1 = "Fizz";
            var expected2 = "Buzz";
            var expected  = expected1 + expected2;

            var ruleProvider = Substitute.For <IRuleProvider>();

            var fizzRule1 = Substitute.For <IRule>();

            fizzRule1.Label.Returns(expected1);
            var fizzRule2 = Substitute.For <IRule>();

            fizzRule2.Label.Returns(expected2);

            ruleProvider.Match(i).Returns(new[] { fizzRule1, fizzRule2 });

            var formatter = new FizzBuzzFormatter(ruleProvider);

            var output = formatter.Compute(i);

            Assert.Equal(expected, output);
        }