static void Main(string[] args) { Console.WriteLine("Hello World!"); IDataProvider dataProvider = new CommonWebFilesReader(); ICurrenciesFactory currencyFactory = new CurrenciesFactory(); IFormattedCurrencyReader XMLReader = new XMLCurrencyRatesReader(currencyFactory, dataProvider); ICurrencyRatesStorage storage = new CurrencyRatesDictionary(XMLReader); ICurrencyConverter currConverter = new CurrenciesConverter(); var curr = storage.GetCurrencyByCode("USD"); Console.WriteLine($"Currency: {curr.Name} Rate: {curr.Rate}"); //var dict = r.RetrieveActualDataAsync(null).Result; //foreach (var d in dict) //{ // Console.WriteLine($"Code: {d.Key} and currency name: {GetCurrName(d.Key)}");//Enum.GetName(typeof(CurrencyCodes), d.Key))} //} //string ratesDataXML = CommonWebFilesReader.ReadFileAsync().Result; //XDocument doc = XDocument.Parse(ratesDataXML); //Console.WriteLine(ratesDataXML.Length); Console.ReadKey(); }
public void HundredRubToUSDConvertingTest() { ICurrencyConverter currConverter = new CurrenciesConverter(); ICurrenciesFactory currenciesFactory = new CurrenciesFactory(); decimal rubRate = 90.0681M; decimal usdRate = 1.2219M; ICurrency rubles = currenciesFactory.GetCurrency(CurrencyConverter.BL.Enums.ECurrencyCodes.RUB.ToString(), rubRate); ICurrency dollars = currenciesFactory.GetCurrency(CurrencyConverter.BL.Enums.ECurrencyCodes.USD.ToString(), usdRate); decimal resultAmountOfDollars = currConverter.Convert(rubles, dollars, 100M); Assert.Equal(1.3566M, decimal.Round(resultAmountOfDollars, 4)); }
public void ConvertToLocal_Always_ReturnsResult( decimal amount, double rate, int nominal, decimal expectedResult) { // arrange var rateMode = new CurrencyRateModel { Nominal = nominal, Rate = rate, }; // act var result = CurrenciesConverter.ConvertToLocal(amount, rateMode); // assert result.Should().Be(expectedResult); }
public void ConvertToLocal_ZeroNominal_ThrowsException() { // arrange var amount = 100; var rateMode = new CurrencyRateModel { Nominal = 0, Rate = 1, }; // act Action action = () => CurrenciesConverter.ConvertToLocal(amount, rateMode); // assert action.Should().Throw <DivideByZeroException>(); }
public void ConvertToLocal_ZeroAmount_ReturnsZero() { // arrange var amount = 0; var rateMode = new CurrencyRateModel { Nominal = 1, Rate = 1, }; // act var result = CurrenciesConverter.ConvertToLocal(amount, rateMode); // assert result.Should().Be(0m); }
public void ConvertToLocal_NegativeRate_ReturnsNegativeResult() { // arrange var amount = 100; var rateMode = new CurrencyRateModel { Nominal = 1, Rate = -100, }; // act var result = CurrenciesConverter.ConvertToLocal(amount, rateMode); // assert result.Should().Be(-10000m); }
public void ConvertToLocal_OneToOne_ReturnsInitialAmount() { // arrange var amount = 100; var rateMode = new CurrencyRateModel { Nominal = 1, Rate = 1 }; // act var result = CurrenciesConverter.ConvertToLocal(amount, rateMode); // assert result.Should().Be(amount); }