コード例 #1
0
        public void TestChange()//Тестирование размена
        {
            _factory.Stub(x => x.CustomerPurseProxy).Return(new MockCustomerPurseRepository(1).Proxy);
            ICustomerPurseRepository customerBalance = _factory.CustomerPurseProxy.Repo;

            customerBalance.ResetPayBalance(17);
            _factory.Stub(x => x.VendingMachineChangeProxy).Return(new MockVendingMachineChangeRepository(2).Proxy);
            IVendingMachineChangeRepository vendingMachineBalance = _factory.VendingMachineChangeProxy.Repo;
            int payBalance = customerBalance.PayBalance;
            Dictionary <CoinType, int> coins = vendingMachineBalance.GetChange(ref payBalance);

            Assert.AreEqual(0, payBalance);                                                       //Размен выполнен над всей внесенной суммой
            Assert.AreEqual(1, coins.ContainsKey(CoinType.coin10) ? coins[CoinType.coin10] : -1); //Проверка состава размена - есть 1 монета номиналом 10 рублей
            Assert.AreEqual(1, coins.ContainsKey(CoinType.coin5) ? coins[CoinType.coin5] : -1);   //Проверка состава размена - есть 1 монета номиналом 5 рублей
            Assert.AreEqual(1, coins.ContainsKey(CoinType.coin2) ? coins[CoinType.coin2] : -1);   //Проверка состава размена - есть 1 монета номиналом 2 рубля
            Assert.AreEqual(-1, coins.ContainsKey(CoinType.coin1) ? coins[CoinType.coin1] : -1);  //Проверка состава размена - монета номиналом 1 рубль отсутствует
            Assert.IsTrue(customerBalance.PaymentBack(vendingMachineBalance, coins));             //Перевод монет между балансами произошел без ошибок (в аппарате монет нужного номинала в достатке)
            coins = customerBalance.GetAll().ToDictionary(x => x.type, y => y.quantity);
            Assert.AreEqual(2, coins.ContainsKey(CoinType.coin10) ? coins[CoinType.coin10] : -1); //Проверка состава размена - есть 2 монеты номиналом 10 рублей
            Assert.AreEqual(2, coins.ContainsKey(CoinType.coin5) ? coins[CoinType.coin5] : -1);   //Проверка состава размена - есть 2 монеты номиналом 5 рублей
            Assert.AreEqual(2, coins.ContainsKey(CoinType.coin2) ? coins[CoinType.coin2] : -1);   //Проверка состава размена - есть 2 монеты номиналом 2 рубля
            Assert.AreEqual(1, coins.ContainsKey(CoinType.coin1) ? coins[CoinType.coin1] : -1);   //Проверка состава размена - есть 1 монета номиналом 1 рубль
            customerBalance.ResetPayBalance(20);
            payBalance = customerBalance.PayBalance;
            coins      = vendingMachineBalance.GetChange(ref payBalance);
            Assert.AreEqual(1, payBalance);                                                       //При размене на балансе обнаружился недостаток монет
            Assert.AreEqual(1, coins.ContainsKey(CoinType.coin10) ? coins[CoinType.coin10] : -1); //Проверка состава размена - есть 1 монета номиналом 10 рублей
            Assert.AreEqual(1, coins.ContainsKey(CoinType.coin5) ? coins[CoinType.coin5] : -1);   //Проверка состава размена - есть 1 монета номиналом 5 рублей
            Assert.AreEqual(1, coins.ContainsKey(CoinType.coin2) ? coins[CoinType.coin2] : -1);   //Проверка состава размена - есть 1 монета номиналом 2 рубля
            Assert.AreEqual(2, coins.ContainsKey(CoinType.coin1) ? coins[CoinType.coin1] : -1);   //Проверка состава размена - есть 2 монеты номиналом 1 рубль
        }
コード例 #2
0
        public void TestPutCoins()//Тестирование опускания монет
        {
            _factory.Stub(x => x.CustomerPurseProxy).Return(new MockCustomerPurseRepository(2).Proxy);
            ICustomerPurseRepository customerBalance = _factory.CustomerPurseProxy.Repo;
            bool AllOperationSuccess = true;

            new List <CoinType>()
            {
                CoinType.coin1, CoinType.coin1, CoinType.coin2, CoinType.coin5, CoinType.coin10
            }.ForEach(x => { if (!(AllOperationSuccess = customerBalance.SubCoins(x, 1)))
                             {
                                 return;
                             }
                      });
            Assert.IsTrue(AllOperationSuccess);                          //При опускании монет, монеты были в наличии
            Assert.AreEqual(19, customerBalance.PayBalance);             //Сумма внесенного баланса коректна
            Assert.IsFalse(customerBalance.SubCoins(CoinType.coin1, 1)); //Невозможность опускания отсутствующих на балансе монет
        }
コード例 #3
0
        public void TestPurchase()//Тестирование покупки
        {
            _factory.Stub(x => x.CustomerPurseProxy).Return(new MockCustomerPurseRepository(1).Proxy);
            ICustomerPurseRepository customerBalance = _factory.CustomerPurseProxy.Repo;

            _factory.Stub(x => x.VendingMachineChangeProxy).Return(new MockVendingMachineChangeRepository(2).Proxy);
            IVendingMachineChangeRepository vendingMachineBalance = _factory.VendingMachineChangeProxy.Repo;

            _factory.Stub(x => x.GoodsProxy).Return(new MockGoodsRepository(1, 7).Proxy);
            IGoodsRepository goods = _factory.GoodsProxy.Repo;

            Assert.IsTrue(customerBalance.Payment(vendingMachineBalance, Dummies.DummyInitCoins(1)));                                                                     //Перевод монет между балансами произошел без ошибок (в аппарате монет нужного номинала в достатке)
            Assert.IsTrue(customerBalance.Shipping(goods.Drinks.First(x => x.Value.type == DrinkType.Tea).Value.price));                                                  //Успешное списание средств с внесенной суммы
            goods.Purchase(goods.Drinks.First(x => x.Value.type == DrinkType.Tea).Key);                                                                                   //Покупка напитка
            Assert.AreEqual(-1, goods.Drinks.Any(x => x.Value.type == DrinkType.Tea) ? goods.Drinks.First(x => x.Value.type == DrinkType.Tea).Value.quantity : -1);       //Ассортимен напитков не содержит нужный
            Assert.IsTrue(customerBalance.Shipping(goods.Drinks.First(x => x.Value.type == DrinkType.Coffee).Value.price));                                               //Успешное списание средств с внесенной суммы
            goods.Purchase(goods.Drinks.First(x => x.Value.type == DrinkType.Coffee).Key);                                                                                //Покупка напитка
            Assert.AreEqual(-1, goods.Drinks.Any(x => x.Value.type == DrinkType.Coffee) ? goods.Drinks.First(x => x.Value.type == DrinkType.Coffee).Value.quantity : -1); //Ассортимен напитков не содержит нужный
            Assert.IsFalse(customerBalance.Shipping(goods.Drinks.First(x => x.Value.type == DrinkType.Juice).Value.price));                                               //Списание средств не удалось из-за недостатка внесенной суммы
            Assert.IsFalse(customerBalance.Payment(vendingMachineBalance, Dummies.DummyInitCoins(1)));                                                                    //Перевод монет между балансами имеет ошибку (в аппарате нет монет нужного номинала)
            Assert.AreEqual(1, goods.Drinks.Any(x => x.Value.type == DrinkType.Juice) ? goods.Drinks.First(x => x.Value.type == DrinkType.Juice).Value.quantity : -1);    //Ассортимен напитков содержит нужный
        }