예제 #1
0
        public void CanGrantTest()
        {
            var dic    = new Dictionary <uint, uint>();
            var target = new Cashpoint(true, dic);

            Assert.IsTrue(target.CanGrant(0), "Банкомат не может выдать 0");

            target.AddBanknote(5, 1);
            Assert.IsTrue(target.CanGrant(5), "Банкомат не может выдать 5=5");

            target.AddBanknote(6, 1);
            Assert.IsFalse(target.CanGrant(10), "Банкомат выдал 10 != 6+5");

            target.AddBanknote(3, 1);
            Assert.IsTrue(target.CanGrant(8), "Банкомат не смог выдать 5+3=8");

            target.AddBanknote(15, 1);
            target.AddBanknote(14, 1);

            Assert.IsTrue(target.CanGrant(28), "Банкомат не смог выдать 5+3+6+14=28");
            Assert.IsFalse(target.CanGrant(16), "Банкомат как-то смог выдать 16 != 14+3");
            Assert.IsFalse(target.CanGrant(44), "Банкомат как-то смог 44 > 5+6+3+15+14");

            Assert.IsTrue(target.CanGrant(target.Total), "Банкомат не смог выдать всю свою сумму(банкноты не повторяются)");

            target.AddBanknote(50, 2);
            target.AddBanknote(10, 10);
            target.RemoveBanknote(10, 5);
            Assert.IsTrue(target.CanGrant(150), "Банкомат не смог выдать 150");
            target.RemoveBanknote(50, 1);
            target.RemoveBanknote(10, 3);
            Assert.IsTrue(target.CanGrant(70), "Банкомат не смог выдать 70");
        }
예제 #2
0
        public void RemoveBanknoteTest()
        {
            var dic    = new Dictionary <uint, uint>();
            var target = new Cashpoint(true, dic);

            target.OnError += delegate { };
            target.RemoveBanknote(5, 1);
            Assert.AreEqual(0u, target.Total, "Извлечена несуществующая купюра из пустого банкомата");

            target.AddBanknote(7, 2);
            target.RemoveBanknote(3, 1);
            Assert.AreEqual(14u, target.Total, "Извлечена несуществующая купюра");

            target.RemoveBanknote(7, 2);
            Assert.AreEqual(0u, target.Total, "Купюры извлечены не полностью");
        }
예제 #3
0
        public void RemoveBanknote_ExistingBanknotesOnOneBill_ShouldDecrementTotal()
        {
            var cashpoint = new Cashpoint();

            cashpoint.AddBanknote(3);
            cashpoint.AddBanknote(10);
            cashpoint.AddBanknote(1);
            cashpoint.AddBanknote(5);
            cashpoint.RemoveBanknote(5);
            cashpoint.RemoveBanknote(10);

            Assert.That(
                cashpoint.Total,
                Is.EqualTo(4),
                "Купюры извлечены некорректно");
        }
예제 #4
0
        public void RemoveBanknote_ExistingBanknotesOnMultipleBill_ShouldDecrementTotal()
        {
            var cashpoint = new Cashpoint();

            cashpoint.AddBanknote(3, 4);
            cashpoint.AddBanknote(10, 2);
            cashpoint.AddBanknote(6, 3);
            cashpoint.AddBanknote(7, 5);
            cashpoint.RemoveBanknote(3, 2);
            cashpoint.RemoveBanknote(7, 3);

            Assert.That(
                cashpoint.Total,
                Is.EqualTo(58),
                "Купюры извлечены некорректно");
        }
예제 #5
0
        public void RemoveBanknote_ExistingBanknotesOnMultipleBill_ShouldDecrementCountBanknotes()
        {
            var cashpoint = new Cashpoint();

            cashpoint.AddBanknote(3, 4);
            cashpoint.AddBanknote(10, 2);
            cashpoint.AddBanknote(6, 3);
            cashpoint.AddBanknote(7, 5);
            cashpoint.RemoveBanknote(3, 2);
            cashpoint.RemoveBanknote(7, 3);

            Assert.That(
                cashpoint.CountBanknotes,
                Is.EqualTo(9),
                "Неверное количество купюр в банкомате");
        }
