示例#1
0
        public void Check_for_brocken_line(string path)
        {
            var breaks     = new List <string[]>();
            var bufferSize = 65 * 1024 * 1024;

            var parser   = new TestLineParser();
            var comparer = new TestLineComparer();

            using (var fs =
                       new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite, bufferSize, true))
                using (var sr = new StreamReader(fs))
                {
                    while (!sr.EndOfStream)
                    {
                        var data = sr.ReadLine();

                        var line = parser.Parse(data);

                        if (line.String == null)
                        {
                            throw new Exception($"Found broken line in {path}: {data}");
                        }
                    }
                }
        }
示例#2
0
        public void Check_sorting(string path)
        {
            var unsorted   = new List <string[]>();
            var bufferSize = 65 * 1024 * 1024;

            var parser   = new TestLineParser();
            var comparer = new TestLineComparer();

            long lineNumber = 1;

            using (var fs =
                       new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite, bufferSize, true))
                using (var sr = new StreamReader(fs))
                {
                    var line0 = new GroupedItem <TestLine> {
                        Item = parser.Parse(sr.ReadLine())
                    };

                    while (sr.Peek() > -1)
                    {
                        lineNumber++;

                        var line1 = new GroupedItem <TestLine> {
                            Item = parser.Parse(sr.ReadLine())
                        };

                        if (comparer.Compare(line0, line1) > 0)
                        {
                            unsorted.Add(new[] { parser.Unparse(line0.Item), parser.Unparse(line1.Item) });

                            if (unsorted.Count > 9)
                            {
                                break;
                            }
                        }

                        if (sr.Peek() > -1)
                        {
                            line0 = new GroupedItem <TestLine> {
                                Item = parser.Parse(sr.ReadLine())
                            }
                        }
                        ;
                    }
                }

            Assert.Empty(unsorted);
        }