static void Main(string[] args) { string argument = args.Length > 0 ? args[0] : string.Empty; IMagicPurse purse = null; switch (argument) { case "-a": purse = new MagicPurseAsync(new Splitter()); break; case "-q": purse = new MagicPurseQueue(new Splitter()); break; case "-s": case "": purse = new MagicPurseSync(new Splitter()); break; default: PrintInvalidArguments(); return; } Console.WriteLine("Welcome to the MagicPurse"); var terminate = false; var parser = new AmountParser(); while (!terminate) { terminate = ReadAmountFromConsole(out var amount); if (!terminate) { try { var halfPence = parser.ParseAndGetNumberOfHalfPence(amount); Console.WriteLine("Calculation in progress, please wait."); var startTime = DateTime.Now; var makeEvenChange = purse.GetAllSplits(halfPence); var duration = DateTime.Now - startTime; Console.WriteLine($"Number of possibilities: {makeEvenChange} (took {duration.TotalMilliseconds}ms)"); } catch (ArgumentException a) { Console.WriteLine(a.Message); } } } }
protected void Test(IMagicPurse purse, long number, long expectedResult) { var result = purse.GetAllSplits(number); Assert.AreEqual(expectedResult, result); }
public void Initialize() { Purse = CreatePurse(); }