コード例 #1
0
        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);
                    }
                }
            }
        }
コード例 #2
0
        protected void Test(IMagicPurse purse, long number, long expectedResult)
        {
            var result = purse.GetAllSplits(number);

            Assert.AreEqual(expectedResult, result);
        }
コード例 #3
0
 public void Initialize()
 {
     Purse = CreatePurse();
 }