Beispiel #1
0
        public void Parse_ValidInput_Returns_ExpectedResult(string amount, long expected)
        {
            AmountParser parser = new AmountParser();
            var          result = parser.ParseAndGetNumberOfHalfPence(amount);

            Assert.AreEqual(expected, result);
        }
Beispiel #2
0
        public void GetAmountInWordsTest_Should_Return_Valid_Amount_In_Words()
        {
            var amountParser = new AmountParser();
            var result       = amountParser.GetAmountInWords(5523345.67);

            Assert.AreEqual(result, "FIVE MILLION AND FIVE TWENTY-THREE THOUSAND AND THREE HUNDRED AND FORTY-FIVE DOLLARS AND SIXTY-SEVEN CENTS");
        }
Beispiel #3
0
        public void GetAmountInWordsTest_Should_Return_Valid_Amount_In_Words_When_Only_Decimal()
        {
            var amountParser = new AmountParser();
            var result       = amountParser.GetAmountInWords(.22);

            Assert.AreEqual(result, "TWENTY-TWO CENTS");
        }
Beispiel #4
0
        public void GetAmountInWordsTest_Should_Return_Valid_Amount_In_Words_When_Only_Digits()
        {
            var amountParser = new AmountParser();
            var result       = amountParser.GetAmountInWords(11);

            Assert.AreEqual(result, "ELEVEN DOLLARS");
        }
Beispiel #5
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);
                    }
                }
            }
        }
Beispiel #6
0
        public void Parse_ValidInput_Throws_ArgumentException(string amount)
        {
            AmountParser parser = new AmountParser();

            Assert.Throws <ArgumentException>(() => parser.ParseAndGetNumberOfHalfPence(amount));
        }