예제 #6
0
        public void RemoveBanknote_ExistingBanknotesOnOneBill_ShouldDecrementCountBanknotes()
        {
            var cashpoint = new Cashpoint();

            cashpoint.AddBanknote(3);
            cashpoint.AddBanknote(10);
            cashpoint.AddBanknote(1);
            cashpoint.AddBanknote(5);
            cashpoint.RemoveBanknote(5);
            cashpoint.RemoveBanknote(10);

            Assert.That(
                cashpoint.CountBanknotes,
                Is.EqualTo(2),
                "Неверное количество купюр в банкомате");
        }
예제 #7
0
        public void RemoveBanknote_CashpointIsEmpty_ShouldPreserveTotal()
        {
            var cashpoint = new Cashpoint();

            cashpoint.RemoveBanknote(5);

            Assert.That(
                cashpoint.Total,
                Is.EqualTo(0),
                "Извлечена несуществующая купюра из пустого банкомата");
        }
예제 #8
0
        public void RemoveBanknote_UnknownBanknoteOnMultipleBill_ShouldPreserveTotal()
        {
            var cashpoint = new Cashpoint();

            cashpoint.AddBanknote(7);
            cashpoint.RemoveBanknote(5, 2);

            Assert.That(
                cashpoint.Total,
                Is.EqualTo(7),
                "Извлечены несуществующие купюры");
        }
예제 #9
0
        public void RemoveBanknote_UnknownBanknoteOnOneBill_ShouldPreserveTotal()
        {
            var cashpoint = new Cashpoint();

            cashpoint.AddBanknote(7);
            cashpoint.RemoveBanknote(5);

            Assert.That(
                cashpoint.Total,
                Is.EqualTo(7),
                "Извлечена несуществующая купюра");
        }
예제 #10
0
        public void RemoveBanknote_OneBanknoteOnMultipleBill_ShouldRecalculateSieve()
        {
            var cashpoint = new Cashpoint();

            cashpoint.AddBanknote(5, 2);
            cashpoint.AddBanknote(4);
            cashpoint.AddBanknote(3);
            cashpoint.AddBanknote(2);
            cashpoint.RemoveBanknote(5, 2);

            Assert.That(
                cashpoint.Sieve[0],
                Is.EqualTo(1u),
                "Неправильное число в 0 ячейке решета");
            Assert.That(
                cashpoint.Sieve[1],
                Is.EqualTo(0u),
                "Неправильное число в 1 ячейке решета");
            Assert.That(
                cashpoint.Sieve[2],
                Is.EqualTo(1u),
                "Неправильное число в 2 ячейке решета");
            Assert.That(
                cashpoint.Sieve[3],
                Is.EqualTo(1u),
                "Неправильное число в 3 ячейке решета");
            Assert.That(
                cashpoint.Sieve[4],
                Is.EqualTo(1u),
                "Неправильное число в 4 ячейке решета");
            Assert.That(
                cashpoint.Sieve[5],
                Is.EqualTo(1u),
                "Неправильное число в 5 ячейке решета");
            Assert.That(
                cashpoint.Sieve[6],
                Is.EqualTo(1u),
                "Неправильное число в 6 ячейке решета");
            Assert.That(
                cashpoint.Sieve[7],
                Is.EqualTo(1u),
                "Неправильное число в 7 ячейке решета");
            Assert.That(
                cashpoint.Sieve[8],
                Is.EqualTo(0u),
                "Неправильное число в 8 ячейке решета");
            Assert.That(
                cashpoint.Sieve[9],
                Is.EqualTo(1u),
                "Неправильное число в 9 ячейке решета");
        }