public static void TestSimpleNumber(IChangeSolver solver)
        {
            ICurrencyHolder holder = new CurrencyHolder();

            solver.FindReturnFor(holder, 200);
            var result = holder.GetUsedNotations();

            Assert.AreEqual(holder.SumTaken(), 200);

            // There should be one entry in results, and it should be 2 of that notation.
            Assert.AreEqual(result.Count, 1);
            Assert.AreEqual(result["100 Dollars"], 2);
        }
        public static void TestComplicatedNumber(IChangeSolver solver)
        {
            ICurrencyHolder holder = new CurrencyHolder();

            solver.FindReturnFor(holder, 367);
            var result = holder.GetUsedNotations();

            Assert.AreEqual(367, holder.SumTaken());

            // There should be one entry in results, and it should be 2 of that notation.
            Assert.AreEqual(result.Count, 4);
            Assert.AreEqual(result["100 Dollars"], 3);
            Assert.AreEqual(result["10 Dollars"], 6);
            Assert.AreEqual(result["5 Dollars"], 1);
            Assert.AreEqual(result["2 Dollars"], 1);
        }
        public static void TestCustomNotationsWithLeftover(IChangeSolver solver)
        {
            ICurrencyHolder holder = new CurrencyHolder(new List <ICurrencyNotation>()
            {
                new CurrencyNotation("10 Cent", 0.1M),
                new CurrencyNotation("25 Cent", 0.25M),
                new CurrencyNotation("75 Cent", 0.75M),
                new CurrencyNotation("5 Dollar", 5),
            });

            solver.FindReturnFor(holder, 24.38M);

            var result = holder.GetUsedNotations();

            Assert.AreEqual(holder.SumTaken(), 24.35M);

            // There should be one entry in results, and it should be 2 of that notation.
            Assert.AreEqual(result.Count, 4);
            Assert.AreEqual(result["10 Cent"], 1);
            Assert.AreEqual(result["25 Cent"], 2);
            Assert.AreEqual(result["75 Cent"], 5);
            Assert.AreEqual(result["5 Dollar"], 4);
        }