示例#1
0
        public void GetBalance()
        {
            var dictionary = new Dictionary <string, object>();
            var service    = new Mock <IBankLedgerService>();

            service.SetupGet(x => x.DataBase).Returns(dictionary);
            var ledgerService = new LedgerService(service.Object);
            var account       = new Account("testing", "password", "", null);
            var badAccount    = new Account(null, "password", "", null);
            var depLedger     = new Ledger(0, TransactionType.Deposit, 10);
            var withLedger    = new Ledger(0, TransactionType.Withdrawl, 10);

            Assert.Throws <ArgumentException>(() => ledgerService.GetTotalBalance(null));
            Assert.Throws <ArgumentException>(() => ledgerService.GetTotalBalance(badAccount));

            Assert.AreEqual(0, ledgerService.GetTotalBalance(account));

            ledgerService.CreateLedger(account, depLedger);
            ledgerService.CreateLedger(account, withLedger);
            ledgerService.CreateLedger(account, depLedger);
            ledgerService.CreateLedger(account, withLedger);
            ledgerService.CreateLedger(account, depLedger);
            ledgerService.CreateLedger(account, withLedger);

            Assert.AreEqual(0, ledgerService.GetTotalBalance(account));

            ledgerService.CreateLedger(account, depLedger);
            Assert.AreEqual(10, ledgerService.GetTotalBalance(account));

            ledgerService.CreateLedger(account, withLedger);
            ledgerService.CreateLedger(account, withLedger);
            Assert.AreEqual(-10, ledgerService.GetTotalBalance(account));

            for (int i = 0; i < 11; i++)
            {
                ledgerService.CreateLedger(account, depLedger);
            }

            Assert.AreEqual(100, ledgerService.GetTotalBalance(account));

            for (int i = 0; i < 11; i++)
            {
                ledgerService.CreateLedger(account, withLedger);
            }

            Assert.AreEqual(-10, ledgerService.GetTotalBalance(account));
        }