Example #1
0
        public Prêt Calculer(MontantPrêt montantTotal, MontantEchéance échéance, DuréePrêt durée)
        {
            var taux = 0.5;

            var tauxPrêt      = new TauxNetPrêt(0.5);
            var tauxAssurance = new TauxAssurancePrêt(0.15);

            var prêt = Calculer(montantTotal, durée, tauxPrêt, tauxAssurance);

            if (prêt.Echéance == échéance)
            {
                return(prêt);
            }
            if (prêt.Echéance > échéance)
            {
                do
                {
                    taux     = taux - 0.01;
                    tauxPrêt = new(taux);
                    prêt     = Calculer(montantTotal, durée, tauxPrêt, tauxAssurance);
                } while (prêt.Echéance > échéance);
            }
            else
            {
                do
                {
                    taux     = taux + 0.01;
                    tauxPrêt = new(taux);
                    prêt     = Calculer(montantTotal, durée, tauxPrêt, tauxAssurance);
                } while (prêt.Echéance < échéance);
            }

            return(prêt);
        }
Example #2
0
        public Prêt Calculer(MontantEchéance echéance, DuréePrêt durée,
                             TauxNetPrêt taux, TauxAssurancePrêt assurance)
        {
            var taegMensuel = (taux + assurance).TauxPeriodiqueMensuel();

            var montant = Math.Round(echéance.Valeur * (1 - Math.Pow(1 + taegMensuel.Valeur, -durée.NombreMois)) / taegMensuel.Valeur);

            return(new Prêt(new(montant), echéance, taux, durée, assurance));
        }
        public void Calcul_MontantTotal()
        {
            var mensualité = new MontantEchéance(1011);
            var durée      = new DuréePrêt(180);
            var taux       = new TauxNetPrêt(0.85);
            var assurance  = new TauxAssurancePrêt(0.15);

            var prêt           = new CalculatricePrêt().Calculer(mensualité, durée, taux, assurance);
            var montantAttendu = new MontantPrêt(168924);

            prêt.Montant.Should().Be(montantAttendu);
        }
        public void Calcul_Taux()
        {
            var montant    = new MontantPrêt(169_000);
            var mensualité = new MontantEchéance(1011);
            var durée      = new DuréePrêt(180);

            var prêt        = new CalculatricePrêt().Calculer(montant, mensualité, durée);
            var tauxAttendu = new TauxNetPrêt(0.85);

            var acceptable = prêt.Taux <tauxAttendu * 1.01 && prêt.Taux> tauxAttendu * 0.99;

            acceptable.Should().BeTrue($"taux attendu {tauxAttendu} - taux trouvé {prêt.Taux}");
        }