public void ExtractExchangeRatesTooLongDataLength()
        {
            List <string> contents = new List <string>()
            {
                "6",
                "AUD;CHF;0.9661",
                "JPY;KRW;13.1151",
                "EUR;CHF;1.2053",
                "AUD;JPY;86.0305",
                "EUR;USD;1.2989",
                "JPY;INR;0.6571",
                "EUR;ROU;79.2900"
            };

            StreamReader streamReader = MockStreamReaderService.MockContentFile(string.Join("\n", contents));

            TargetInvocationException exception = Assert.ThrowsException <TargetInvocationException>(() => _privateType.InvokeStatic("ExtractExchangeRates", streamReader));

            Assert.IsInstanceOfType(exception.InnerException, typeof(DataFormatException));

            List <string> messages = new List <string>()
            {
                "Number of exchange rates = 6",
                "Line n°9 is not empty : EUR;ROU;79.2900"
            };

            Assert.AreEqual(exception.InnerException.Message, string.Join("\n", messages));
        }
        public void ExtractExchangeRatesInvalidFormatCount()
        {
            List <string> contents = new List <string>()
            {
                "INVALID",
                "AUD;CHF;0.9661",
                "JPY;KRW;13.1151",
                "EUR;CHF;1.2053",
                "AUD;JPY;86.0305",
                "EUR;USD;1.2989",
                "JPY;INR;0.6571"
            };

            StreamReader streamReader = MockStreamReaderService.MockContentFile(string.Join("\n", contents));

            TargetInvocationException exception = Assert.ThrowsException <TargetInvocationException>(() => _privateType.InvokeStatic("ExtractExchangeRates", streamReader));

            Assert.IsInstanceOfType(exception.InnerException, typeof(DataFormatException));

            List <string> messages = new List <string>()
            {
                "The number of exchange rates have an invalid format",
                "nbExRates = INVALID",
                "Error : Input string was not in a correct format."
            };

            Assert.AreEqual(exception.InnerException.Message, string.Join("\n", messages));
        }
        public void ExtractExchangeRatesEmpty()
        {
            StreamReader streamReader = MockStreamReaderService.MockContentFile("");

            TargetInvocationException exception = Assert.ThrowsException <TargetInvocationException>(() => _privateType.InvokeStatic("ExtractExchangeRates", streamReader));

            Assert.IsInstanceOfType(exception.InnerException, typeof(DataFormatException));
            Assert.AreEqual(exception.InnerException.Message, "Second line is empty");
        }
        public void ExtractDataToConvertTrim()
        {
            StreamReader streamReader = MockStreamReaderService.MockContentFile(" EUR   ;550   ; JPY ");

            DataToConvert dataToConvert = (DataToConvert)_privateType.InvokeStatic("ExtractDataToConvert", streamReader);

            Assert.AreEqual(dataToConvert.D1, "EUR");
            Assert.AreEqual(dataToConvert.M, (uint)550);
            Assert.AreEqual(dataToConvert.D2, "JPY");
        }
        public void ExtractExchangeRatesTrim()
        {
            List <string> contents = new List <string>()
            {
                "  6  ",
                "AUD;CHF;0.9661",
                "JPY;KRW;13.1151",
                "EUR;CHF;1.2053",
                "AUD;JPY;86.0305",
                "EUR;USD;1.2989",
                "JPY;INR;0.6571"
            };

            StreamReader streamReader = MockStreamReaderService.MockContentFile(string.Join("\n", contents));

            ExchangeRate[] exchangeRates = (ExchangeRate[])_privateType.InvokeStatic("ExtractExchangeRates", streamReader);

            // AUD;CHF;0.9661

            Assert.AreEqual(exchangeRates[0].DD, "AUD");
            Assert.AreEqual(exchangeRates[0].DA, "CHF");
            Assert.AreEqual(exchangeRates[0].T, (decimal)0.9661);

            // JPY;KRW;13.1151

            Assert.AreEqual(exchangeRates[1].DD, "JPY");
            Assert.AreEqual(exchangeRates[1].DA, "KRW");
            Assert.AreEqual(exchangeRates[1].T, (decimal)13.1151);

            // EUR;CHF;1.2053

            Assert.AreEqual(exchangeRates[2].DD, "EUR");
            Assert.AreEqual(exchangeRates[2].DA, "CHF");
            Assert.AreEqual(exchangeRates[2].T, (decimal)1.2053);

            // AUD;JPY;86.0305

            Assert.AreEqual(exchangeRates[3].DD, "AUD");
            Assert.AreEqual(exchangeRates[3].DA, "JPY");
            Assert.AreEqual(exchangeRates[3].T, (decimal)86.0305);

            // EUR;USD;1.2989

            Assert.AreEqual(exchangeRates[4].DD, "EUR");
            Assert.AreEqual(exchangeRates[4].DA, "USD");
            Assert.AreEqual(exchangeRates[4].T, (decimal)1.2989);

            // JPY;INR;0.6571

            Assert.AreEqual(exchangeRates[5].DD, "JPY");
            Assert.AreEqual(exchangeRates[5].DA, "INR");
            Assert.AreEqual(exchangeRates[5].T, (decimal)0.6571);
        }
        public void ExtractDataToConvertZeroAmount()
        {
            StreamReader streamReader = MockStreamReaderService.MockContentFile("EUR;0;JPY");

            TargetInvocationException exception = Assert.ThrowsException <TargetInvocationException>(() => _privateType.InvokeStatic("ExtractDataToConvert", streamReader));

            Assert.IsInstanceOfType(exception.InnerException, typeof(DataFormatException));

            List <string> messages = new List <string>()
            {
                "The amount to convert (M) is zero",
                "Line = EUR;0;JPY"
            };

            Assert.AreEqual(exception.InnerException.Message, string.Join("\n", messages));
        }
        public void ExtractDataToConvertInvalidFormatAmount()
        {
            StreamReader streamReader = MockStreamReaderService.MockContentFile("EUR;INVALID;JPY");

            TargetInvocationException exception = Assert.ThrowsException <TargetInvocationException>(() => _privateType.InvokeStatic("ExtractDataToConvert", streamReader));

            Assert.IsInstanceOfType(exception.InnerException, typeof(DataFormatException));

            List <string> messages = new List <string>()
            {
                "The amount to convert (M) have an invalid format",
                "M = INVALID",
                "Error : Input string was not in a correct format."
            };

            Assert.AreEqual(exception.InnerException.Message, string.Join("\n", messages));
        }
        public void ExtractDataToConvertNegativeAmount()
        {
            StreamReader streamReader = MockStreamReaderService.MockContentFile("EUR;-1;JPY");

            TargetInvocationException exception = Assert.ThrowsException <TargetInvocationException>(() => _privateType.InvokeStatic("ExtractDataToConvert", streamReader));

            Assert.IsInstanceOfType(exception.InnerException, typeof(DataFormatException));

            List <string> messages = new List <string>()
            {
                "The amount to convert (M) have an invalid format",
                "M = -1",
                "Error : Value was either too large or too small for a UInt32."
            };

            Assert.AreEqual(exception.InnerException.Message, string.Join("\n", messages));
        }
        public void ExtractDataToConvertTooLongD2Length()
        {
            StreamReader streamReader = MockStreamReaderService.MockContentFile("EUR;550;JAPY");

            TargetInvocationException exception = Assert.ThrowsException <TargetInvocationException>(() => _privateType.InvokeStatic("ExtractDataToConvert", streamReader));

            Assert.IsInstanceOfType(exception.InnerException, typeof(DataFormatException));

            List <string> messages = new List <string>()
            {
                "The target currency (D2) have an invalid length",
                "D2 = JAPY",
                "D2 Length = 4"
            };

            Assert.AreEqual(exception.InnerException.Message, string.Join("\n", messages));
        }
