diff --git a/Core.Tests/Charter/ChartInputTests.cs b/Core.Tests/Charter/ChartInputTests.cs new file mode 100644 index 0000000..305f5ca --- /dev/null +++ b/Core.Tests/Charter/ChartInputTests.cs @@ -0,0 +1,127 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using LeafWeb.Core.Charter; +using LeafWeb.Core.Entities; +using LeafWeb.Core.Parsers; +using LeafWeb.Core.Utility; +using NUnit.Framework; + +namespace LeafWeb.Core.Tests.Charter +{ + [TestFixture] + public class ChartInputTests + { + private const string ContentDirectory = @"C:\temp\leafgascomparison\"; + + private struct Stats + { + public FileInfo FileInfo; + public int Lines; + public int LeafGasComparisonCount; + public int CurveDataCount; + public string FailureLocation; + public Exception Exception; + } + + [Test] + public void LeafGasComparison_Stats() + { + var leafgasComparisonFiles = Directory.GetFiles(ContentDirectory); + var stats = new List(); + foreach (var file in leafgasComparisonFiles.OrderBy(f => f))//.Take(10)) + { + //var fileInfo = FileUtility.GetContentFile(ContentDirectory, file); + var fileInfo = new FileInfo(file); + stats.Add(GetStats(fileInfo)); + } + + Console.WriteLine("Filename\tLine Count\tLeafGasComparisonDataCount\tCurveDataCount\tStatus"); + foreach (var stat in stats) + { + string output = stat.FileInfo.Name; + output += $"\t{stat.Lines}"; + output += $"\t{stat.LeafGasComparisonCount}"; + output += $"\t{stat.CurveDataCount}"; + if (string.IsNullOrEmpty(stat.FailureLocation)) + { + output += "\tsuccess"; + } + else + { + output += $"\tfailed at {stat.FailureLocation}: {stat.Exception.Message}"; + } + + Console.WriteLine(output); + } + + foreach (var stat in stats) + { + if (string.IsNullOrEmpty(stat.FailureLocation)) + { + if (stat.CurveDataCount > 0) + { + File.Copy(stat.FileInfo.FullName, @"C:\temp\leafgascomparison\Good\" + stat.FileInfo.Name); + } + else + { + File.Copy(stat.FileInfo.FullName, @"C:\temp\leafgascomparison\NoCurveData\" + stat.FileInfo.Name); + } + } + else + { + if (stat.FailureLocation == "LeafGasComparisonParser") + { + File.Copy(stat.FileInfo.FullName, @"C:\temp\leafgascomparison\CannotParse\" + stat.FileInfo.Name); + } + else if (stat.FailureLocation == "CurveDataConverter") + { + File.Copy(stat.FileInfo.FullName, @"C:\temp\leafgascomparison\PartialCurveData\" + stat.FileInfo.Name); + } + + } + } + } + + private Stats GetStats(FileInfo fileInfo) + { + var stats = new Stats {FileInfo = fileInfo}; + + stats.Lines = File.ReadLines(fileInfo.FullName).Count(); + + LeafGasComparison[] leafGasComparisons; + + try + { + using (var parser = new LeafGasComparisonParser(fileInfo)) + leafGasComparisons = parser.Parse(); + } + catch (Exception e) + { + stats.FailureLocation = "LeafGasComparisonParser"; + stats.Exception = e; + return stats; + } + + stats.LeafGasComparisonCount = leafGasComparisons.Length; + + IEnumerable curves; + try + { + curves = CurveDataConverter.Convert(leafGasComparisons); + stats.CurveDataCount = curves.Count(); + } + catch (Exception e) + { + stats.FailureLocation = "CurveDataConverter"; + stats.Exception = e; + return stats; + } + + return stats; + } + } +} diff --git a/Core.Tests/Charter/CurveDataConverterTests.cs b/Core.Tests/Charter/CurveDataConverterTests.cs index 2f4bde2..4a6ff47 100644 --- a/Core.Tests/Charter/CurveDataConverterTests.cs +++ b/Core.Tests/Charter/CurveDataConverterTests.cs @@ -24,9 +24,9 @@ namespace LeafWeb.Core.Tests.Charter } [Test] - public void Convert_Papaya() + public void Convert_NoCurveData() { - var fileInfo = FileUtility.GetContentFile(ContentDirectory, "Papaya_leafgascomparison.csv"); + var fileInfo = FileUtility.GetContentFile(ContentDirectory, "leafgascomparison_NoCurveData.csv"); LeafGasComparison[] leafGasComparisons; using (var parser = new LeafGasComparisonParser(fileInfo)) leafGasComparisons = parser.Parse(); @@ -38,13 +38,15 @@ namespace LeafWeb.Core.Tests.Charter [Test] public void Convert_ThrowsExpectionWhenNotEnoughDataSets() { - var fileInfo = FileUtility.GetContentFile(ContentDirectory, "Sample4_leafgascomparison.csv"); + var fileInfo = FileUtility.GetContentFile(ContentDirectory, "leafgascomparison_PartialCurveData.csv"); LeafGasComparison[] leafGasComparisons; using (var parser = new LeafGasComparisonParser(fileInfo)) leafGasComparisons = parser.Parse(); - Assert.Throws(() => CurveDataConverter.Convert(leafGasComparisons).ToArray()); + //var h = CurveDataConverter.Convert(leafGasComparisons).ToArray(); + + Assert.Throws(() => CurveDataConverter.Convert(leafGasComparisons).ToArray()); } } } \ No newline at end of file diff --git a/Core.Tests/Core.Tests.csproj b/Core.Tests/Core.Tests.csproj index 8ed7b26..da8d2a6 100644 --- a/Core.Tests/Core.Tests.csproj +++ b/Core.Tests/Core.Tests.csproj @@ -52,6 +52,7 @@ + @@ -99,13 +100,13 @@ PreserveNewest - + PreserveNewest PreserveNewest - + PreserveNewest diff --git a/Core.Tests/Parsers/LeafOutputData/Papaya_leafgascomparison.csv b/Core.Tests/Parsers/LeafOutputData/leafgascomparison_NoCurveData.csv similarity index 100% rename from Core.Tests/Parsers/LeafOutputData/Papaya_leafgascomparison.csv rename to Core.Tests/Parsers/LeafOutputData/leafgascomparison_NoCurveData.csv diff --git a/Core.Tests/Parsers/LeafOutputData/Sample4_leafgascomparison.csv b/Core.Tests/Parsers/LeafOutputData/leafgascomparison_PartialCurveData.csv similarity index 100% rename from Core.Tests/Parsers/LeafOutputData/Sample4_leafgascomparison.csv rename to Core.Tests/Parsers/LeafOutputData/leafgascomparison_PartialCurveData.csv diff --git a/Core/Parsers/LeafGasComparisonParser.cs b/Core/Parsers/LeafGasComparisonParser.cs index c6e06b7..ab59351 100644 --- a/Core/Parsers/LeafGasComparisonParser.cs +++ b/Core/Parsers/LeafGasComparisonParser.cs @@ -72,8 +72,8 @@ namespace LeafWeb.Core.Parsers { var values = GetNextCsvRowValues(); if (CsvReader.IsRecordEmpty()) - //continue; - throw new ParseException($"Encountered empty line while reading fitting info on line {CsvReader.Row}"); + continue; + //throw new ParseException($"Encountered empty line while reading fitting info on line {CsvReader.Row}"); if (values == null) // end of file yield break; if (matcher.IsPropertiesTitlesMatch(values)) diff --git a/WebCms/App_Data/Models/all.dll.path b/WebCms/App_Data/Models/all.dll.path index cc6fe8a..9c800f0 100644 --- a/WebCms/App_Data/Models/all.dll.path +++ b/WebCms/App_Data/Models/all.dll.path @@ -1 +1 @@ -C:\Users\poprhythm\AppData\Local\Temp\Temporary ASP.NET Files\vs\f80e29bb\faae20bf\App_Web_all.generated.cs.8f9494c4.v5ghxtap.dll \ No newline at end of file +C:\Users\poprhythm\AppData\Local\Temp\Temporary ASP.NET Files\vs\f80e29bb\faae20bf\App_Web_all.generated.cs.8f9494c4.wqlgo3gh.dll \ No newline at end of file