private static void RomanNumeralsConverterInputLoop() { bool quit = false; var converter = new ClassicRomanNumeralsConvert(); DoMatrix(); //Make console look like the matrix while (!quit) { Console.WriteLine("Enter a number between 1 and 3999 (inclusive) or type quit to exit: "); string input = Console.ReadLine(); if (input.ToLower() == "quit") //normalise input incase user tries to trick the exit criterea with "QuIt" or something similar.. { quit = true; continue; } int value = ConvertInputToInt(input); if (value < 0) { DisplayNag(); continue; //skip the rest and try again } var result = converter.generate(value); if (string.IsNullOrWhiteSpace(result)) { DisplayNag(); } else { Console.WriteLine(string.Concat(input, " in Roman Numerals is: ", result, ". Try another number")); } } }
//just a very quick main to see how the converter does with real sample data. static void Main(string[] args) { var numeralConversions = OpenFile(); var correct = 0; foreach (var conversion in numeralConversions) { Console.ForegroundColor = ConsoleColor.Green; var splitConversion = conversion.Split(','); var nnc = new NumberNumeralConversions(Int32.Parse(splitConversion[0]), splitConversion[1]); var crnc = new ClassicRomanNumeralsConvert(); nnc.ActualResult = crnc.generate(nnc.Number); if (!nnc.WasCorrectResult) { Console.ForegroundColor = ConsoleColor.Red; } else { correct++; } Console.WriteLine(nnc.ToString()); } Console.WriteLine(correct + " out of " + numeralConversions.Count() + " correct"); Console.WriteLine("Any key to exit.."); Console.Read(); }
//prove input validation works correctly public void Testing_0isEmpty() { string expected = string.Empty; int numberUnderTest = 0; string actual = romanNumeralGenerator.generate(numberUnderTest); Assert.AreEqual(expected, actual); }