public void VendingMachineWalletCashBackSuccess_5_2_2_2()
        {
            List <ICoin> coins = new List <ICoin>();

            coins.Add(new Coin(10, 10));
            coins.Add(new Coin(5, 10));
            coins.Add(new Coin(2, 10));

            IVendingMachineWallet wallet = new VendingMachineWallet(coins);

            wallet.AddCoinsFromAcceptor(9, new List <ICoin>()
            {
                new Coin(10, 1), new Coin(10, 1)
            });

            var expectedCollection = wallet.GetCashBack().ToList();

            expectedCollection = expectedCollection.OrderBy(c => c.CoinValue).ToList();

            List <ICoin> actual = new List <ICoin>();

            actual.Add(new Coin(5, 1));
            actual.Add(new Coin(2, 1));
            actual.Add(new Coin(2, 1));
            actual.Add(new Coin(2, 1));

            actual = actual.OrderBy(c => c.CoinValue).ToList();

            Assert.IsTrue(expectedCollection.SequenceEqual(actual, new CoinsComparer()));
        }
        public MainViewModel()
        {
            var coinAceptor         = new CoinAceptor();
            var vendingMachineValet = new VendingMachineWallet();
            var beverageRepository  = new BeverageRepository();

            VendingMachine = new VendingMachineRef(coinAceptor, vendingMachineValet, beverageRepository);

            CustomerWallet = new Wallet();

            messageNotifyer = new MessageNotifyer();
        }
        public void VendingMachineWalletCashBackError()
        {
            List <ICoin> coins = new List <ICoin>();

            coins.Add(new Coin(10, 10));
            coins.Add(new Coin(2, 10));

            IVendingMachineWallet wallet = new VendingMachineWallet(coins);

            wallet.AddCoinsFromAcceptor(9, new List <ICoin>()
            {
                new Coin(2, 1),
            });

            var expectedCollection = wallet.GetCashBack();

            Assert.IsTrue(expectedCollection == null);
        }