// 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 }
/// <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()); }