Prepare for partial CurveData parsing
This commit is contained in:
@@ -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<Stats>();
|
||||
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<CurveData> curves;
|
||||
try
|
||||
{
|
||||
curves = CurveDataConverter.Convert(leafGasComparisons);
|
||||
stats.CurveDataCount = curves.Count();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
stats.FailureLocation = "CurveDataConverter";
|
||||
stats.Exception = e;
|
||||
return stats;
|
||||
}
|
||||
|
||||
return stats;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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<ParseException>(() => CurveDataConverter.Convert(leafGasComparisons).ToArray());
|
||||
//var h = CurveDataConverter.Convert(leafGasComparisons).ToArray();
|
||||
|
||||
Assert.Throws<ParseException>(() => CurveDataConverter.Convert(leafGasComparisons).ToArray());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -52,6 +52,7 @@
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Charter\ChartInputTests.cs" />
|
||||
<Compile Include="Charter\CurveDataConverterTests.cs" />
|
||||
<Compile Include="Parsers\LeafGasComparisonParserTests.cs" />
|
||||
<Compile Include="Parsers\FluxnetSiteCsvParserTests.cs" />
|
||||
@@ -99,13 +100,13 @@
|
||||
<Content Include="Parsers\LeafOutputData\leafgascomparison.csv">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Parsers\LeafOutputData\Sample4_leafgascomparison.csv">
|
||||
<Content Include="Parsers\LeafOutputData\leafgascomparison_PartialCurveData.csv">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Parsers\LeafOutputData\multiple_leafgascomparison.csv">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Parsers\LeafOutputData\Papaya_leafgascomparison.csv">
|
||||
<Content Include="Parsers\LeafOutputData\leafgascomparison_NoCurveData.csv">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<None Include="Parsers\LeafOutputData\leafgascomparison_extragroups.csv" />
|
||||
|
||||
|
Can't render this file because it is too large.
|
@@ -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))
|
||||
|
||||
@@ -1 +1 @@
|
||||
C:\Users\poprhythm\AppData\Local\Temp\Temporary ASP.NET Files\vs\f80e29bb\faae20bf\App_Web_all.generated.cs.8f9494c4.v5ghxtap.dll
|
||||
C:\Users\poprhythm\AppData\Local\Temp\Temporary ASP.NET Files\vs\f80e29bb\faae20bf\App_Web_all.generated.cs.8f9494c4.wqlgo3gh.dll
|
||||
Reference in New Issue
Block a user