Example #1
0
        public void TestVendingMachine()
        {
            /// Создать тестовый счет пользователя
            var user = new User();
            user.CreateDefaults();

            /// Создать торговый автомат для тестирования
            var vm = Container.Resolve<IVMService>();
            Assert.IsNotNull(vm);

            vm.CreateDefaults();

            /// Внести деньги на счет автомата
            var money = user.Account.Get(1, 1, 1, 5, 10);
            Assert.AreEqual(money.Length, 5);

            vm.UserAccount.Add(money);
            Assert.AreEqual(vm.UserAccount.Sum, new Money(18));
            Assert.AreEqual(vm.UserAccount.TotalSum, new Money(18));

            money = user.Account.Get(2, 1, 1, 1);
            Assert.AreEqual(money.Length, 4);

            vm.UserAccount.Add(money);
            Assert.AreEqual(vm.UserAccount.Sum, new Money(23));
            Assert.AreEqual(vm.UserAccount.TotalSum, new Money(23));

            /// Купить чай за 13 рублей
            try
            {
                var tea = vm.Buy(Product.Tea.Name);
                Assert.IsNotNull(tea);
                Assert.AreEqual(vm.UserAccount.TotalSum, new Money(10)); // 23 - 13 = 10

                user.Products.Add(tea);
                Assert.AreEqual(user.Products.Count, 1);
            }
            catch (VMException)
            {
                /// Нет денег на чай :(((
            }

        BuyCoffee:
            /// Купить кофе за 18 рублей
            try
            {
                var coffee = vm.Buy(Product.Coffee.Name);
                Assert.IsNotNull(coffee);
                Assert.AreEqual(vm.UserAccount.TotalSum, new Money(2)); 

                user.Products.Add(coffee);
                Assert.AreEqual(user.Products.Count, 2);
            }
            catch (VMException)
            {
                money = user.Account.Get(Money.Five);
                if (money.Length > 0)
                {
                    vm.UserAccount.Add(money);
                    goto BuyCoffee;
                }
            }

            /// Запросить остаток
            var rest = vm.GetRest();
            Assert.AreEqual(rest.Length, 1);
            Assert.AreEqual(rest[0], Money.Two);

            user.Account.Add(rest);

            Assert.IsTrue(user.Account.Sum > 0);
            Assert.AreEqual(user.Account.Sum, user.Account.TotalSum);
        }
Example #2
0
 public MvcDomainModelContext()
 {
     User = new User();
 }
Example #3
0
 public MainViewModel()
 {
     User = new User();
 }