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)); }
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); }
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(); } }