Esempio n. 1
0
        // Test names take the form of MethodNameUnderTest_TestScenario_ExpectedResult
        public void GenerateLotteryNumbers_RequiredCountOfNumbersNotSupplied_CorrectCountOfNumbersReturned()
        {
            // Arrange

            // Act
            GeneratedLotteryNumbersResult testResult = objectUnderTest.GenerateLotteryNumbers();

            // Assert
            Assert.True(testResult.IsSuccess);
            Assert.Null(testResult.ErrorMessage);
            Assert.Equal(6, testResult.LotteryNumbers.Count);                   // Ensure correct count of number
            Assert.Equal(6, testResult.LotteryNumbers.Keys.Distinct().Count()); // Ensure correct count of unique number - i.e. all should be unique
        }
        public void TrySaveLotteryNumbers_SaveSameNumerTwice_CorrectCountOfNumbersReturned()
        {
            // Arrange
            GeneratedLotteryNumbersResult testResult = new GeneratedLotteryNumbersResult(6);

            // Act

            // Assert
            Assert.True(testResult.TrySaveLotteryNumber(1, TextColour.Grey));
            Assert.False(testResult.TrySaveLotteryNumber(1, TextColour.Grey));
            Assert.True(testResult.TrySaveLotteryNumber(2, TextColour.Grey));
            Assert.Equal(2, testResult.LotteryNumbers.Count);                   // Ensure correct count of number
            Assert.Equal(2, testResult.LotteryNumbers.Keys.Distinct().Count()); // Ensure correct count of unique number - i.e. all should be unique
        }
        public void HasRequiredNumbersCount_SaveSixNUmbers_ReturnTrue(int countOfNumbers)
        {
            // Arrange
            GeneratedLotteryNumbersResult testResult = new GeneratedLotteryNumbersResult(countOfNumbers);

            // Act
            for (int i = 1; i <= countOfNumbers; i++)
            {
                testResult.TrySaveLotteryNumber(i, TextColour.Grey);
            }

            // Assert
            Assert.True(testResult.HasRequiredNumbersCount()); // Ensure HasRequiredNumbersCount returns true
        }
Esempio n. 4
0
        /// <summary>
        /// The entry point of the application
        /// </summary>
        static void Main()
        {
            // Configure simple configuration
            var configuration = new ConfigurationBuilder()
                                .AddJsonFile("appsettings.json", optional: true)
                                .Build();

            // Setup Inversion of Control/ DI
            var serviceProvider = new ServiceCollection()
                                  .AddSingleton <ILotteryNumberGenerator, LotteryNumberGenerator>()
                                  .BuildServiceProvider();

            // Set default required lottery numbers incase config is not present
            int requiredNumberOfLotteryNumbers = 6;

            // Allow override of number of required lottery numbers so that a rebuild/retest of application is not required
            if (configuration["requiredNumberOfLotteryNumbers"] != null)
            {
                int.TryParse(configuration["requiredNumberOfLotteryNumbers"], out requiredNumberOfLotteryNumbers);
            }

            try
            {
                // The below could be called also with no param to get default functionaility of 6 numbers also
                GeneratedLotteryNumbersResult generatedLotteryNumbers = serviceProvider.GetService <ILotteryNumberGenerator>().GenerateLotteryNumbers(requiredNumberOfLotteryNumbers);
                if (generatedLotteryNumbers.IsSuccess)
                {
                    foreach (var lotteryNumber in generatedLotteryNumbers.LotteryNumbers)
                    {
                        TextColour   textColour    = lotteryNumber.Value;
                        ConsoleColor consoleColour = Converters.ConvertTextColourToConsoleColour(textColour);
                        Console.ForegroundColor = consoleColour;
                        Console.WriteLine(lotteryNumber.Key);
                    }

                    Console.ForegroundColor = ConsoleColor.White;
                }
                else
                {
                    WriteErrorMessage(generatedLotteryNumbers.ErrorMessage);
                }
            }
            catch (Exception ex)
            {
                WriteErrorMessage(ex.Message);
            }

            Console.WriteLine("Press <Return> to continue");
            Console.ReadLine();
        }
        public void AreLotteryNumbersValid(int secondNumber, bool expectedResult)
        {
            // Arrange
            GeneratedLotteryNumbersResult testResult = new GeneratedLotteryNumbersResult(6);

            // Act
            testResult.TrySaveLotteryNumber(1, TextColour.Grey);
            testResult.TrySaveLotteryNumber(secondNumber, TextColour.Grey);
            testResult.TrySaveLotteryNumber(3, TextColour.Grey);
            testResult.TrySaveLotteryNumber(4, TextColour.Grey);
            testResult.TrySaveLotteryNumber(5, TextColour.Grey);
            testResult.TrySaveLotteryNumber(6, TextColour.Grey);

            // Assert
            Assert.Equal(expectedResult, testResult.AreLotteryNumbersValid());
        }