public static List <Stock> ParseStream(Stream stream, string stockName) { var sb = new StringBuilder(); var stocks = new List <Stock>(1000); var ignoringLine = false; bool endOfFile = false; while (stream.CanRead) { sb.Clear(); while (endOfFile == false) { var readByte = stream.ReadByte(); if (readByte == -1) { endOfFile = true; break; } var character = (char)readByte; if (character == '\r') { continue; } if (character == '\n') { ignoringLine = false; break; } if ((character < '0' || character > '9') && character != '-' && character != '.' && character != ',') { ignoringLine = true; } if (ignoringLine) { continue; } sb.Append(character); } if (endOfFile) { break; } if (sb.Length != 0) { stocks.Add(StockLineParser.ParseLine(sb, stockName)); } } return(stocks); }
public void Should_parse_line() { var expectedStock = new Stock("some stock name", new DateTime(1986, 03, 13), 0.0672M, 0.07533M, 0.0672M, 0.07533M, 1371330506, 0); var line = "1986-03-13,0.0672,0.07533,0.0672,0.07533,1371330506,0"; var sb = new StringBuilder(line); var parsedStock = StockLineParser.ParseLine(sb, "some stock name"); StockTestHelper.AssertEqual(expectedStock, parsedStock); }