コード例 #1
0
        private bool IsValidLogicalConsistency(IEnumerable <string> lines)
        {
            var firstLine  = new LineConversionRequest(lines.First());
            var secondLine = new LineExchangeRateCount(lines.Skip(1).First());
            var otherLines = lines.Skip(2).Select(l => new LineExchangeRate(l));
            var inputFile  = new InputFile(firstLine, secondLine, otherLines);

            /* Check if declared count of 'exchange rate' lines
             * match real count of theses lines */
            var declaredCountMatchRealCount = inputFile.ExchangeRateCount.Count == inputFile.ExchangeRates.Count();

            /* Check if any exchange rate doesn't contain
             * the same value for source and target currency */
            var noEchangeRateContainingSameCurrency = !inputFile.ExchangeRates.Any(er => er.SourceCurrency == er.TargetCurrency);

            /* check that the 'source currency' of the 'conversion request'
             * exists at least once in the exchanges rates */
            var existAtLeastOneSourceCurrencyIntoExchangeRates =
                inputFile.ExchangeRates.Any(er => er.SourceCurrency == inputFile.ConversionRequest.SourceCurrency) ||
                inputFile.ExchangeRates.Any(er => er.TargetCurrency == inputFile.ConversionRequest.SourceCurrency);

            /* check that the 'target currency' of the 'conversion request'
             * exists at least once in the exchanges rates */
            var existAtLeastOneTargetCurrencyIntoExchangeRates =
                inputFile.ExchangeRates.Any(er => er.SourceCurrency == inputFile.ConversionRequest.TargetCurrency) ||
                inputFile.ExchangeRates.Any(er => er.TargetCurrency == inputFile.ConversionRequest.TargetCurrency);

            return(declaredCountMatchRealCount &&
                   noEchangeRateContainingSameCurrency &&
                   existAtLeastOneSourceCurrencyIntoExchangeRates &&
                   existAtLeastOneTargetCurrencyIntoExchangeRates);
        }
コード例 #2
0
        private ConversionRequest ToConversionRequest(IEnumerable <string> lines)
        {
            var crl = new LineConversionRequest(lines.First());

            return(new ConversionRequest(crl.SourceCurrency, crl.TargetCurrency, crl.Amount));
        }