Пример #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);
        }
        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);
        }
        public void Should_parse_stock_Decimal()
        {
            var expectedDecimal = 0.0672M;
            var line            = "0.0672,s";
            var sb         = new StringBuilder(line);
            var startIndex = 0;

            var parsedDecimal = StockLineParser.ParseSectionAsDecimal(sb, ref startIndex);

            Assert.Equal(expectedDecimal, parsedDecimal);
        }
        public void Should_parse_stock_Int()
        {
            var expectedLong = 1371330506;
            var line         = "1371330506,a";
            var sb           = new StringBuilder(line);
            var startIndex   = 0;

            var parsedLong = StockLineParser.ParseSectionAsInt(sb, ref startIndex);

            Assert.Equal(expectedLong, parsedLong);
        }
        public void Should_parse_stock_DateTime()
        {
            var expectedDate = new DateTime(1986, 03, 13);
            var line         = "1986-03-13,";
            var sb           = new StringBuilder(line);
            var startIndex   = 0;

            var parsedDate = StockLineParser.ParseSectionAsDateTime(sb, ref startIndex);

            Assert.Equal(expectedDate, parsedDate);
        }