コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }