/// <summary> /// Converts a cash amount to the account currency /// </summary> /// <param name="cashAmount">The <see cref="CashAmount"/> instance to convert</param> /// <returns>A new <see cref="CashAmount"/> instance denominated in the account currency</returns> public CashAmount ConvertToAccountCurrency(CashAmount cashAmount) { throw new InvalidOperationException($"This method purposefully throws as a proof that a " + $"test does not depend on {nameof(ICurrencyConverter)}.If this exception is encountered, " + $"it means the test DOES depend on {nameof(ICurrencyConverter)} and should be properly " + $"updated to use a real implementation of {nameof(ICurrencyConverter)}."); }
/// <summary> /// Converts a cash amount to the account currency. /// This implementation can only handle cash amounts in units of the account currency. /// </summary> /// <param name="cashAmount">The <see cref="CashAmount"/> instance to convert</param> /// <returns>A new <see cref="CashAmount"/> instance denominated in the account currency</returns> public CashAmount ConvertToAccountCurrency(CashAmount cashAmount) { if (!string.Equals(cashAmount.Currency, _accountCurrency, StringComparison.InvariantCultureIgnoreCase)) { throw new ArgumentException($"The {nameof(IdentityCurrencyConverter)} can only handle CashAmounts in units of the account currency"); } return(cashAmount); }
/// <summary> /// Converts a cash amount to the account currency /// </summary> /// <param name="cashAmount">The <see cref="CashAmount"/> instance to convert</param> /// <returns>A new <see cref="CashAmount"/> instance denominated in the account currency</returns> public CashAmount ConvertToAccountCurrency(CashAmount cashAmount) { if (cashAmount.Currency == AccountCurrency) { return(cashAmount); } var amount = Convert(cashAmount.Amount, cashAmount.Currency, AccountCurrency); return(new CashAmount(amount, AccountCurrency)); }