Esempio n. 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");
        }
Esempio n. 2
0
        public void CountTest()
        {
            var dic    = new Dictionary <uint, uint>();
            var target = new Cashpoint(true, dic);

            Assert.AreEqual(0u, target.Count, "Новый банкомат оказался не пустой");
        }
Esempio n. 3
0
        public void Total_InitialState_ShouldBeZero()
        {
            var cashpoint = new Cashpoint();

            Assert.That(
                cashpoint.Total,
                Is.EqualTo(0u),
                "Новый банкомат оказался не пустой");
        }
Esempio n. 4
0
        public void CanGrant_SumEqualsToSingleBanknote_ShouldGrant()
        {
            var cashpoint = new Cashpoint();

            cashpoint.AddBanknote(5);

            Assert.That(
                cashpoint.CanGrant(5),
                "Банкомат не смог выдать единственную банкноту");
        }
Esempio n. 5
0
        public void CanGrant_SumEqualsToMultipleBanknotes_ShouldGrant()
        {
            var cashpoint = new Cashpoint();

            cashpoint.AddBanknote(5, 3);

            Assert.That(
                cashpoint.CanGrant(15),
                "Банкомат не смог выдать имеющуюся в нем сумму");
        }
Esempio n. 6
0
        public void RemoveBanknote_CashpointIsEmpty_ShouldPreserveTotal()
        {
            var cashpoint = new Cashpoint();

            cashpoint.RemoveBanknote(5);

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

            cashpoint.AddBanknote(5);
            cashpoint.AddBanknote(3);

            Assert.That(
                cashpoint.CanGrant(8),
                "Банкомат не смог выдать сумму двух купюр");
        }
Esempio n. 8
0
        public void AddBanknote_OneBanknoteOnOneBill_ShouldRecalculateSieve()
        {
            var cashpoint = new Cashpoint();

            cashpoint.AddBanknote(5);

            Assert.That(
                cashpoint.Sieve[5],
                Is.EqualTo(1u),
                "Неправильное число в 5 ячейке решета");
        }
Esempio n. 9
0
        public void AddBanknote_OneBanknoteOnMultipleBill_ShouldIncrementCountBanknotes()
        {
            var cashpoint = new Cashpoint();

            cashpoint.AddBanknote(5, 3);

            Assert.That(
                cashpoint.CountBanknotes,
                Is.EqualTo(3u),
                "Неверное количество банкнот в банкомате");
        }
Esempio n. 10
0
        public void AddBanknote_OneBanknoteOnMultipleBill_ShouldIncrementTotal()
        {
            var cashpoint = new Cashpoint();

            cashpoint.AddBanknote(3, 4);

            Assert.That(
                cashpoint.Total,
                Is.EqualTo(12u),
                "Банкноты были добавлены неправильно");
        }
Esempio n. 11
0
        public void AddBanknote_OneBanknoteOnOneBill_ShouldIncrementTotal()
        {
            var cashpoint = new Cashpoint();

            cashpoint.AddBanknote(5);

            Assert.That(
                cashpoint.Total,
                Is.EqualTo(5u),
                "Добавление единственной банкноты не было произведено");
        }
Esempio n. 12
0
        public void CanGrant_MultipleBanknotesIntermediateValues_ShouldNotGrant()
        {
            var cashpoint = new Cashpoint();

            cashpoint.AddBanknote(5, 1);
            cashpoint.AddBanknote(3, 1);

            Assert.That(
                cashpoint.CanGrant(6),
                Is.False,
                "Банкомат смог выдать значение между номиналами купюр");
        }
Esempio n. 13
0
        public void AddBanknote_MultipleBanknotesOnOneBill_ShouldIncrementTotal()
        {
            var cashpoint = new Cashpoint();

            cashpoint.AddBanknote(5);
            cashpoint.AddBanknote(10);

            Assert.That(
                cashpoint.Total,
                Is.EqualTo(15u),
                "Добавление второй банкноты не было произведено");
        }
