예제 #1
0
        public void Retirer(ICompte p_compte, decimal p_montant)
        {
            if (p_compte is null)
            {
                throw new ArgumentNullException(nameof(p_compte));
            }
            if (p_montant <= 0)
            {
                throw new ArgumentException("Le montant doit être supérieur à 0", nameof(p_montant));
            }

            ITransaction transaction = m_createurTransaction.CreerTransactionRetirer(p_compte, p_montant);

            if (transaction.EstValide())
            {
                try
                {
                    transaction.ExecuterTransaction();
                    m_tiroirArgent.DistribuerArgent(p_montant);
                }
                catch (Exception ex)
                {
                    transaction.Annuler();
                }
            }
        }
예제 #2
0
        public void Retirer_CompteNull_Exception()
        {
            // Arrange
            ICompte compte  = null;
            decimal montant = 100;
            Mock <ITiroirArgent>        tiroirArgent        = new Mock <ITiroirArgent>();
            Mock <ICreateurTransaction> createurTransaction = new Mock <ICreateurTransaction>();
            ATM atm = new ATM(tiroirArgent.Object, createurTransaction.Object);

            // Act
            // Assert
            Assert.Throws <ArgumentNullException>(() => atm.Retirer(compte, montant));
        }
예제 #3
0
        public void Retirer(ICompte p_compte, decimal p_montant)
        {
            ITransaction transaction = m_createurTransaction.CreerTransactionRetirer(p_compte, p_montant);

            if (transaction.EstValide())
            {
                try
                {
                    transaction.ExecuterTransaction();
                    m_tiroirArgent.DistribuerArgent(p_montant);
                }
                catch (Exception ex)
                {
                    transaction.Annuler();
                }
            }
        }
예제 #4
0
 public DemandePaiement(ICompte compte, ISystemePaiementBanque systemePaiement)
 {
     _systemePaiement = systemePaiement;
     _compte          = compte;
 }
 public TransactionRetirerBanqueXYZ(ICompte p_compte, decimal p_montant)
 {
     this.m_compte  = p_compte;
     this.m_montant = p_montant;
 }
예제 #6
0
         public TransactionRetirerBanqueXYZ(ICompte p_compte,  decimal p_montant)
          {
                 this.m_compte   =  p_compte;
                 this.m_montant  =  p_montant;
             
 }
         public ITransaction CreerTransactionRetirer(ICompte p_compte,  decimal p_montant)
          {
                 return new TransactionRetirerBanqueXYZ(p_compte,  p_montant);
             
 }
예제 #8
0
 void ConsidererCompteAvecPasAssezArgent()
 {
     compte = Mock.Of <ICompte>(c => c.AAssezArgent(It.IsAny <double>()) == false);
 }
 public ITransaction CreerTransactionRetirer(ICompte p_compte, decimal p_montant)
 {
     return(new TransactionRetirerBanqueXYZ(p_compte, p_montant));
 }