public void FortuneCookie_Constructor_PassANullName_ThrowsException()
        {
            //Arrange
            //Act
            var cookie = new FortuneCookie(null);

            // Assert
            Assert.Fail("An exception should have been thrown.");
        }
        public void AppRun_NameIsGiven_FirstOutputAsksForYourName()
        {
            var fakeConsole = GenerateFakeConsoleWithInputs();

            var fortuneCookie = new FortuneCookie(new DateTimeOffsetWrapper());
            var app           = new App(fortuneCookie, fakeConsole);

            app.Run();

            fakeConsole.WrittenLines[0].Should().Be("What's your name? ");
        }
        public void AppRun_WhenNormalUse_ReadsTwoInputs()
        {
            var fakeConsole = GenerateFakeConsoleWithInputs();

            var fortuneCookie = new FortuneCookie(new DateTimeOffsetWrapper());
            var app           = new App(fortuneCookie, fakeConsole);

            app.Run();

            fakeConsole.LinesToRead.Count.Should().Be(0);
        }
        public void AppRun_SecondOutputAsksForYourBirthday()
        {
            var fakeConsole = GenerateFakeConsoleWithInputs();

            var fortuneCookie = new FortuneCookie(new DateTimeOffsetWrapper());
            var app           = new App(fortuneCookie, fakeConsole);

            app.Run();

            fakeConsole.WrittenLines[1].Should().Be("When were you born (dd/mm/yyyy)?");
        }
        public void AppRun_WhenIncorrectDateEnteredForDateOfBirthday_ThirdOutputReturnsWarning()
        {
            var fakeConsole = new FakeConsole();

            fakeConsole.LinesToRead.Enqueue("Peter");
            fakeConsole.LinesToRead.Enqueue("incorrect date format");

            var fortuneCookie = new FortuneCookie(new DateTimeOffsetWrapper());
            var app           = new App(fortuneCookie, fakeConsole);

            app.Run();

            fakeConsole.WrittenLines[2].Should().Be("That's not a date of birth. No fortune for you!");
        }
        public void AppRun_NameInputAsPeter_ThirdOutputHasGreetingUsingInputName()
        {
            var fakeConsole = new FakeConsole();

            fakeConsole.LinesToRead.Enqueue("Peter");
            fakeConsole.LinesToRead.Enqueue("01/01/1990");

            var fortuneCookie = new FortuneCookie(new DateTimeOffsetWrapper());
            var app           = new App(fortuneCookie, fakeConsole);

            app.Run();

            fakeConsole.WrittenLines[2].Should().StartWith("Hi Peter!");
        }
        public void AppRun_WhenGivenDateOfBirthIsThursday_FourthOutputGivesFortuneForThursday()
        {
            var fakeConsole = new FakeConsole();

            fakeConsole.LinesToRead.Enqueue("Peter");
            fakeConsole.LinesToRead.Enqueue("03/09/2020");

            var fortuneCookie = new FortuneCookie(new DateTimeOffsetWrapper());
            var app           = new App(fortuneCookie, fakeConsole);

            app.Run();

            fakeConsole.WrittenLines[4].Should().Be("On the day you were born your fortune was: Avocadoes are lucky!");
        }
        public void AppRun_WhenDayOfTheWeek_ThirdOutputReturnsCorrectFortuneForTheDayOfTheWeek(
            DateTimeOffset currentDate,
            string result)
        {
            var fakeConsole = GenerateFakeConsoleWithInputs();

            var fortuneCookie = new FortuneCookie(new FakeDateTimeOffset {
                Now = currentDate
            });
            var app = new App(fortuneCookie, fakeConsole);

            app.Run();

            fakeConsole.WrittenLines[3].Should().EndWith(result);
        }
        public void AppRun_TodayIsJanuaryFirstButDateOfBirthIsDifferentDate_DoNotWishHappyBirthday()
        {
            var fakeConsole = new FakeConsole();

            fakeConsole.LinesToRead.Enqueue("John");
            fakeConsole.LinesToRead.Enqueue("02/02/1995");

            var fortuneCookie = new FortuneCookie(new FakeDateTimeOffset {
                Now = DateTimeOffset.Parse("01/01/2020")
            });
            var app = new App(fortuneCookie, fakeConsole);

            app.Run();

            fakeConsole.WrittenLines[2].Should().NotBe("Happy birthday, John!");
        }
        public void AppRun_WhenNameIsJohnAndTodayAndDateOfBirthIsJanuaryFirst_WishJohnHappyBirthday()
        {
            var fakeConsole = new FakeConsole();

            fakeConsole.LinesToRead.Enqueue("John");
            fakeConsole.LinesToRead.Enqueue("01/01/1995");

            var fortuneCookie = new FortuneCookie(new FakeDateTimeOffset {
                Now = DateTimeOffset.Parse("01/01/2020")
            });
            var app = new App(fortuneCookie, fakeConsole);

            app.Run();

            fakeConsole.WrittenLines[2].Should().Be("Happy birthday, John!");
        }
        public void AppRun_TodayIsBirthdayForDateOfBirth_WishHappyBirthdayAndDoNotGreetAgain()
        {
            var fakeConsole = new FakeConsole();

            fakeConsole.LinesToRead.Enqueue("John");
            fakeConsole.LinesToRead.Enqueue("05/05/1985");

            var fortuneCookie = new FortuneCookie(new FakeDateTimeOffset {
                Now = DateTimeOffset.Parse("05/05/2020")
            });
            var app = new App(fortuneCookie, fakeConsole);

            app.Run();

            fakeConsole.WrittenLines[2].Should().Be("Happy birthday, John!");
            fakeConsole.WrittenLines[3].Should().Be("Your fortune for today is: Beware of figs!");
        }
예제 #12
0
        static void Main(string[] args)
        {
            SetUpExceptionHandling();

            var name = string.Empty;

            while (name != "exit")
            {
                Console.WriteLine("Tell me your name:");
                name = Console.ReadLine();

                var fortuneTeller = new FortuneCookie(name);
                var fortune       = fortuneTeller.TellMeMyFortune();

                Console.WriteLine(fortune);
            }

            Console.WriteLine("Press a key to exit...");
            Console.ReadLine();
        }
예제 #13
0
 public void Setup()
 {
     _dateTimeOffset = A.Fake <IDateTimeOffset>();
     _fortuneCookie  = new FortuneCookie(_dateTimeOffset);
 }