public void TestTradeCollectionAddTrades() { // Collection Order Test TradeCollection trades = new TradeCollection(); Trade trade1 = new Trade(new DateTime(2015, 10, 2), 1, TRADE_SIGN.Buy, 100); Trade trade2 = new Trade(new DateTime(2015, 10, 3), 1, TRADE_SIGN.Buy, 100); Trade trade3 = new Trade(new DateTime(2015, 10, 1), 1, TRADE_SIGN.Buy, 100); Trade trade4 = new Trade(new DateTime(2015, 10, 4), 1, TRADE_SIGN.Buy, 100); Trade trade5 = new Trade(new DateTime(2015, 09, 1), 1, TRADE_SIGN.Buy, 100); trades.Add(trade1); trades.Add(trade2); trades.Add(trade3); trades.Add(trade4); trades.Add(trade5); Assert.AreEqual(5, trades.Count); Assert.AreSame(trades.ElementAt(0), trade4); Assert.AreSame(trades.ElementAt(1), trade2); Assert.AreSame(trades.ElementAt(2), trade1); Assert.AreSame(trades.ElementAt(3), trade3); Assert.AreSame(trades.ElementAt(4), trade5); }
/// <summary> /// Method to record a trade /// </summary> private void RecordATrade() { Console.WriteLine("Record a trade related to which Symbol ?"); string symbol = Console.ReadLine(); GenericStock workingStock = null; foreach (GenericStock stock in Stocks) { if (stock.Symbol == symbol.ToUpper()) workingStock = stock; } if(workingStock == null) { Console.WriteLine("Symbol not found!"); return; } Console.WriteLine("Related to which date/time ?"); string stimestamp = Console.ReadLine(); DateTime timestamp = DateTime.Now; if(!DateTime.TryParse(stimestamp, out timestamp)) { Console.WriteLine("Invalid date/time"); return; } Console.WriteLine("B - Buy or S - Sell ?"); string sbs = Console.ReadLine(); TRADE_SIGN sign; if(sbs.ToUpper() == "B") { sign = TRADE_SIGN.Buy; } else if(sbs.ToUpper() == "S") { sign = TRADE_SIGN.Sell; } else { Console.WriteLine("Invalid Operation!"); return; } Console.WriteLine("Quantity ?"); string sqty = Console.ReadLine(); int qty; if (!int.TryParse(sqty, out qty)) { Console.WriteLine("Invalid Quantity!"); return; } Console.WriteLine("Price (in pennies) ?"); string sprice = Console.ReadLine(); float price; if (!float.TryParse(sprice, out price)) { Console.WriteLine("Invalid price!"); return; } Trade trade = new Trade(timestamp, qty, sign, price); PrintTrade(trade); Console.WriteLine("Add to Stock {0} ? (Y to confirm or any other input to cancel)", workingStock.Symbol); string answer = Console.ReadLine(); if(answer.ToUpper() == "Y") { workingStock.Trades.Add(trade); } else { Console.WriteLine("Operation cancelled!"); } }
/// <summary> /// Shows a trade on screen /// </summary> /// <param name="trade"></param> private void PrintTrade(Trade trade) { Console.WriteLine("{0,20:g}\t{1}\t{2}\t{3}", trade.Timestamp, trade.Sign == TRADE_SIGN.Buy ? "Buy" : "Sell", trade.Quantity, trade.TradedPrice); }