Esempio n. 14
0
        public void RemoveBanknote_UnknownBanknoteOnOneBill_ShouldPreserveTotal()
        {
            var cashpoint = new Cashpoint();

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

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

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

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

            cashpoint.AddBanknote(3, 2);
            cashpoint.AddBanknote(10, 5);

            Assert.That(
                cashpoint.Total,
                Is.EqualTo(56u),
                "Сумма добавленых купюр не соответствует");
        }
Esempio n. 17
0
        public void RemoveBanknote_ExistingBanknoteOnOneBill_ShouldDecrementTotal()
        {
            var cashpoint = new Cashpoint();

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

            Assert.That(
                cashpoint.Total,
                Is.EqualTo(10),
                "Купюра извлечена некорректно");
        }
Esempio n. 18
0
        public void RemoveBanknote_ExistingBanknoteOnMultipleBill_ShouldDecrementCountBanknotes()
        {
            var cashpoint = new Cashpoint();

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

            Assert.That(
                cashpoint.CountBanknotes,
                Is.EqualTo(4),
                "Неверное количество купюр в банкомате");
        }
Esempio n. 19
0
        public void RemoveBanknote_ExistingBanknoteOnMultipleBill_ShouldDecrementTotal()
        {
            var cashpoint = new Cashpoint();

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

            Assert.That(
                cashpoint.Total,
                Is.EqualTo(26),
                "Купюры извлечены некорректно");
        }
Esempio n. 20
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 ячейке решета");
        }
Esempio n. 21
0
        public void CanGrant_SumIsZero_ShouldGrant()
        {
            var cashpoint = new Cashpoint();

            Assert.That(
                cashpoint.CanGrant(0),
                "Банкомат не смог выдать 0");

            cashpoint.AddBanknote(5);

            Assert.That(
                cashpoint.CanGrant(0),
                "Банкомат не смог выдать 0 после добавления купюры");
        }
Esempio n. 22
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, "Купюры извлечены не полностью");
        }
Esempio n. 23
0
        public void CanGrant_SumNotEqualToSingleBanknote_ShouldNotGrant()
        {
            var cashpoint = new Cashpoint();

            cashpoint.AddBanknote(5);

            Assert.That(
                cashpoint.CanGrant(4),
                Is.False,
                "Банкомат смог выдать значение меньше номинала единственной купюры");

            Assert.That(
                cashpoint.CanGrant(6),
                Is.False,
                "Банкомат смог выдать значение больше номинала единственной купюры");
        }
Esempio n. 24
0
        public void AddBanknoteTest()
        {
            var dic    = new Dictionary <uint, uint>();
            var target = new Cashpoint(true, dic);

            target.AddBanknote(5, 1);
            Assert.AreEqual(5, target.Total, "Добавление единственной банкноты не было произведено");
            target.AddBanknote(50, 1);
            Assert.AreEqual(55, target.Total, "Добавление второй банкноты не было произведено");

            for (var i = 0; i < 255; i++)
            {
                target.AddBanknote(7, 1);
            }

            Assert.AreEqual(1840, target.Total, "Добавление 255-ти банкнот не было произведено");
            target.AddBanknote(1, 60);
            Assert.AreEqual(1900, target.Total, "Добавление 60-ти банкнот не было произведено");
        }
Esempio n. 25
0
        public void CanGrant_PerformanceTest()
        {
            var cashpoint = new Cashpoint();

            for (var i = 0; i < 2; i++)
            {
                cashpoint.AddBanknote(10);
                cashpoint.AddBanknote(50);
                cashpoint.AddBanknote(100);
                cashpoint.AddBanknote(200);
                cashpoint.AddBanknote(500);
                cashpoint.AddBanknote(1000);
                cashpoint.AddBanknote(2000);
                cashpoint.AddBanknote(5000);
            }

            Assert.That(cashpoint.CanGrant(3350));
            Assert.That(cashpoint.CanGrant(3980), Is.False);
        }
