public void ReturnCacheTest() { VMWallet vwWallet = new VMWallet(new Dictionary<FaceValueTypes, int>{ {FaceValueTypes.One,100}, {FaceValueTypes.Two,100}, {FaceValueTypes.Five,100}, {FaceValueTypes.Ten,100} }); List<Coin> AddingCoins = new List<Coin>{ new Coin(FaceValueTypes.Ten), new Coin(FaceValueTypes.Ten), new Coin(FaceValueTypes.Two), new Coin(FaceValueTypes.One) }; foreach(var coin in AddingCoins) { vwWallet.Add(coin); } Assert.AreEqual(23, vwWallet.MoneyCache); List<Coin> returned_coins = vwWallet.ReturnCache(); Assert.AreEqual(AddingCoins.Count, returned_coins.Count); var e1 = AddingCoins.GetEnumerator(); var e2 = returned_coins.GetEnumerator(); while (e1.MoveNext() && e2.MoveNext()) { Assert.AreEqual(e1.Current, e2.Current); } }
public List <Coin> ReturnCache() { List <Coin> for_return = new List <Coin>(); //Получаем список всех доступных монет Dictionary <Coin, int> avail_coins = new Dictionary <Coin, int>(); foreach (var item in GetSorted()) { avail_coins.Add(new Coin(item.Key), item.Value); } //Массив всех доступных номиналов int[] values = avail_coins.Where(p => p.Value > 0).OrderByDescending(p => p.Key.Info.Price).Select(p => p.Key.Info.Price).ToArray(); int i = 0; while (_money_cache > 0 && i < values.Length) { //Сколько нам нужно монет данного номинала int need_coins = (int)Math.Floor((double)_money_cache / values[i]); //Сколько у нас их есть int have_coins = avail_coins.Where(p => p.Key.Info.Price == values[i]).Select(p => p.Value).First(); //Если у нас есть такое кол-во данных монет то возвращаем его, иначе отдаем что есть if (need_coins > have_coins) { need_coins = have_coins; } List <Coin> ret_coins = _GetCoins(values[i], need_coins); for_return.AddRange(ret_coins); _money_cache -= VMWallet.GetSum(ret_coins); i++; } return(for_return); }
public ActionResult Index() { //Начальная инициализация vwWallet = new VMWallet(new Dictionary<FaceValueTypes, int>{ {FaceValueTypes.One,100}, {FaceValueTypes.Two,100}, {FaceValueTypes.Five,100}, {FaceValueTypes.Ten,100} }); userWallet = new Wallet(new Dictionary<FaceValueTypes, int> { {FaceValueTypes.One,10}, {FaceValueTypes.Two,30}, {FaceValueTypes.Five,20}, {FaceValueTypes.Ten,15} }); productCatalog=new ProductCatalog(new Dictionary<ProductTypes,int> { {ProductTypes.Tea,10}, {ProductTypes.Coffee,20}, {ProductTypes.MilkCoffee,20}, {ProductTypes.Juice,15} }); return View(); }