Example #1
0
        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);
        }