예제 #1
0
        static void Main(string[] args)
        {
            var fizzBuzzer = new FizzBuzzEngine(Console.Out, Rules.FizzRule, Rules.BuzzRule);

            fizzBuzzer.Run(15);
            Console.ReadLine();
        }
예제 #2
0
        public static void Main()
        {
            var engine = new FizzBuzzEngine <Startup>();

            engine.Build();
            engine.Run();
        }
예제 #3
0
        public void Build_CallsAddServicesInStartup()
        {
            var engine = new FizzBuzzEngine <SimpleFakeStartup>();

            engine.Build();

            Assert.IsTrue(SimpleFakeStartup.AddedServices);
        }
        public void ConstructorHappyPath()
        {
            var sender = new Mock <ISender>().Object;

            var engine = new FizzBuzzEngine(sender);

            engine.Sender.Should().BeSameAs(sender);
        }
예제 #5
0
        public void OutputShouldContainALineForEveryEntryBetween1AndTheUpperBound([Values(1, 10, 100, 1000, 42789)] int upperBound)
        {
            var writer = new FakeTextWriter();
            var engine = new FizzBuzzEngine(writer);

            engine.Run(upperBound);
            Assert.AreEqual(upperBound, writer.Results.Length);
        }
예제 #6
0
        public void Run_WithComplexStartup_RunsToCompletion()
        {
            var engine = new FizzBuzzEngine <ComplexFakeStartup>();

            engine.Build();
            engine.Run();

            Assert.IsTrue(ComplexFakeStartup.RanToCompletion);
        }
예제 #7
0
        public void Run_AfterBuild_CallsRunInStartupAndWaitsForCompletion()
        {
            var engine = new FizzBuzzEngine <SimpleFakeStartup>();

            engine.Build();
            engine.Run();

            Assert.IsTrue(SimpleFakeStartup.RanToCompletion);
        }
예제 #8
0
        public void Build_WithComplexStartup_InjectsPrerequisites()
        {
            var engine = new FizzBuzzEngine <ComplexFakeStartup>();

            engine.Build();

            Assert.IsNotNull(ComplexFakeStartup.FizzBuzzService);
            Assert.IsNotNull(ComplexFakeStartup.Factory);
            Assert.IsTrue(ComplexFakeStartup.AddedServices);
        }
예제 #9
0
        private static void Main()
        {
            var engine = new FizzBuzzEngine <Startup>();

            engine.Build();
            engine.Run();

            Console.WriteLine("Press any key to exit");
            Console.ReadKey(true);
        }
예제 #10
0
        public void WhenNoRulesAreSpecifiedTheResultsShouldBeAListOfNumbers()
        {
            var writer = new FakeTextWriter();
            var engine = new FizzBuzzEngine(writer);

            engine.Run(15);
            Assert.AreEqual(15, writer.Results.Length);

            CollectionAssert.AreEquivalent(new [] { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15" },
                                           writer.Results);
        }
예제 #11
0
        public void WhenMultipleRulesMatchBothValuesShouldBeOutput()
        {
            var writer = new FakeTextWriter();

            var engine = new FizzBuzzEngine(writer, Rules.FizzRule, Rules.BuzzRule);

            engine.Run(15);

            Assert.AreEqual(15, writer.Results.Length);
            Assert.AreEqual(writer.Results.Last(), "FizzBuzz");
        }
예제 #12
0
        public void NumbersDivisibleBy3ShouldOutputFizz()
        {
            var writer = new FakeTextWriter();

            var engine = new FizzBuzzEngine(writer, Rules.FizzRule);

            engine.Run(15);
            Assert.AreEqual("Fizz", writer.Results[2]);
            Assert.AreEqual("Fizz", writer.Results[5]);
            Assert.AreEqual("Fizz", writer.Results[8]);
            Assert.AreEqual("Fizz", writer.Results[11]);
            Assert.AreEqual("Fizz", writer.Results[14]);
        }
        public async Task SendFizzBuzzMessageHappyPath4()
        {
            var mockSender = new Mock <ISender>();

            var engine = new FizzBuzzEngine(mockSender.Object);

            await engine.SendFizzBuzzMessage(14);

            mockSender.Verify(m => m.SendAsync(
                                  It.Is <SenderMessage>(message => message.StringPayload == "14"),
                                  It.IsAny <CancellationToken>()),
                              Times.Once());
        }
        public async Task SendFizzBuzzMessageSadPath()
        {
            var mockSender = new Mock <ISender>();

            var engine = new FizzBuzzEngine(mockSender.Object);

            Func <Task> act = () => engine.SendFizzBuzzMessage(0);

            await act.Should().ThrowExactlyAsync <ArgumentOutOfRangeException>()
            .WithMessage("Must be greater than zero.*value*");

            mockSender.Verify(m => m.SendAsync(
                                  It.IsAny <SenderMessage>(),
                                  It.IsAny <CancellationToken>()),
                              Times.Never());
        }
예제 #15
0
        public void ItReturnsCorrectText()
        {
            var Expected = "1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz 16 17 Fizz 19 Buzz";

            // Arrange
            var range = 20;
            var specs = new List <IFizzBuzzSpecification> {
                new Fizz(), new Buzz()
            };

            // Act
            var result = FizzBuzzEngine.Launch(specs, range);

            // Assert
            Assert.AreEqual(result, Expected);
        }
예제 #16
0
        static void Main(string[] args)
        {
            if (!args.Any())
            {
                args = Enumerable.Range(1, 100).Select(x => x.ToString()).ToArray();
            }

            var engine = new FizzBuzzEngine();

            foreach (var arg in args)
            {
                Console.WriteLine(engine.Convert(int.Parse(arg)));
            }

            Console.ReadKey();
        }
예제 #17
0
        public void Run_BeforeBuild_ThrowsInvalidOperationException()
        {
            var engine = new FizzBuzzEngine <SimpleFakeStartup>();

            Assert.Throws <InvalidOperationException>(() => engine.Run());
        }
예제 #18
0
 public void NewFizzBuzzEngine_DoesNotThrow()
 {
     Assert.DoesNotThrow(() => _ = new FizzBuzzEngine <SimpleFakeStartup>());
 }
예제 #19
0
 public FizzBuzzTest()
 {
     _target = new FizzBuzzEngine();
 }