public void Transferir(decimal cantidad, Cuenta aCuenta) { // <pex> if (aCuenta == (Cuenta)null) throw new ArgumentNullException("aCuenta"); // </pex> if (cantidad > Saldo) { throw new InvalidOperationException("No tiene saldo suficiente."); } var ratio = conversorMoneda.RatioConversion(Moneda, aCuenta.Moneda); Saldo -= cantidad; aCuenta.Saldo += cantidad * ratio; var mensaje = string.Format( "C {0} ({1}) -{4} | C {2} ({3}) +{5} | Ratio Conversión: {6}", NumeroCuenta, Moneda, aCuenta.NumeroCuenta, aCuenta.Moneda, cantidad, cantidad * ratio, ratio); EventManager.Current.Publish(mensaje); logger.Log(mensaje); }
public void TransferirTest() { var ratio = 1.25M; var conversor = new Mock<IConversorMoneda>(); conversor .Setup(x => x.RatioConversion(It.IsAny<Moneda>(), It.IsAny<Moneda>())) .Returns(ratio); var logger = new Mock<ILoger>(); FactoriaConversion.SetConversor(conversor.Object); FactoriaLogger.SetLogger(logger.Object); int numeroCuenta = 1; Moneda moneda = Moneda.Euro; Decimal saldo = 100M; Cuenta target = new Cuenta(numeroCuenta, moneda, saldo); Decimal cantidad = 50; int numeroCuenta2 = 2; Moneda moneda2 = Moneda.Dolar; Decimal saldo2 = 100M; Cuenta aCuenta = new Cuenta(numeroCuenta2, moneda2, saldo2); target.Transferir(cantidad, aCuenta); Assert.AreEqual(saldo - cantidad, target.Saldo); Assert.AreEqual(saldo2 + (cantidad * ratio), aCuenta.Saldo); logger.Verify(x => x.Log(It.IsAny<string>()), Times.Never()); }
private static void DumpCuenta(Cuenta cuenta) { Console.WriteLine( "Numero cuenta: {0} ({1}) Saldo: {2}", cuenta.NumeroCuenta, cuenta.Moneda, cuenta.Saldo); }
public bool Add(Cuenta cuenta) { if (this.almacen.ContainsKey(cuenta.NumeroCuenta)) { return false; } this.almacen.Add(cuenta.NumeroCuenta, cuenta); return true; }
public void DadoTengoOtraCuentaDeMonedaEurosYSaldo50() { cuenta2 = new Cuenta(2, Moneda.Euro, 50M); }
public void DadoQueTengoUnaCuentaDeMonedaEurosYSaldo100() { cuenta1 = new Cuenta(1, Moneda.Euro, 100M); }
public void SegundoTest() { var target = new Cuenta(1, Moneda.Euro, 100); Assert.IsNotNull(target); }