Esempio n. 26
0
        public void AddBanknote_OneBanknoteOnMultipleBill_ShouldRecalculateSieve()
        {
            var cashpoint = new Cashpoint();

            cashpoint.AddBanknote(5, 4);

            Assert.That(
                cashpoint.Sieve[5],
                Is.EqualTo(4u),
                "Неправильное число в 5 ячейке решета");
            Assert.That(
                cashpoint.Sieve[10],
                Is.EqualTo(6u),
                "Неправильное число в 10 ячейке решета");
            Assert.That(
                cashpoint.Sieve[15],
                Is.EqualTo(4u),
                "Неправильное число в 15 ячейке решета");
            Assert.That(
                cashpoint.Sieve[20],
                Is.EqualTo(1u),
                "Неправильное число в 20 ячейке решета");
        }
Esempio n. 27
0
        public void AddBanknote_MultipleBanknotesOnMultipleBill_ShouldRecalculateSieve()
        {
            var cashpoint = new Cashpoint();

            cashpoint.AddBanknote(4);
            cashpoint.AddBanknote(3);
            cashpoint.AddBanknote(5, 3);
            cashpoint.AddBanknote(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(4u),
                "Неправильное число в 5 ячейке решета");
            Assert.That(
                cashpoint.Sieve[6],
                Is.EqualTo(1u),
                "Неправильное число в 6 ячейке решета");
            Assert.That(
                cashpoint.Sieve[7],
                Is.EqualTo(4u),
                "Неправильное число в 7 ячейке решета");
            Assert.That(
                cashpoint.Sieve[8],
                Is.EqualTo(3u),
                "Неправильное число в 8 ячейке решета");
            Assert.That(
                cashpoint.Sieve[9],
                Is.EqualTo(4u),
                "Неправильное число в 9 ячейке решета");
            Assert.That(
                cashpoint.Sieve[10],
                Is.EqualTo(6u),
                "Неправильное число в 10 ячейке решета");
            Assert.That(
                cashpoint.Sieve[11],
                Is.EqualTo(3u),
                "Неправильное число в 11 ячейке решета");
            Assert.That(
                cashpoint.Sieve[12],
                Is.EqualTo(6u),
                "Неправильное число в 12 ячейке решета");
            Assert.That(
                cashpoint.Sieve[13],
                Is.EqualTo(3u),
                "Неправильное число в 13 ячейке решета");
            Assert.That(
                cashpoint.Sieve[14],
                Is.EqualTo(6u),
                "Неправильное число в 14 ячейке решета");
            Assert.That(
                cashpoint.Sieve[15],
                Is.EqualTo(4u),
                "Неправильное число в 15 ячейке решета");
            Assert.That(
                cashpoint.Sieve[16],
                Is.EqualTo(3u),
                "Неправильное число в 16 ячейке решета");
            Assert.That(
                cashpoint.Sieve[17],
                Is.EqualTo(4u),
                "Неправильное число в 17 ячейке решета");
            Assert.That(
                cashpoint.Sieve[18],
                Is.EqualTo(1u),
                "Неправильное число в 18 ячейке решета");
            Assert.That(
                cashpoint.Sieve[19],
                Is.EqualTo(4u),
                "Неправильное число в 19 ячейке решета");
            Assert.That(
                cashpoint.Sieve[20],
                Is.EqualTo(1u),
                "Неправильное число в 20 ячейке решета");
            Assert.That(
                cashpoint.Sieve[21],
                Is.EqualTo(1u),
                "Неправильное число в 21 ячейке решета");
            Assert.That(
                cashpoint.Sieve[22],
                Is.EqualTo(1u),
                "Неправильное число в 22 ячейке решета");
            Assert.That(
                cashpoint.Sieve[23],
                Is.EqualTo(0u),
                "Неправильное число в 23 ячейке решета");
            Assert.That(
                cashpoint.Sieve[24],
                Is.EqualTo(1u),
                "Неправильное число в 24 ячейке решета");
        }