public void Convert_AmountIsZero_ShouldReturnZero() { //Arrange var currencyFrom = new Currency("dkk"); var currencyTo = new Currency("eur"); var moneyExchangeRequest = new MoneyExchangeRequest(currencyFrom, currencyTo, 0); //Act var result = _currencyCalculator.Convert(moneyExchangeRequest); //Assert result.ShouldBe(0); }
public void CreateMoneyExchangeRequest_ValidData_ShouldSucceed(int amount) { //Arrange var currencyFrom = GetValidCurrency(); var currencyTo = GetValidCurrency(); //Act var moneyExchangeRequest = new MoneyExchangeRequest(currencyFrom, currencyTo, amount); //Assert moneyExchangeRequest.CurrencyFrom.Iso.ShouldBe(currencyFrom.Iso); moneyExchangeRequest.CurrencyTo.Iso.ShouldBe(currencyTo.Iso); moneyExchangeRequest.Amount.ShouldBe(amount); }
public void CreateFromUserInput_InputIsValid_ShouldSucceed(string userInput) { //Arrange var splitUserInput = userInput.Split(' '); var expectedCurrencyFrom = splitUserInput[0].Split('/')[0].ToUpperInvariant(); var expectedCurrencyTo = splitUserInput[0].Split('/')[1].ToUpperInvariant(); var expectedAmount = decimal.Parse(splitUserInput[1]); //Act var moneyExchangeRequest = MoneyExchangeRequest.CreateFromUserInput(userInput); //Assert moneyExchangeRequest.CurrencyFrom.Iso.ShouldBe(expectedCurrencyFrom); moneyExchangeRequest.CurrencyTo.Iso.ShouldBe(expectedCurrencyTo); moneyExchangeRequest.Amount.ShouldBe(expectedAmount); }
public decimal Convert(MoneyExchangeRequest moneyExchangeRequest) { if (moneyExchangeRequest is null) { throw new DomainException("MoneyExchangeRequest cannot be null"); } if (moneyExchangeRequest.Amount == 0) { return(0); } var exchangeRate = _xrProvider .GetExchangeRate(moneyExchangeRequest.CurrencyFrom, moneyExchangeRequest.CurrencyTo); var convertedAmount = decimal.Multiply(moneyExchangeRequest.Amount, exchangeRate); return(convertedAmount); }
public void Convert_ShouldSucceed() { //Arrange var currencyFrom = new Currency("dkk"); var currencyTo = new Currency("eur"); var amount = 19.51m; var moneyExchangeRequest = new MoneyExchangeRequest(currencyFrom, currencyTo, amount); var exchangeRate = 2.57m; var expectedResult = decimal.Multiply(amount, exchangeRate); _xrProviderMock.Setup(x => x.GetExchangeRate(currencyFrom, currencyTo)) .Returns(exchangeRate); //Act var result = _currencyCalculator.Convert(moneyExchangeRequest); //Assert result.ShouldBe(expectedResult); }
static void Main(string[] args) { var diContainer = new DIContainer(); var calculator = diContainer.GetService <ICurrencyCalculator>(); string userInput = string.Empty; #if DEBUG Console.WriteLine("Usage: <currencyFrom>/<currencyTo> <amount to exchange>"); userInput = Console.ReadLine(); #else if (!args.Any() || args.Length != 2) { Console.WriteLine("Usage: Exchange <currencyFrom>/<currencyTo> <amount to exchange>"); return; } userInput = $"{args[0]} {args[1]}"; #endif try { var moneyExchangeRequest = MoneyExchangeRequest.CreateFromUserInput(userInput); var convertedAmount = calculator.Convert(moneyExchangeRequest); Console.WriteLine($"{convertedAmount} {moneyExchangeRequest.CurrencyTo.Iso}"); } catch (DomainException ex) { Console.WriteLine(ex.Message); return; } catch (Exception) { Console.WriteLine("Something went wrong."); return; } }
public void CreateFromUserInput_InputIsInvalid_ShouldThrowException(string userInput) { //Act && Assert Should.Throw <DomainException>(() => MoneyExchangeRequest.CreateFromUserInput(userInput)); }