diff --git a/CsvLib.Tests/CsvFieldIndexerTests.cs b/CsvLib.Tests/CsvFieldIndexerTests.cs index 3a8a48e..b647e0e 100644 --- a/CsvLib.Tests/CsvFieldIndexerTests.cs +++ b/CsvLib.Tests/CsvFieldIndexerTests.cs @@ -4,42 +4,43 @@ namespace CvsLib; public class CsvFieldIndexerTests { + #region GenerateIndex - + [Fact] public void GenerateIndex__Empty() { // --- Arrange StringReader sr = new(string.Empty); - + // --- Act CsvFieldIndexer indexer = new(); indexer.GenerateIndex(sr); - + // --- Assert - + Assert.Single(indexer.Index); - + Assert.Equal(0, indexer.Index[0]); Assert.Empty(indexer.FieldIndex); } - + [Fact] public void GenerateIndex__PlainText__OneRow() { // --- Arrange StringReader sr = new("Hello World"); - + // --- Act CsvFieldIndexer indexer = new(); indexer.GenerateIndex(sr); - + // --- Assert - + Assert.Equal(2, indexer.Index.Count); Assert.Equal(0, indexer.Index[0]); Assert.Equal(12, indexer.Index[1]); - + Assert.Single(indexer.FieldIndex); Assert.Equal(0, indexer.FieldIndex[0][0]); Assert.Equal(10, indexer.FieldIndex[0][1]); @@ -50,21 +51,21 @@ public class CsvFieldIndexerTests { // --- Arrange StringReader sr = new(""" - Hello World - Hello World - """); - + Hello World + Hello World + """); + // --- Act CsvFieldIndexer indexer = new(); indexer.GenerateIndex(sr); - + // --- Assert - + Assert.Equal(3, indexer.Index.Count); Assert.Equal(0, indexer.Index[0]); Assert.Equal(12, indexer.Index[1]); Assert.Equal(24, indexer.Index[2]); - + Assert.Equal(2, indexer.FieldIndex.Count); Assert.Equal(2, indexer.FieldIndex[0].Count); Assert.Equal(0, indexer.FieldIndex[0][0]); @@ -79,21 +80,21 @@ public class CsvFieldIndexerTests { // --- Arrange StringReader sr = new(""" - "Hello World" - "Hello World" - """); - + "Hello World" + "Hello World" + """); + // --- Act CsvFieldIndexer indexer = new(); indexer.GenerateIndex(sr); - + // --- Assert - + Assert.Equal(3, indexer.Index.Count); Assert.Equal(0, indexer.Index[0]); Assert.Equal(14, indexer.Index[1]); Assert.Equal(28, indexer.Index[2]); - + Assert.Equal(2, indexer.FieldIndex.Count); Assert.Equal(2, indexer.FieldIndex[0].Count); Assert.Equal(1, indexer.FieldIndex[0][0]); @@ -108,21 +109,21 @@ public class CsvFieldIndexerTests { // --- Arrange StringReader sr = new(""" - "Hello","World" - "Hello","World" - """); - + "Hello","World" + "Hello","World" + """); + // --- Act CsvFieldIndexer indexer = new(); indexer.GenerateIndex(sr); - + // --- Assert - + Assert.Equal(3, indexer.Index.Count); Assert.Equal(0, indexer.Index[0]); Assert.Equal(16, indexer.Index[1]); Assert.Equal(32, indexer.Index[2]); - + Assert.Equal(2, indexer.FieldIndex.Count); Assert.Equal(4, indexer.FieldIndex[0].Count); Assert.Equal(1, indexer.FieldIndex[0][0]); @@ -136,7 +137,6 @@ public class CsvFieldIndexerTests Assert.Equal(29, indexer.FieldIndex[1][3]); } - - #endregion GenerateIndex -} \ No newline at end of file + +} diff --git a/CsvLib/CsvFieldIndexer.cs b/CsvLib/CsvFieldIndexer.cs index dbd1f8b..a2c5d1f 100644 --- a/CsvLib/CsvFieldIndexer.cs +++ b/CsvLib/CsvFieldIndexer.cs @@ -25,7 +25,7 @@ namespace CsvLib public List Index { get { return _index; } } private List> _fieldIndex = new List>(); - + public List> FieldIndex { get { return _fieldIndex; } } private void DummyParser(string line) @@ -50,7 +50,6 @@ namespace CsvLib if (c == _escapeChar && _insideString) { i++; - c = line[i]; } } } @@ -84,7 +83,6 @@ namespace CsvLib else if (c == _escapeChar && _insideString) { i++; - c = line[i]; } else if ((c == '\n' || c == '\r') && _insideString == false) { @@ -116,7 +114,7 @@ namespace CsvLib GenerateIndex(streamReader); } } - + public void GenerateIndex(TextReader textReader) { _insideString = false; @@ -130,14 +128,14 @@ namespace CsvLib { DummyParser(currentLine); if (_insideString) { continue; } - + string fullLine = reader.GetBuffer(); reader.CleanBuffer(); List fieldIndexes = ParseLineIndex(fullLine, _index[idxRow]); _fieldIndex.Add(fieldIndexes); - + _index.Add(reader.Position); - + idxRow++; } } @@ -193,7 +191,7 @@ namespace CsvLib DateTime dtNow = DateTime.UtcNow; GenerateIndex(file); TimeSpan tsGenIndex = DateTime.UtcNow - dtNow; - + // Save Index if expensive generation if (tsGenIndex.TotalSeconds > 2) { diff --git a/CsvLib/CsvIndexer.cs b/CsvLib/CsvIndexer.cs index 7c1de3d..1651aa2 100644 --- a/CsvLib/CsvIndexer.cs +++ b/CsvLib/CsvIndexer.cs @@ -46,7 +46,6 @@ namespace CsvLib if (c == _escapeChar && _insideString) { i++; - c = line[i]; } } } @@ -125,7 +124,7 @@ namespace CsvLib DateTime dtNow = DateTime.UtcNow; GenerateIndex(file); TimeSpan tsGenIndex = DateTime.UtcNow - dtNow; - + // Save Index if expensive generation if (tsGenIndex.TotalSeconds > 2) { diff --git a/CsvLib/CsvParser.cs b/CsvLib/CsvParser.cs index b45563b..68edfa6 100644 --- a/CsvLib/CsvParser.cs +++ b/CsvLib/CsvParser.cs @@ -104,6 +104,6 @@ namespace CsvLib } stream.Close(); } - + } } diff --git a/CsvView/App.axaml.cs b/CsvView/App.axaml.cs index 585757c..cb309aa 100644 --- a/CsvView/App.axaml.cs +++ b/CsvView/App.axaml.cs @@ -4,7 +4,7 @@ using Avalonia.Markup.Xaml; namespace CsvView; -public partial class App : Application +public class App : Application { public override void Initialize() { diff --git a/CsvView/MainWindow.axaml.cs b/CsvView/MainWindow.axaml.cs index 99eeb5f..caea900 100644 --- a/CsvView/MainWindow.axaml.cs +++ b/CsvView/MainWindow.axaml.cs @@ -5,6 +5,8 @@ using Avalonia.Interactivity; using Avalonia.Platform.Storage; using CsvLib; +// ReSharper disable UnusedParameter.Local + namespace CsvView; public partial class MainWindow : Window