public void Apply() { if (!CheckBalance(GetAmount(), _fee)) { return; } lock (_mutex) ApplyImpl(); if (_fee != null) { _account.Balance = _account.Balance - _converter.Convert(_fee, _account.CurrencyInfo); } _account.AddHistory(this); }
public void TestUsdConversion() { CurrencyInfo usd = new CurrencyInfo("USD", "$", "{1}{0}"); CurrencyInfo eur = new CurrencyInfo("EUR", "€", "{1}{0}"); CurrencyExchangeConverter converter = new CurrencyExchangeConverter(usd); converter.AddRatio(eur, 0.75f); Currency currency = CurrencyProvider.GetCurrency(100, eur); Currency convertedCurrency = converter.Convert(currency, usd); Currency expectedCurrency = CurrencyProvider.GetCurrency(100 / 0.75m, usd); Assert.AreEqual(convertedCurrency.GetDecimalValue(), expectedCurrency.GetDecimalValue()); }