Esempio n. 10
0
        public void ExtractDataToConvertTooShortDataLength()
        {
            StreamReader streamReader = MockStreamReaderService.MockContentFile("EUR;550");

            TargetInvocationException exception = Assert.ThrowsException <TargetInvocationException>(() => _privateType.InvokeStatic("ExtractDataToConvert", streamReader));

            Assert.IsInstanceOfType(exception.InnerException, typeof(DataFormatException));

            List <string> messages = new List <string>()
            {
                "First line have an invalid format or an invalid data length",
                "Line = EUR;550",
                "Data Length = 2"
            };

            Assert.AreEqual(exception.InnerException.Message, string.Join("\n", messages));
        }
Esempio n. 11
0
        public void ExtractExchangeRatesZeroCount()
        {
            List <string> contents = new List <string>()
            {
                "0",
                "AUD;CHF;0.9661",
                "JPY;KRW;13.1151",
                "EUR;CHF;1.2053",
                "AUD;JPY;86.0305",
                "EUR;USD;1.2989",
                "JPY;INR;0.6571"
            };

            StreamReader streamReader = MockStreamReaderService.MockContentFile(string.Join("\n", contents));

            TargetInvocationException exception = Assert.ThrowsException <TargetInvocationException>(() => _privateType.InvokeStatic("ExtractExchangeRates", streamReader));

            Assert.IsInstanceOfType(exception.InnerException, typeof(DataFormatException));
            Assert.AreEqual(exception.InnerException.Message, "No exchange rate");
        }