Exemplo n.º 1
0
        public void Test_ParseEnum_UnderLyingType_HappyPaths(string input)
        {
            // Arrrage
            InputParser inputParser = new InputParser();
            // Act
            UnderLyingType direction = inputParser.ParseEnum <UnderLyingType>(input);

            // Assert
            Assert.IsInstanceOfType(direction, typeof(UnderLyingType));
        }
Exemplo n.º 2
0
 public string ValidateInputTrade(string inputString)
 {
     string[] data = inputString.Split(' ');
     try
     {
         DirectionType direction = ParseEnum <DirectionType>(data[0]);
     }
     catch (Exception ex)
     {
         return("Invalid direction type: 'Buy' or 'Sell' are valid types");
     }
     try
     {
         int quantity = int.Parse(data[1]);
     }
     catch (Exception ex)
     {
         return("Invalid quantity: enter a valid integer");
     }
     try
     {
         double price = double.Parse(data[2]);
     }
     catch (Exception ex)
     {
         return("Invalid price: enter a valid double");
     }
     try
     {
         UnderLyingType underLying = ParseEnum <UnderLyingType>(data[3]);
     }
     catch (Exception ex)
     {
         return("Invalid underlying type: 'Oil' or 'Gas' are valid types");
     }
     return(string.Empty);
 }
Exemplo n.º 3
0
        private void ProcessPNL()
        {
            var container = new UnityContainer();
            ITradeNetterService tradeNetterService = container.Resolve <TradeNetterService>();
            IInputParser        inputParser        = container.Resolve <InputParser>();

            Console.WriteLine("Please enter each trade in new line in the below format");
            Console.WriteLine("DIRECTION QUANTITY PRICE UNDERLYING");
            Console.WriteLine("Buy 1 100 Oil");
            Console.WriteLine("Sell 1 100 Oil");
            Console.WriteLine("Enter 'PNL' to get netted PNL value");
            Console.WriteLine("====================================================\n");
            try
            {
                int      i           = 0;
                string   inputString = string.Empty;
                string   errorString = string.Empty;
                string[] data;
                bool     inValidInput;
                while (true)
                {
                    do
                    {
                        inValidInput = true;
                        inputString  = Console.ReadLine();
                        data         = inputString.Split(' ');
                        if (data[0].ToUpper().Equals("PNL"))
                        {
                            break;
                        }
                        errorString = inputParser.ValidateInputTrade(inputString);
                        if (!string.IsNullOrEmpty(errorString))
                        {
                            inValidInput = false;
                            Console.WriteLine(errorString);
                        }
                    } while (!inValidInput);
                    if (data[0].ToUpper().Equals("PNL"))
                    {
                        break;
                    }
                    DirectionType  direction  = inputParser.ParseEnum <DirectionType>(data[0]);
                    int            quantity   = int.Parse(data[1]);
                    double         price      = double.Parse(data[2]);
                    UnderLyingType underLying = inputParser.ParseEnum <UnderLyingType>(data[3]);
                    Trade          newTrade   = new Trade()
                    {
                        Direction  = direction,
                        Quantity   = quantity,
                        Price      = price,
                        UnderLying = underLying,
                        TradeID    = i++
                    };
                    tradeNetterService.AddTrade(newTrade);
                }
                Console.WriteLine("Netted PNL = " + tradeNetterService.GetNettedPNL());
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                Console.ReadLine();
            }
        }