diff --git a/VectoCore/VectoCoreTest/Integration/DriverStrategy/DriverStrategyTestCoach.cs b/VectoCore/VectoCoreTest/Integration/DriverStrategy/DriverStrategyTestCoach.cs index 2285f73e081b2229baf3b824fd4e233cf2bf5d27..4181219cc347e36bd634d7aecd1134d0e8440b05 100644 --- a/VectoCore/VectoCoreTest/Integration/DriverStrategy/DriverStrategyTestCoach.cs +++ b/VectoCore/VectoCoreTest/Integration/DriverStrategy/DriverStrategyTestCoach.cs @@ -78,6 +78,7 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy } [Category("ComparisonV2"), + TestCase(0, 20, -5), TestCase(0, 20, 0), TestCase(0, 40, 25), TestCase(0, 40, 20), TestCase(0, 40, 15), TestCase(0, 40, 10), TestCase(0, 40, 5), TestCase(0, 40, 1), TestCase(0, 40, 0), @@ -90,7 +91,7 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy TestCase(0, 60, -15), TestCase(0, 60, -20), TestCase(0, 60, -25), TestCase(0, 85, 25), TestCase(0, 85, 20), TestCase(0, 85, 15), TestCase(0, 85, 10), TestCase(0, 85, 5), TestCase(0, 85, 1), - TestCase(0, 85, 0), + TestCase(0, 85, 0), TestCase(0, 85, 2), TestCase(0, 85, -1), TestCase(0, 85, -5), TestCase(0, 85, -10), TestCase(0, 85, -15), TestCase(0, 85, -20), TestCase(0, 85, -25), TestCase(20, 40, 25), TestCase(20, 40, 20), TestCase(20, 40, 15), @@ -115,9 +116,8 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy var cycle = string.Format(CultureInfo.InvariantCulture, "0, {0}, {1}, {2}\n1000, {3}, {4}, {5}", v1, slope, v1.IsEqual(0) ? 2 : 0, v2, slope, v2.IsEqual(0) ? 2 : 0); - var slopeStr = slope > 0 ? "uhpill" : slope < 0 ? "downhill" : "level"; - var modFileName = string.Format(CultureInfo.InvariantCulture, @"Coach_{0}_{1}_{3}_{2}.vmod", v1, v2, Math.Abs(slope), - slopeStr); + var slopeStr = GetSlopeString(slope); + var modFileName = string.Format(CultureInfo.InvariantCulture, @"Coach_{0}_{1}_{2}.vmod", v1, v2, slopeStr); Coach_Special(cycle, modFileName, string.Format(CultureInfo.InvariantCulture, "24t Coach_Cycle_Accelerate_{0}_{1}_{2}.vmod", v1, v2, slopeStr)); @@ -144,6 +144,9 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy TestCase(40, 20, 0), TestCase(40, 20, -1), TestCase(40, 20, -5), TestCase(40, 20, -10), TestCase(40, 20, -15), TestCase(40, 20, -20), TestCase(40, 20, -25), + TestCase(45, 0, -5), + TestCase(45, 0, 0), + TestCase(45, 0, 5), TestCase(60, 20, 25), TestCase(60, 20, 20), TestCase(60, 20, 15), TestCase(60, 20, 10), TestCase(60, 20, 5), TestCase(60, 20, 1), TestCase(60, 20, 0), @@ -161,9 +164,8 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy var cycle = string.Format(CultureInfo.InvariantCulture, "0, {0}, {1}, {2}\n1000, {3}, {4}, {5}", v1, slope, v1.IsEqual(0) ? 2 : 0, v2, slope, v2.IsEqual(0) ? 2 : 0); - var slopeStr = slope > 0 ? "uhpill" : slope < 0 ? "downhill" : "level"; - var modFileName = string.Format(CultureInfo.InvariantCulture, @"Coach_{0}_{1}_{3}_{2}.vmod", v1, v2, Math.Abs(slope), - slopeStr); + var slopeStr = GetSlopeString(slope); + var modFileName = string.Format(CultureInfo.InvariantCulture, @"Coach_{0}_{1}_{2}.vmod", v1, v2, slopeStr); Coach_Special(cycle, modFileName, string.Format(CultureInfo.InvariantCulture, "24t Coach_Cycle_Decelerate_{0}_{1}_{2}.vmod", v1, v2, slopeStr)); @@ -216,9 +218,8 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy var cycle = string.Format(CultureInfo.InvariantCulture, "0, {0}, {1}, {2}\n1000, {3}, {4}, {5}", v1, slope, v1.IsEqual(0) ? 2 : 0, v2, slope, v2.IsEqual(0) ? 2 : 0); - var slopeStr = slope > 0 ? "uhpill" : slope < 0 ? "downhill" : "level"; - var modFileName = string.Format(CultureInfo.InvariantCulture, @"Coach_{0}_{1}_{3}_{2}.vmod", v1, v2, Math.Abs(slope), - slopeStr); + var slopeStr = GetSlopeString(slope); + var modFileName = string.Format(CultureInfo.InvariantCulture, @"Coach_{0}_{1}_{2}.vmod", v1, v2, slopeStr); Coach_Special(cycle, modFileName, string.Format(CultureInfo.InvariantCulture, "24t Coach_Cycle_Drive_{0}_{1}_{2}.vmod", v1, v2, slopeStr)); @@ -227,17 +228,17 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy [Category("ComparisonV2"), TestCase(0, 40, 25), TestCase(0, 40, 20), TestCase(0, 40, 15), TestCase(0, 40, 10), TestCase(0, 40, 5), TestCase(0, 40, 1), - TestCase(0, 40, 0), + TestCase(0, 40, 0), TestCase(0, 40, -3), TestCase(0, 40, -1), TestCase(0, 40, -5), TestCase(0, 40, -10), TestCase(0, 40, -15), TestCase(0, 40, -20), TestCase(0, 40, -25), TestCase(0, 60, 25), TestCase(0, 60, 20), TestCase(0, 60, 15), TestCase(0, 60, 10), TestCase(0, 60, 5), TestCase(0, 60, 1), - TestCase(0, 60, 0), + TestCase(0, 60, 0), TestCase(0, 60, -3), TestCase(0, 60, -1), TestCase(0, 60, -5), TestCase(0, 60, -10), TestCase(0, 60, -15), TestCase(0, 60, -20), TestCase(0, 60, -25), TestCase(0, 85, 25), TestCase(0, 85, 20), TestCase(0, 85, 15), TestCase(0, 85, 10), TestCase(0, 85, 5), TestCase(0, 85, 1), - TestCase(0, 85, 0), + TestCase(0, 85, 0), TestCase(0, 85, -3), TestCase(0, 85, -1), TestCase(0, 85, -5), TestCase(0, 85, -10), TestCase(0, 85, -15), TestCase(0, 85, -20), TestCase(0, 85, -25), TestCase(20, 40, 25), TestCase(20, 40, 20), TestCase(20, 40, 15), @@ -262,9 +263,8 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy var cycle = string.Format(CultureInfo.InvariantCulture, "0, {0}, {1}, {2}\n1000, {3}, {4}, {5}", v1, slope, v1.IsEqual(0) ? 2 : 0, v2, slope, v2.IsEqual(0) ? 2 : 0); - var slopeStr = slope > 0 ? "uhpill" : slope < 0 ? "downhill" : "level"; - var modFileName = string.Format(CultureInfo.InvariantCulture, @"Coach_{0}_{1}_{3}_{2}.vmod", v1, v2, Math.Abs(slope), - slopeStr); + var slopeStr = GetSlopeString(slope); + var modFileName = string.Format(CultureInfo.InvariantCulture, @"Coach_{0}_{1}_{2}.vmod", v1, v2, slopeStr); Coach_Special_Overspeed(cycle, modFileName, string.Format(CultureInfo.InvariantCulture, "24t Coach_Cycle_Accelerate_{0}_{1}_{2}.vmod", v1, v2, slopeStr)); @@ -308,14 +308,23 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy var cycle = string.Format(CultureInfo.InvariantCulture, "0, {0}, {1}, {2}\n1000, {3}, {4}, {5}", v1, slope, v1.IsEqual(0) ? 2 : 0, v2, slope, v2.IsEqual(0) ? 2 : 0); - var slopeStr = slope > 0 ? "uhpill" : slope < 0 ? "downhill" : "level"; - var modFileName = string.Format(CultureInfo.InvariantCulture, @"Coach_{0}_{1}_{3}_{2}.vmod", v1, v2, Math.Abs(slope), - slopeStr); + var slopeStr = GetSlopeString(slope); + var modFileName = string.Format(CultureInfo.InvariantCulture, @"Coach_{0}_{1}_{2}.vmod", v1, v2, slopeStr); Coach_Special_Overspeed(cycle, modFileName, string.Format(CultureInfo.InvariantCulture, "24t Coach_Cycle_Decelerate_{0}_{1}_{2}.vmod", v1, v2, slopeStr)); } + private static string GetSlopeString(double slope) + { + var slopeStr = slope > 0 + ? Math.Abs(slope).ToString("uphill_#") + : slope < 0 + ? Math.Abs(slope).ToString("downhill_#") + : "level"; + return slopeStr; + } + [Category("ComparisonV2"), TestCase(10, 10, 25), TestCase(10, 10, 20), TestCase(10, 10, 15), TestCase(10, 10, 10), TestCase(10, 10, 5), TestCase(10, 10, 1), @@ -363,9 +372,8 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy var cycle = string.Format(CultureInfo.InvariantCulture, "0, {0}, {1}, {2}\n1000, {3}, {4}, {5}", v1, slope, v1.IsEqual(0) ? 2 : 0, v2, slope, v2.IsEqual(0) ? 2 : 0); - var slopeStr = slope > 0 ? "uhpill" : slope < 0 ? "downhill" : "level"; - var modFileName = string.Format(CultureInfo.InvariantCulture, @"Coach_{0}_{1}_{3}_{2}.vmod", v1, v2, Math.Abs(slope), - slopeStr); + var slopeStr = GetSlopeString(slope); + var modFileName = string.Format(CultureInfo.InvariantCulture, @"Coach_{0}_{1}_{2}.vmod", v1, v2, slopeStr); Coach_Special_Overspeed(cycle, modFileName, string.Format(CultureInfo.InvariantCulture, "24t Coach_Cycle_Drive_{0}_{1}_{2}.vmod", v1, v2, slopeStr)); diff --git a/VectoCore/VectoCoreTest/Integration/DriverStrategy/DriverStrategyTestTruck.cs b/VectoCore/VectoCoreTest/Integration/DriverStrategy/DriverStrategyTestTruck.cs index ac5a67786c95c2c558b93110d82d7191d9d840d7..487bdd2867bfa4ee8ab47616ddf37d07f7b57b65 100644 --- a/VectoCore/VectoCoreTest/Integration/DriverStrategy/DriverStrategyTestTruck.cs +++ b/VectoCore/VectoCoreTest/Integration/DriverStrategy/DriverStrategyTestTruck.cs @@ -78,6 +78,7 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy } [Category("ComparisonV2"), + TestCase(0, 20, -5), TestCase(0, 20, 0), TestCase(0, 40, 25), TestCase(0, 40, 20), TestCase(0, 40, 15), TestCase(0, 40, 10), TestCase(0, 40, 5), TestCase(0, 40, 1), TestCase(0, 40, 0), @@ -90,7 +91,7 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy TestCase(0, 60, -15), TestCase(0, 60, -20), TestCase(0, 60, -25), TestCase(0, 85, 25), TestCase(0, 85, 20), TestCase(0, 85, 15), TestCase(0, 85, 10), TestCase(0, 85, 5), TestCase(0, 85, 1), - TestCase(0, 85, 0), + TestCase(0, 85, 0), TestCase(0, 85, 2), TestCase(0, 85, -1), TestCase(0, 85, -5), TestCase(0, 85, -10), TestCase(0, 85, -15), TestCase(0, 85, -20), TestCase(0, 85, -25), TestCase(20, 40, 25), TestCase(20, 40, 20), TestCase(20, 40, 15), @@ -144,6 +145,9 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy TestCase(40, 20, 0), TestCase(40, 20, -1), TestCase(40, 20, -5), TestCase(40, 20, -10), TestCase(40, 20, -15), TestCase(40, 20, -20), TestCase(40, 20, -25), + TestCase(45, 0, -5), + TestCase(45, 0, 0), + TestCase(45, 0, 5), TestCase(60, 20, 25), TestCase(60, 20, 20), TestCase(60, 20, 15), TestCase(60, 20, 10), TestCase(60, 20, 5), TestCase(60, 20, 1), TestCase(60, 20, 0), @@ -227,17 +231,17 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy [Category("ComparisonV2"), TestCase(0, 40, 25), TestCase(0, 40, 20), TestCase(0, 40, 15), TestCase(0, 40, 10), TestCase(0, 40, 5), TestCase(0, 40, 1), - TestCase(0, 40, 0), + TestCase(0, 40, 0), TestCase(0, 40, -3), TestCase(0, 40, -1), TestCase(0, 40, -5), TestCase(0, 40, -10), TestCase(0, 40, -15), TestCase(0, 40, -20), TestCase(0, 40, -25), TestCase(0, 60, 25), TestCase(0, 60, 20), TestCase(0, 60, 15), TestCase(0, 60, 10), TestCase(0, 60, 5), TestCase(0, 60, 1), - TestCase(0, 60, 0), + TestCase(0, 60, 0), TestCase(0, 60, -3), TestCase(0, 60, -1), TestCase(0, 60, -5), TestCase(0, 60, -10), TestCase(0, 60, -15), TestCase(0, 60, -20), TestCase(0, 60, -25), TestCase(0, 85, 25), TestCase(0, 85, 20), TestCase(0, 85, 15), TestCase(0, 85, 10), TestCase(0, 85, 5), TestCase(0, 85, 1), - TestCase(0, 85, 0), + TestCase(0, 85, 0), TestCase(0, 85, -3), TestCase(0, 85, -1), TestCase(0, 85, -5), TestCase(0, 85, -10), TestCase(0, 85, -15), TestCase(0, 85, -20), TestCase(0, 85, -25), TestCase(20, 40, 25), TestCase(20, 40, 20), TestCase(20, 40, 15), diff --git a/VectoCore/VectoCoreTest/Utils/GraphWriter.cs b/VectoCore/VectoCoreTest/Utils/GraphWriter.cs index 7a9dad5aae87405bb21bb0d48f41e684db363d0c..fa610c1c2c1fa75adc6a90cdc4081f2cb156d7e5 100644 --- a/VectoCore/VectoCoreTest/Utils/GraphWriter.cs +++ b/VectoCore/VectoCoreTest/Utils/GraphWriter.cs @@ -41,6 +41,8 @@ using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.Models.Simulation.Data; using TUGraz.VectoCore.Utils; +// ReSharper disable UnusedVariable + namespace TUGraz.VectoCore.Tests.Utils { public static class GraphWriter @@ -86,11 +88,10 @@ namespace TUGraz.VectoCore.Tests.Utils //return; } DataTable modDataV22 = null; - if (fileNameV22 != null) { + if (!string.IsNullOrWhiteSpace(fileNameV22) && File.Exists(fileNameV22)) modDataV22 = VectoCSVFile.Read(fileNameV22); - } - var titleHeight = (50 * 100.0f) / (_diagramSize.Height * Yfields.Count()); + var titleHeight = (50 * 100.0f) / (_diagramSize.Height * Yfields.Length); foreach (var xfield in Xfields) { var fileName = string.Format("{0}_{1}.png", Path.GetFileNameWithoutExtension(fileNameV3), @@ -101,7 +102,7 @@ namespace TUGraz.VectoCore.Tests.Utils if (fileNameV22 != null && modDataV22 != null) { x2 = LoadData(modDataV22, xfield.GetName()); } - var plotSize = new Size(_diagramSize.Width, _diagramSize.Height * Yfields.Count()); + var plotSize = new Size(_diagramSize.Width, _diagramSize.Height * Yfields.Length); var maxX = (int)(Math.Ceiling(Math.Max(x.Max(), x2.Max()) * 1.01 / 10.0) * 10.0); var minX = (int)(Math.Floor(Math.Max(x.Min(), x2.Min()) / 10.0) * 10.0); var chart = new Chart { Size = plotSize }; @@ -177,7 +178,7 @@ namespace TUGraz.VectoCore.Tests.Utils y2); } - PositionChartArea(chartArea, titleHeight, i, Yfields.Count()); + PositionChartArea(chartArea, titleHeight, i, Yfields.Length); if (i > 0) { AlignChart(chart, yfield.ToString(), Yfields[0].ToString()); @@ -220,7 +221,7 @@ namespace TUGraz.VectoCore.Tests.Utils // RowFilter = string.Format(@"dist > {0} AND dist < {1}", start, end) //}; //var modDataV3 = modDataV3View.ToTable(); - var modDataV3tmp = modDataV3Iput.AsEnumerable().Where(row => { + var modDataV3Tmp = modDataV3Iput.AsEnumerable().Where(row => { var s = row.ParseDouble("dist"); return s >= start && s <= end; }); @@ -236,20 +237,20 @@ namespace TUGraz.VectoCore.Tests.Utils //var modDataV22View = new DataView(modDataV22Input) { // RowFilter = string.Format(@"dist > {0} AND dist < {1}", start, end) //}; - var modDataV22tmp = modDataV22Input.AsEnumerable().Where(row => { + var modDataV22Tmp = modDataV22Input.AsEnumerable().Where(row => { var s = row.ParseDouble("dist"); return s >= start && s <= end; }); - if (!(modDataV3tmp.Any() || modDataV22tmp.Any())) { + if (!(modDataV3Tmp.Any() || modDataV22Tmp.Any())) { return false; } - modDataV22 = modDataV22tmp.CopyToDataTable(); + modDataV22 = modDataV22Tmp.CopyToDataTable(); } else { - if (!modDataV3tmp.Any()) { + if (!modDataV3Tmp.Any()) { return false; } } - var modDataV3 = modDataV3tmp.CopyToDataTable(); + var modDataV3 = modDataV3Tmp.CopyToDataTable(); //var xfields = new[] { ModalResultField.dist }; var xfield = ModalResultField.dist; @@ -258,18 +259,18 @@ namespace TUGraz.VectoCore.Tests.Utils ModalResultField.P_eng_out, ModalResultField.T_eng_fcmap, ModalResultField.FCMap }; - var titleHeight = (50 * 100.0f) / (_diagramSize.Height * yfields.Count()); + var titleHeight = (50 * 100.0f) / (_diagramSize.Height * yfields.Length); //foreach (var xfield in xfields) { var fileName = string.Format("{0}_{1}-{2:D3}_{3:D3}.png", Path.GetFileNameWithoutExtension(fileNameV3), xfield.GetName(), (int)(start / 1000), (int)(end / 1000)); var x = LoadData(modDataV3, xfield.GetName()); - var x2 = new double[] { double.NegativeInfinity }; + var x2 = new[] { double.NegativeInfinity }; if (fileNameV22 != null && modDataV22 != null) { x2 = LoadData(modDataV22, xfield.GetName()); } - var plotSize = new Size(_diagramSize.Width, _diagramSize.Height * yfields.Count()); + var plotSize = new Size(_diagramSize.Width, _diagramSize.Height * yfields.Length); var maxX = (int)(Math.Ceiling(Math.Max(x.Max(), x2.Max()) * 1.01 / 10.0) * 10.0); var minX = (int)(Math.Floor(Math.Max(x.Min(), x2.Min()) / 10.0) * 10.0); var chart = new Chart { Size = plotSize }; @@ -315,7 +316,7 @@ namespace TUGraz.VectoCore.Tests.Utils Color.Red, x2, y2); } - PositionChartArea(chartArea, titleHeight, i, yfields.Count()); + PositionChartArea(chartArea, titleHeight, i, yfields.Length); if (i > 0) { AlignChart(chart, yfield.ToString(), yfields[0].ToString()); @@ -332,11 +333,12 @@ namespace TUGraz.VectoCore.Tests.Utils private static void AddTitle(Chart chart, string titleText, string dockToChartArea) { - var title = new Title(); - title.Text = titleText; - title.DockedToChartArea = dockToChartArea; - title.IsDockedInsideChartArea = false; - title.Font = new Font("Verdana", 18, FontStyle.Bold); + var title = new Title { + Text = titleText, + DockedToChartArea = dockToChartArea, + IsDockedInsideChartArea = false, + Font = new Font("Verdana", 18, FontStyle.Bold) + }; chart.Titles.Add(title); } @@ -410,7 +412,7 @@ namespace TUGraz.VectoCore.Tests.Utils private static Legend CreateLegend(Chart chart, string dockToChartArea) { - var legend = new Legend(dockToChartArea.ToString()) { + var legend = new Legend(dockToChartArea) { Docking = Docking.Right, IsDockedInsideChartArea = false, DockedToChartArea = dockToChartArea,