예제 #1
0
        // Operacja wypłaty z debetem
        public override void Wyplata(double kwota)
        {
            if (component != null)
            {
                Rachunek r = (Rachunek)component;
                WzorceProj.command_operacje.Payment p = new WzorceProj.command_operacje.Payment(kwota);
                double saldo_po_wyplacie = p.Execute(r);

                if (saldo_po_wyplacie < 0 && this.Debt <= this.MaxDebt)
                {
                    this.Debt = Math.Abs(saldo_po_wyplacie);
                    r.Saldo   = 0;
                }
                else
                {
                    if (this.Debt <= this.MaxDebt)
                    {
                        r.SetHistoria("Przekroczono dopuszczalny limit debetu! (" + this.MaxDebt.ToString() + ")");
                    }
                    if (saldo_po_wyplacie >= 0)
                    {
                        r.Wyplata(kwota);
                    }
                }
            }
        }
        public void Test_RachunekDebetowy_WE_MaxDebet300_wp100_przelew100_WY_0()
        {
            double MaxDebet = 300;

            r = new Rachunek("123", "imie", "nazwisko");
            d = new RachunekDebetowy(r, MaxDebet);

            r_dest = new Rachunek("456", "imie", "nazwisko");

            d.Wplata(100);
            d.Przelew(100, r_dest);

            d_dest = new RachunekDebetowy(r_dest, MaxDebet);
            d_dest.Przelew(100, r);
            r.Wyplata(100);

            Assert.IsTrue(0 == d.Debt, "Błąd w naliczeniu debetu z rachunku źródłowego!", null);
            Assert.IsTrue(0 == d_dest.Debt, "Błąd w naliczeniu debetu z rachunku docelowego!", null);
            Assert.IsTrue(r.Saldo == 0, "Błąd w naliczaniu salda z rachunku źródłowego!", null);
            Assert.IsTrue(r_dest.Saldo == 0, "Błąd w naliczaniu salda z rachunku docelowego!", null);
        }