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}"); } } } }
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); }