コード例 #1
0
        public void GetBestRateTest()
        {
            var loan       = 1000;
            var marketData = new MarketData()
            {
                Items = new List <MarketDataItem>()
                {
                    new MarketDataItem()
                    {
                        Name      = "test",
                        Rate      = 0.07F,
                        Available = 1000
                    },
                    new MarketDataItem()
                    {
                        Name      = "testX",
                        Rate      = 0.08F,
                        Available = 1000
                    },
                    new MarketDataItem()
                    {
                        Name      = "testY",
                        Rate      = 0.06F,
                        Available = 1000
                    },
                    new MarketDataItem()
                    {
                        Name      = "test2",
                        Rate      = 0.09F,
                        Available = 2000
                    },
                    new MarketDataItem()
                    {
                        Name      = "test3",
                        Rate      = 0.05F,
                        Available = 500
                    },
                }
            };

            var res = EstimatorHelper.GetBestRate(marketData, loan);
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: giuunit/estimator-exercice
        static void Main(string[] args)
        {
            switch (args.Length)
            {
            //no arguments
            case 0:
                Console.WriteLine(Resources.ArgumentsErrorMessage);
                break;

            //one argument: help or error
            case 1:

                if (args[0].ToLowerInvariant() == "help")
                {
                    Console.Write(Resources.HelpMessage);
                }
                else
                {
                    Console.WriteLine(Resources.ArgumentsErrorMessage);
                }

                break;

            //2 arguments, test if format is ok
            case 2:

                var csvFile    = args[0];
                var loanString = args[1];
                int loan;

                //test if loan is correct
                if (!int.TryParse(loanString, out loan))
                {
                    Console.WriteLine(Resources.ErrorLoanNotFloatMessage, loanString);
                }

                //loan rules
                if (loan < 1000 || loan > 15000 || loan % 100 != 0)
                {
                    Console.WriteLine(Resources.ErrorLoanNotCorrectMessage);
                    return;
                }

                //test if path is correct
                if (!File.Exists(csvFile))
                {
                    Console.WriteLine(Resources.ErrorFileNotFoundMessage, csvFile);
                }
                else
                {
                    var marketDataString  = File.ReadAllText(csvFile);
                    var marketDataRequest = StringParser.ToMarketData(marketDataString);

                    if (!marketDataRequest.Result.Items.Any())
                    {
                        Console.WriteLine(Resources.ErrorWrongData);
                        return;
                    }

                    if (marketDataRequest.Warnings.Any())
                    {
                        foreach (var message in marketDataRequest.Warnings)
                        {
                            Console.WriteLine(message);
                        }
                    }

                    var bestRateItem = EstimatorHelper.GetBestRate(marketDataRequest.Result, loan);

                    //noone has enough money
                    if (bestRateItem == null)
                    {
                        Console.WriteLine(Resources.NoOfferMessage);
                    }
                    else
                    {
                        var totalPayment   = MathHelper.GetTotalRepayment(loan, bestRateItem.Rate, NB_MONTHS_REFUND);
                        var monthlyPayment = totalPayment / NB_MONTHS_REFUND;

                        Console.WriteLine(Resources.RequestedAmountMessage, loan);
                        Console.WriteLine(Resources.RateMessage, Math.Round(bestRateItem.Rate * 100, 1));
                        Console.WriteLine(Resources.MonthlyRepaymentMessage, Math.Round(monthlyPayment, 2));
                        Console.WriteLine(Resources.TotalRepaymentMessage, Math.Round(totalPayment, 2));
                    }
                }

                break;

            //more than 2 arguments = error
            default:
                Console.WriteLine(Resources.ArgumentsErrorMessage);
                break;
            }
        }