public void ComoNumero_DatosCorrectos_TasaBrutaCorrecta() { elResultadoEsperado = 12.0007; losDatos = new DatosParaLaInversionSinTratamiento(); losDatos.ValorFacial = 320000; losDatos.ValorTransadoNeto = 300000; losDatos.TasaDeImpuesto = 0.08; losDatos.FechaActual = new DateTime(2016, 3, 3); losDatos.FechaDeVencimiento = new DateTime(2016, 10, 10); elResultadoObtenido = new TasaBrutaSinTratamiento(losDatos).ComoNumero(); Assert.AreEqual(elResultadoEsperado, elResultadoObtenido, 0.0001); }
public void GenereUnaNuevaInversion_SinTratamientoFiscal_RendimientoPorDescuento() { elResultadoEsperado = 20000; losDatosSin = new DatosParaLaInversionSinTratamiento(); losDatosSin.ValorFacial = 320000; losDatosSin.ValorTransadoNeto = 300000; losDatosSin.TasaDeImpuesto = 0.08; losDatosSin.FechaActual = new DateTime(2016, 3, 3); losDatosSin.FechaDeVencimiento = new DateTime(2016, 10, 10); losDatosSin.tieneTratamientoFiscal = false; losDatosSin.ConsecutivoParaElCodigoDeReferencia = "888888888888"; laInversion = new Inversion(losDatosSin); elResultadoObtenido = laInversion.RendimientoPorDescuento; Assert.AreEqual(elResultadoEsperado, elResultadoObtenido); }
private static DatosParaLaInversion DetermineElTipo(TipoDeInversion elTipoDeInversion) { DatosParaLaInversion losDatos; switch (elTipoDeInversion) { case TipoDeInversion.ConTratamientoFiscal: losDatos = new DatosParaLaInversionConTratamiento(); break; case TipoDeInversion.SinTratamientoFiscal: losDatos = new DatosParaLaInversionSinTratamiento(); break; case TipoDeInversion.Tratamiento360: losDatos = new DatosParaLaInversion360(); break; default: throw new ArgumentException("Error: tipo de inversion invalido."); } return(losDatos); }
public static Inversion GenereLaInversion(double elValorFacial, double elValorTransadoNeto, int elPlazoEnDias, TipoDeInversion elTipoDeInversion) { //VALIDACION DE LOS DATOS if (elValorFacial <= 100000) { throw new ArgumentException("Error: El valor facial es invalido."); } if (elValorTransadoNeto <= 100000) { throw new ArgumentException("Error: El valor transado neto es invalido."); } if (elPlazoEnDias < 1) { throw new ArgumentException("Error: El plazo en dias es invalido."); } //DEPENDENCIAS CON RECURSOS EXTERNOS DateTime laFechaActual = DateTime.Now; double laTasaDeImpuesto = new RepositorioDeParametros().ObtengaLaTasaDeimpuestoVigente(laFechaActual); int elConsecutivo = new RepositorioDeParametros().ObtengaElConsecutivoParaElCodigoDeReferencia(laFechaActual); //ASIGNACION DE LAS PROPIEDADES DatosParaLaInversion losDatos; switch (elTipoDeInversion) { case TipoDeInversion.ConTratamientoFiscal: losDatos = new DatosParaLaInversionConTratamiento(); break; case TipoDeInversion.SinTratamientoFiscal: losDatos = new DatosParaLaInversionSinTratamiento(); break; case TipoDeInversion.Tratamiento360: losDatos = new DatosParaLaInversion360(); break; default: throw new ArgumentException("Error: tipo de inversion invalido."); } //ASIGNACION DE TODOS LOS DATOS PARA LA INVERSION losDatos.ValorFacial = elValorFacial; losDatos.ValorTransadoNeto = elValorTransadoNeto; losDatos.TasaDeImpuesto = laTasaDeImpuesto; losDatos.FechaActual = laFechaActual; DateTime laFechaDeVencimiento = laFechaActual.AddDays(elPlazoEnDias); losDatos.FechaDeVencimiento = laFechaDeVencimiento; string elConsecutivoComoTexto = elConsecutivo.ToString(); losDatos.ConsecutivoParaElCodigoDeReferencia = elConsecutivoComoTexto; return(new Inversion(losDatos)); }