diff --git a/HashingTool/Helper/HashingHelper.cs b/HashingTool/Helper/HashingHelper.cs index a747b2e64d4bc53f648e4efae548d8ea9a35fce8..b9bffa7867358816115723c619b72329a3dda691 100644 --- a/HashingTool/Helper/HashingHelper.cs +++ b/HashingTool/Helper/HashingHelper.cs @@ -56,8 +56,8 @@ namespace HashingTool.Helper } var valid = x.DocumentElement.LocalName == XMLNames.VectoManufacturerReport; if (!valid) { - errorLog.LogError(String.Format("Invalid XML file given ({0}). Expected Manufacturer Report XML ({1})!", - x.DocumentElement.LocalName, XMLNames.VectoManufacturerReport)); + errorLog.LogError($"Invalid XML file given ({x.DocumentElement.LocalName}). " + + $"Expected Manufacturer Report XML ({XMLNames.VectoManufacturerReport})!"); } return valid; } @@ -69,8 +69,8 @@ namespace HashingTool.Helper } var valid = x.DocumentElement != null && x.DocumentElement.LocalName == XMLNames.VectoCustomerReport; if (!valid) { - errorLog.LogError(String.Format("Invalid XML file given ({0}). Expected Customer Report XML ({1})!", - x.DocumentElement.LocalName, XMLNames.VectoCustomerReport)); + errorLog.LogError($"Invalid XML file given ({x.DocumentElement.LocalName}). " + + $"Expected Customer Report XML ({XMLNames.VectoCustomerReport})!"); } return valid; } @@ -83,9 +83,8 @@ namespace HashingTool.Helper var valid = x.DocumentElement.LocalName == XMLNames.VectoInputDeclaration && x.DocumentElement.FirstChild.LocalName == XMLNames.Component_Vehicle; if (!valid) { - errorLog.LogError(String.Format("Invalid XML file given ({0}/{1}). Expected Vehicle XML ({2}/{3})!", - x.DocumentElement.LocalName, x.DocumentElement.FirstChild.LocalName, XMLNames.VectoInputDeclaration, - XMLNames.Component_Vehicle)); + errorLog.LogError($"Invalid XML file given ({x.DocumentElement.LocalName}/{x.DocumentElement.FirstChild.LocalName}). " + + $"Expected Vehicle XML ({XMLNames.VectoInputDeclaration}/{XMLNames.Component_Vehicle})!"); } return valid; } @@ -97,8 +96,8 @@ namespace HashingTool.Helper } if (x.DocumentElement.LocalName != XMLNames.VectoInputDeclaration) { - errorLog.LogError(String.Format("Invalid XML file given ({0}). Expected Component XML ({1})!", - x.DocumentElement.LocalName, XMLNames.VectoInputDeclaration)); + errorLog.LogError($"Invalid XML file given ({x.DocumentElement.LocalName}). " + + $"Expected Component XML ({XMLNames.VectoInputDeclaration})!"); return false; } @@ -110,8 +109,8 @@ namespace HashingTool.Helper }; var valid = components.Where(c => c.XMLElementName() == localName).Any(); if (!valid) { - errorLog.LogError(String.Format("Invalid XML file given ({0}). Expected Component XML ({1})!", - localName, String.Join(", ", components.Select(c => c.XMLElementName())))); + errorLog.LogError($"Invalid XML file given ({localName}). " + + $"Expected Component XML ({String.Join(", ", components.Select(c => c.XMLElementName()))})!"); } return valid; } diff --git a/HashingTool/ViewModel/UserControl/ManufacturerReportXMLFile.cs b/HashingTool/ViewModel/UserControl/ManufacturerReportXMLFile.cs index f0ac778e9b7fc85703e8352988e2b0bac5d0868a..0afd5f209648af4ac094b3b033b462a855255425 100644 --- a/HashingTool/ViewModel/UserControl/ManufacturerReportXMLFile.cs +++ b/HashingTool/ViewModel/UserControl/ManufacturerReportXMLFile.cs @@ -137,16 +137,16 @@ namespace HashingTool.ViewModel.UserControl var digestMismatch = componentData.Where(x => x.DigestValueMatchesJobComponent == null || !x.DigestValueMatchesJobComponent.Value).ToArray(); if (jobComponents.Any()) { foreach (var entry in certificationNumberMismatch) { - _validationErrors.Add( - string.Format( - "Verifying Manufacturer Report: Certification number for component '{0}' does not match! Job-file: '{1}', Report: '{2}'", - entry.Component, entry.CertificationNumberExpected, entry.CertificationNumber)); + _validationErrors.Add("Verifying Manufacturer Report: " + + $"Certification number for component '{entry.Component}' does not match! " + + $"Job-file: '{entry.CertificationNumberExpected}', " + + $"Report: '{entry.CertificationNumber}'"); } foreach (var entry in digestMismatch) { - _validationErrors.Add( - string.Format( - "Verifying Manufacturer Report: Digest Value for component '{0}' does not match! Job-file: '{1}', Report: '{2}'", - entry.Component, entry.DigestValueExpected, entry.DigestValue)); + _validationErrors.Add("Verifying Manufacturer Report: " + + $"Digest Value for component '{entry.Component}' does not match! " + + $"Job-file: '{entry.DigestValueExpected}', " + + $"Report: '{entry.DigestValue}'"); } } diff --git a/HashingTool/ViewModel/UserControl/ReportXMLFile.cs b/HashingTool/ViewModel/UserControl/ReportXMLFile.cs index bf81ff1b85c08b615d1f6f3d881b3d8106ad08c5..3c77576e142890c90f3110acc35561ab3a5a79e4 100644 --- a/HashingTool/ViewModel/UserControl/ReportXMLFile.cs +++ b/HashingTool/ViewModel/UserControl/ReportXMLFile.cs @@ -107,13 +107,15 @@ namespace HashingTool.ViewModel.UserControl var vinMatch = _jobData.VehicleIdentificationNumber == ReportVIN; if (!digestMatch) { - _validationErrors.Add(string.Format("Job Digest Value mismatch! Computed job digest: '{0}', digest read: '{1}'", - _jobDigestComputed, JobDigestValueRead)); + _validationErrors.Add("Job Digest Value mismatch! " + + $"Computed job digest: '{_jobDigestComputed}', " + + $"digest read: '{JobDigestValueRead}'"); } if (!vinMatch) { - _validationErrors.Add(string.Format("VIN mismatch! VIN from job data: '{0}', VIN from report: '{1}'", - _jobData.VehicleIdentificationNumber, ReportVIN)); + _validationErrors.Add("VIN mismatch! " + + $"VIN from job data: '{_jobData.VehicleIdentificationNumber}', " + + $"VIN from report: '{ReportVIN}'"); } JobDigestMatchesReport = vinMatch diff --git a/HashingTool/ViewModel/UserControl/VectoJobFile.cs b/HashingTool/ViewModel/UserControl/VectoJobFile.cs index 9b477916dd57fbffa647b86583624d6af303a45f..c8f1a7a5ada6fcd8cae74d8bf60a115b5e96d7dc 100644 --- a/HashingTool/ViewModel/UserControl/VectoJobFile.cs +++ b/HashingTool/ViewModel/UserControl/VectoJobFile.cs @@ -184,10 +184,9 @@ namespace HashingTool.ViewModel.UserControl entry.CertificationNumber = h.GetCertificationNumber(component.Entry, i); entry.CertificationDate = h.GetCertificationDate(component.Entry, i); if (!entry.Valid) { - _xmlFile.LogError( - string.Format( - "Digest Value mismatch for component \"{0}\". Read digest value: \"{1}\", computed digest value \"{2}\"", - entry.Component, entry.DigestValueRead, entry.DigestValueComputed)); + _xmlFile.LogError($"Digest Value mismatch for component \"{entry.Component}\". " + + $"Read digest value: \"{entry.DigestValueRead}\", " + + $"computed digest value \"{entry.DigestValueComputed}\""); } Components.Add(entry); allValid &= entry.Valid; diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationEngineDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationEngineDataProvider.cs index b598572a6c5a60ae60dba462804f32f0d28ecb31..933c79281c63f3b2dc2819ab5db2e336505ccffc 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationEngineDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationEngineDataProvider.cs @@ -341,9 +341,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider string.Join( "; ", missing.Select( - x => string.Format( - "n: {0}, T: {1}", x.Attributes?[XMLNames.Engine_FuelConsumptionMap_EngineSpeed_Attr]?.Value, - x.Attributes?[XMLNames.Engine_FuelConsumptionMap_Torque_Attr]?.Value)))); + x => $"n: {x.Attributes?[XMLNames.Engine_FuelConsumptionMap_EngineSpeed_Attr]?.Value}, " + + $"T: {x.Attributes?[XMLNames.Engine_FuelConsumptionMap_Torque_Attr]?.Value}"))); } if (correctionFactorNodes[0].ParentNode.ParentNode != whrFuelNode) { diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/Reader/Impl/AbstractExternalResourceReader.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/Reader/Impl/AbstractExternalResourceReader.cs index 4a894282a00066aab4d9ac594b8c5fc8e0def0aa..43cbf36fbda6cc67828793ff11407b11498ab784 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/Reader/Impl/AbstractExternalResourceReader.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/Reader/Impl/AbstractExternalResourceReader.cs @@ -64,15 +64,12 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering.Reader ? componentNode?.SelectSingleNode($"./*[local-name()='{XMLNames.ComponentDataWrapper}']") : componentNode; var componentResourceNode = componentNode?.SelectSingleNode( - string.Format( - "./*[local-name()='{0}' and @{3}='{4}']", XMLNames.ExternalResource, - XMLNames.ExtResource_Component_Attr, component, XMLNames.ExtResource_Type_Attr, - XMLNames.ExtResource_Type_Value_XML)) ?? + $"./*[local-name()='{XMLNames.ExternalResource}'" + + $" and @{XMLNames.ExtResource_Type_Attr}='{XMLNames.ExtResource_Type_Value_XML}']") ?? BaseNode?.SelectSingleNode( - string.Format( - "./*[local-name()='{0}' and @{1}='{2}' and @{3}='{4}']", XMLNames.ExternalResource, - XMLNames.ExtResource_Component_Attr, component, XMLNames.ExtResource_Type_Attr, - XMLNames.ExtResource_Type_Value_XML)); + $"./*[local-name()='{XMLNames.ExternalResource}'" + + $" and @{XMLNames.ExtResource_Component_Attr}='{component}'" + + $" and @{XMLNames.ExtResource_Type_Attr}='{XMLNames.ExtResource_Type_Value_XML}']"); if (dataNode != null && componentResourceNode == null) { var type = dataNode.SchemaInfo.SchemaType; var version = XMLHelper.GetXsdType(type); diff --git a/VectoCore/VectoCore/InputData/FileIO/XMLReports/XMLManufacturerReportReader.cs b/VectoCore/VectoCore/InputData/FileIO/XMLReports/XMLManufacturerReportReader.cs index 751cc5faaed4dbf7a8842b465b5ce9420919554f..d64f9942d07e6246152c1e99396476e94ea68d11 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XMLReports/XMLManufacturerReportReader.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XMLReports/XMLManufacturerReportReader.cs @@ -76,7 +76,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration throw new Exception($"Component {component} not found"); } if (index >= nodes.Count) { - throw new Exception($"index exceeds number of components found! index: {index}, #components: {nodes.Count}"); + throw new Exception($"index exceeds number of components found! index: {index}, " + + $"#components: {nodes.Count}"); } return nodes[index]; } diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterCompletedBusSpecific.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterCompletedBusSpecific.cs index b0b1e3bd932568bf1f4e4b761a239f80513af12b..3ed44c304530824451009012db15f6572993d0ab 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterCompletedBusSpecific.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterCompletedBusSpecific.cs @@ -62,7 +62,8 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter vehicleData.VehicleCode = completedVehicle.VehicleCode; if (vehicleData.TotalVehicleMass.IsGreater(vehicleData.GrossVehicleMass)) { - throw new VectoException("Total Vehicle Mass exceeds Gross Vehicle Mass for completed bus specific ({0}/{1})", vehicleData.TotalVehicleMass, vehicleData.GrossVehicleMass); + throw new VectoException("Total Vehicle Mass exceeds Gross Vehicle Mass for completed bus specific ({0}/{1})", + vehicleData.TotalVehicleMass, vehicleData.GrossVehicleMass); } return vehicleData; } @@ -294,9 +295,8 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter //ToDo FK COP calculation ssmInputs.HVACCompressorType = heatPumpTypePassengerCompartment; // use passenger compartment - ssmInputs.HVACTechnology = string.Format( - "{0} ({1})", busAux.SystemConfiguration.GetName(), - string.Join(", ", new[] { heatPumpTypePassengerCompartment.GetName(), heatPumpTypeDriverCompartment.GetName() })); + ssmInputs.HVACTechnology = $"{busAux.SystemConfiguration.GetName()} " + + $"({string.Join(", ", heatPumpTypePassengerCompartment.GetName(), heatPumpTypeDriverCompartment.GetName())})"; ssmInputs.COP = DeclarationData.BusAuxiliaries.CalculateCOP( coolingPower.Item1, heatPumpTypeDriverCompartment, coolingPower.Item2, heatPumpTypePassengerCompartment /* average */, floorType); diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterPrimaryBus.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterPrimaryBus.cs index f7b09265fd25ac83a610590545459d9b1481b567..a41418f00e47f42e0c0534849eba307e1aa8addf 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterPrimaryBus.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterPrimaryBus.cs @@ -351,9 +351,8 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter coolingPower.Item1, HeatPumpType.none, coolingPower.Item2, busParams.HVACCompressorType, busParams.VehicleCode.GetFloorType()); - retVal.HVACTechnology = string.Format( - "{0} ({1})", busParams.HVACConfiguration.GetName(), - string.Join(", ", new[] { busParams.HVACCompressorType.GetName(), HeatPumpType.none.GetName() })); + retVal.HVACTechnology = $"{busParams.HVACConfiguration.GetName()} " + + $"({string.Join(", ", busParams.HVACCompressorType.GetName(), HeatPumpType.none.GetName())})"; //SetHVACParameters(retVal, vehicleData, mission); diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModePrimaryBusVectoRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModePrimaryBusVectoRunDataFactory.cs index b17b25cd403bd28fd1f2ffc85617e6ca12de14c1..4094685bc6e3f685ba3687c17aa189234a7124b7 100644 --- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModePrimaryBusVectoRunDataFactory.cs +++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModePrimaryBusVectoRunDataFactory.cs @@ -108,7 +108,8 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl DriverData = _driverdata, ExecutionMode = ExecutionMode.Declaration, JobName = InputDataProvider.JobInputData.JobName, - ModFileSuffix = (engineModes.Count > 1 ? string.Format("_EngineMode{0}_", modeIdx) : "") + "_" + mission.BusParameter.BusGroup.GetClassNumber() + "_" + loading.Key.ToString(), + ModFileSuffix = $"{(engineModes.Count > 1 ? $"_EngineMode{modeIdx}_" : "")}" + + $"_{mission.BusParameter.BusGroup.GetClassNumber()}_{loading.Key}", Report = Report, Mission = mission, InputDataHash = InputDataProvider.XMLHash, diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeSingleBusVectoRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeSingleBusVectoRunDataFactory.cs index edb06d2e89689a5b1ac5741e966d1d527029750b..a4a9cd71a924becbcc9dbceb983a4ad6a7a0bc6e 100644 --- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeSingleBusVectoRunDataFactory.cs +++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeSingleBusVectoRunDataFactory.cs @@ -98,7 +98,8 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl { DriverData = _driverdata, ExecutionMode = ExecutionMode.Declaration, JobName = InputDataProvider.JobInputData.JobName, - ModFileSuffix = (engineModes.Count > 1 ? string.Format("_EngineMode{0}_", modeIdx) : "") + "_" + mission.BusParameter.BusGroup.GetClassNumber() + "-Single_" + loading.Key.ToString(), + ModFileSuffix = $"{(engineModes.Count > 1 ? $"_EngineMode{modeIdx}_" : "")}" + + $"_{mission.BusParameter.BusGroup.GetClassNumber()}-Single_{loading.Key}", Report = Report, Mission = mission, InputDataHash = InputDataProvider.XMLHash, diff --git a/VectoCore/VectoCore/Models/Simulation/Data/VectoRunData.cs b/VectoCore/VectoCore/Models/Simulation/Data/VectoRunData.cs index 67b3aaaf5c4dff81638043a4449c823e18ec7180..905b0f873a452212cb4ec24d1bb80bfac4527792 100644 --- a/VectoCore/VectoCore/Models/Simulation/Data/VectoRunData.cs +++ b/VectoCore/VectoCore/Models/Simulation/Data/VectoRunData.cs @@ -257,8 +257,8 @@ namespace TUGraz.VectoCore.Models.Simulation.Data if (gearboxData.Gears.Count + 1 != engineData.FullLoadCurves.Count) { return new ValidationResult( - string.Format("number of full-load curves in engine does not match gear count. engine fld: {0}, gears: {1}", - engineData.FullLoadCurves.Count, gearboxData.Gears.Count)); + $"number of full-load curves in engine does not match gear count. " + + $"engine fld: {engineData.FullLoadCurves.Count}, gears: {gearboxData.Gears.Count}"); } foreach (var gear in gearboxData.Gears) { @@ -299,9 +299,9 @@ namespace TUGraz.VectoCore.Models.Simulation.Data var tqLoss = gear.Value.LossMap.GetTorqueLoss(engineSpeed / gear.Value.Ratio, inTorque * gear.Value.Ratio); if (tqLoss.Extrapolated) { - return new ValidationResult( - string.Format("Interpolation of Gear-{0}-LossMap failed with torque={1} and angularSpeed={2}", gear.Key, - inTorque, engineSpeed.ConvertToRoundsPerMinute())); + return new ValidationResult($"Interpolation of Gear-{gear.Key}-LossMap failed " + + $"with torque={inTorque} " + + $"and angularSpeed={engineSpeed.ConvertToRoundsPerMinute()}"); } var angledriveTorque = (inTorque - tqLoss.Value) / gear.Value.Ratio; @@ -313,10 +313,9 @@ namespace TUGraz.VectoCore.Models.Simulation.Data engineSpeed / gear.Value.Ratio / angledriveRatio, angledriveTorque * angledriveRatio); if (anglTqLoss.Extrapolated) { - return new ValidationResult( - string.Format( - "Interpolation of Angledrive-LossMap failed with torque={0} and angularSpeed={1}", - angledriveTorque, (engineSpeed / gear.Value.Ratio).ConvertToRoundsPerMinute())); + return new ValidationResult("Interpolation of Angledrive-LossMap failed " + + $"with torque={angledriveTorque} " + + $"and angularSpeed={(engineSpeed / gear.Value.Ratio).ConvertToRoundsPerMinute()}"); } } @@ -325,11 +324,10 @@ namespace TUGraz.VectoCore.Models.Simulation.Data var axlTqLoss = axleGearData.AxleGear.LossMap.GetTorqueLoss(axleAngularVelocity, axlegearTorque * axleGearData.AxleGear.Ratio); if (axlTqLoss.Extrapolated) { - return - new ValidationResult( - string.Format( - "Interpolation of AxleGear-LossMap failed with torque={0} and angularSpeed={1} (gear={2}, velocity={3})", - axlegearTorque, axleAngularVelocity.ConvertToRoundsPerMinute(), gear.Key, velocity)); + return new ValidationResult("Interpolation of AxleGear-LossMap failed " + + $"with torque={axlegearTorque} " + + $"and angularSpeed={axleAngularVelocity.ConvertToRoundsPerMinute()} " + + $"(gear={gear.Key}, velocity={velocity})"); } } return null; diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/Vehicle.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/Vehicle.cs index dcbea7750d45b2e499620e3a7086ed20e7eb2965..1d94509c1fe9b6a5f361782cca641afacd26156d 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/Vehicle.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/Vehicle.cs @@ -270,15 +270,15 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl public MeterPerSecond Velocity = 0.SI<MeterPerSecond>(); public MeterPerSquareSecond Acceleration = 0.SI<MeterPerSquareSecond>(); - public override string ToString() - { - return - string.Format( - "v: {0} a: {1}, dt: {2}, driver_acc: {3}, roll_res: {4}, slope_res: {5}, air_drag: {6}, traction force: {7}", - Velocity, Acceleration, SimulationInterval, DriverAcceleration, RollingResistance, SlopeResistance, - AirDragResistance, - VehicleTractionForce); - } + public override string ToString() => + $"v: {Velocity} " + + $"a: {Acceleration}, " + + $"dt: {SimulationInterval}, " + + $"driver_acc: {DriverAcceleration}, " + + $"roll_res: {RollingResistance}, " + + $"slope_res: {SlopeResistance}, " + + $"air_drag: {AirDragResistance}, " + + $"traction force: {VehicleTractionForce}"; } } } \ No newline at end of file diff --git a/VectoCore/VectoCore/Utils/SearchAlgorithm.cs b/VectoCore/VectoCore/Utils/SearchAlgorithm.cs index 3400b3250e52af961a520fed880d43b00e6f9de2..5cd1169ac65f2414bc421a57599f570f8f00f759 100644 --- a/VectoCore/VectoCore/Utils/SearchAlgorithm.cs +++ b/VectoCore/VectoCore/Utils/SearchAlgorithm.cs @@ -185,17 +185,16 @@ namespace TUGraz.VectoCore.Utils var rand = new Random().Next(); using ( - var f = - new StreamWriter(File.Open("LineSearch-" + Thread.CurrentThread.ManagedThreadId + "-statistics.csv", + var f = new StreamWriter(File.Open("LineSearch-" + Thread.CurrentThread.ManagedThreadId + "-statistics.csv", FileMode.Append))) { foreach (var d in debug.Data) { - f.WriteLine(string.Format("{0}, {1}, {2}, {3}, {4}, {5}, {6}", - rand, - (d.x - xmin) / (xmax - xmin), - (d.y - ymin) / (ymax - ymin), - d.x / Math.Max(Math.Abs(xmax), Math.Abs(xmin)), - d.y / Math.Max(Math.Abs(ymax), Math.Abs(ymin)), - d.x, d.y)); + f.WriteLine($"{rand}, " + + $"{(d.x - xmin) / (xmax - xmin)}, " + + $"{(d.y - ymin) / (ymax - ymin)}, " + + $"{d.x / Math.Max(Math.Abs(xmax), Math.Abs(xmin))}, " + + $"{d.y / Math.Max(Math.Abs(ymax), Math.Abs(ymin))}, " + + $"{d.x}, " + + $"{d.y}"); } } } diff --git a/VectoCore/VectoCore/Utils/VectoCSVFile.cs b/VectoCore/VectoCore/Utils/VectoCSVFile.cs index 3f7365d0fc95cf276aba44b21f9580f061a20ff5..455717e11189c524ee34735dab0f0cffc37c2815 100644 --- a/VectoCore/VectoCore/Utils/VectoCSVFile.cs +++ b/VectoCore/VectoCore/Utils/VectoCSVFile.cs @@ -155,8 +155,8 @@ namespace TUGraz.VectoCore.Utils firstLineIsData = false; if (table.Columns.Count != cells.Length && !ignoreEmptyColumns) { throw new CSVReadException( - string.Format("Line {0}: The number of values is not correct. Expected {1} Columns, Got {2} Columns", - lineNumber, table.Columns.Count, cells.Length)); + $"Line {lineNumber}: The number of values is not correct. " + + $"Expected {table.Columns.Count} Columns, Got {cells.Length} Columns"); } try { @@ -203,10 +203,9 @@ namespace TUGraz.VectoCore.Utils var entries = new List<string>(); if (addVersionHeader) { try { - entries.Add(string.Format("# VECTO{0} {1} - {2}", VectoSimulationCore.BranchSuffix, VectoSimulationCore.VersionNumber, - DateTime.Now.ToString("dd.MM.yyyy HH:mm"))); + entries.Add($"# VECTO{VectoSimulationCore.BranchSuffix} {VectoSimulationCore.VersionNumber} - {DateTime.Now:dd.MM.yyyy HH:mm}"); } catch (Exception) { - entries.Add(string.Format("# VECTO {0} - {1}", "Unknown", DateTime.Now.ToString("dd.MM.yyyy HH:mm"))); + entries.Add($"# VECTO Unknown - {DateTime.Now:dd.MM.yyyy HH:mm}"); } } var header = table.Columns.Cast<DataColumn>().Select(col => col.Caption ?? col.ColumnName); diff --git a/VectoCore/VectoCoreTest/Integration/FullCycleDeclarationTest.cs b/VectoCore/VectoCoreTest/Integration/FullCycleDeclarationTest.cs index 97819e4f7dad7767c2ba38d594600ff4c7d3e00d..ef936822099a928ec60d41e926040a6d9295ba9e 100644 --- a/VectoCore/VectoCoreTest/Integration/FullCycleDeclarationTest.cs +++ b/VectoCore/VectoCoreTest/Integration/FullCycleDeclarationTest.cs @@ -322,9 +322,8 @@ namespace TUGraz.VectoCore.Tests.Integration jobContainer.Execute(); jobContainer.WaitFinished(); Assert.IsTrue(jobContainer.Runs.All(r => r.Success), - string.Format("folowing runs failed: {0}\n{1}", - string.Concat(jobContainer.Runs.Where(r => !r.Success).Select(r => r.Run.RunName + " - " + r.Run.CycleName)), - string.Concat(jobContainer.Runs.Select(r => r.ExecException)))); + $"folowing runs failed: {string.Concat(jobContainer.Runs.Where(r => !r.Success).Select(r => r.Run.RunName + " - " + r.Run.CycleName))}\n" + + $"{string.Concat(jobContainer.Runs.Select(r => r.ExecException))}"); } [TestCase, Category("LongRunning")] diff --git a/VectoCore/VectoCoreTest/Models/Declaration/DeclarationDataTest.cs b/VectoCore/VectoCoreTest/Models/Declaration/DeclarationDataTest.cs index 8d59e5783ee18052d1ff3eda53673c442cfdca72..255c280cec46a2ce71ce3acdbeb32a865f1be010 100644 --- a/VectoCore/VectoCoreTest/Models/Declaration/DeclarationDataTest.cs +++ b/VectoCore/VectoCoreTest/Models/Declaration/DeclarationDataTest.cs @@ -629,7 +629,10 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration weight.SI<Kilogram>(), 0.SI<Kilogram>(), false), - string.Format("ERROR: Could not find the declaration segment for vehicle. Category: {0}, AxleConfiguration: {1}, GrossVehicleWeight: {2}", VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2.GetName(), weight.SI<Kilogram>())); + $"ERROR: Could not find the declaration segment for vehicle. " + + $"Category: {VehicleCategory.RigidTruck}, " + + $"AxleConfiguration: {AxleConfiguration.AxleConfig_4x2.GetName()}, " + + $"GrossVehicleWeight: {weight.SI<Kilogram>()}"); } [ @@ -647,7 +650,10 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration weight.SI<Kilogram>(), 0.SI<Kilogram>(), false), - string.Format("ERROR: Could not find the declaration segment for vehicle. Category: {0}, AxleConfiguration: {1}, GrossVehicleWeight: {2}", VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x4.GetName(), weight.SI<Kilogram>())); + $"ERROR: Could not find the declaration segment for vehicle. " + + $"Category: {VehicleCategory.RigidTruck}, " + + $"AxleConfiguration: {AxleConfiguration.AxleConfig_4x4.GetName()}, " + + $"GrossVehicleWeight: {weight.SI<Kilogram>()}"); } [Test, diff --git a/VectoCore/VectoCoreTest/Models/SimulationComponent/VTPCycleValidationTest.cs b/VectoCore/VectoCoreTest/Models/SimulationComponent/VTPCycleValidationTest.cs index 2a7587283954233c0242795bb726b1da1cf50483..4ad8f1fdc2f39e5154c3dacc61572e17db47376f 100644 --- a/VectoCore/VectoCoreTest/Models/SimulationComponent/VTPCycleValidationTest.cs +++ b/VectoCore/VectoCoreTest/Models/SimulationComponent/VTPCycleValidationTest.cs @@ -324,7 +324,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent var cycleEntries = ""; for (var i = 0; i < 2000; i++) - cycleEntries += string.Format(" {0} , 0, 600, 400, 500 , 500 , 100 , 100 , {1}, 3 \n", (i / 2.0).ToString(CultureInfo.InvariantCulture), ((fcLimit * 1.01 * (1 - i/100000.0)).ConvertToGrammPerHour().Value).ToString(CultureInfo.InvariantCulture)); + cycleEntries += $" {(i / 2.0).ToString(CultureInfo.InvariantCulture)} , 0, 600, 400, 500 , 500 , 100 , 100 , {((fcLimit * 1.01 * (1 - i / 100000.0)).ConvertToGrammPerHour().Value).ToString(CultureInfo.InvariantCulture)}, 3 \n"; var container = new VehicleContainer(ExecutionMode.Declaration) { RunData = new VectoRunData() { @@ -354,7 +354,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent var cycleEntries = ""; for (var i = 0; i < 2000; i++) - cycleEntries += string.Format(" {0} , 0, 600, 400, 500 , 500 , 100 , 100 , {1}, 3 \n", (i / 2.0).ToString(CultureInfo.InvariantCulture), ((fcLimit * 1.0001).ConvertToGrammPerHour().Value).ToString(CultureInfo.InvariantCulture)); + cycleEntries += $" {(i / 2.0).ToString(CultureInfo.InvariantCulture)} , 0, 600, 400, 500 , 500 , 100 , 100 , {((fcLimit * 1.0001).ConvertToGrammPerHour().Value).ToString(CultureInfo.InvariantCulture)}, 3 \n"; var container = new VehicleContainer(ExecutionMode.Declaration) { RunData = new VectoRunData() { @@ -383,7 +383,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent var cycleEntries = ""; for (var i = 0; i < 2000; i++) - cycleEntries += string.Format(" {0} , 0, 600, 400, 500 , 500 , 100 , 100 , {1}, 3 \n", (i / 2.0).ToString(CultureInfo.InvariantCulture), ((fcLimit * 0.99 * (1 + i / 100000.0)).ConvertToGrammPerHour().Value).ToString(CultureInfo.InvariantCulture)); + cycleEntries += $" {(i / 2.0).ToString(CultureInfo.InvariantCulture)} , 0, 600, 400, 500 , 500 , 100 , 100 , {((fcLimit * 0.99 * (1 + i / 100000.0)).ConvertToGrammPerHour().Value).ToString(CultureInfo.InvariantCulture)}, 3 \n"; var container = new VehicleContainer(ExecutionMode.Declaration) { RunData = new VectoRunData() { @@ -412,7 +412,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent var cycleEntries = ""; for (var i = 0; i < 2000; i++) - cycleEntries += string.Format(" {0} , 0, 600, 400, 500 , 500 , 100 , 100 , {1}, 3 \n", (i / 2.0).ToString(CultureInfo.InvariantCulture), ((fcLimit * 0.9999).ConvertToGrammPerHour().Value).ToString(CultureInfo.InvariantCulture)); + cycleEntries += $" {(i / 2.0).ToString(CultureInfo.InvariantCulture)} , 0, 600, 400, 500 , 500 , 100 , 100 , {((fcLimit * 0.9999).ConvertToGrammPerHour().Value).ToString(CultureInfo.InvariantCulture)}, 3 \n"; var container = new VehicleContainer(ExecutionMode.Declaration) { RunData = new VectoRunData() { diff --git a/VectoCore/VectoCoreTest/Utils/ResultFileHelper.cs b/VectoCore/VectoCoreTest/Utils/ResultFileHelper.cs index d0d7bf5d0ec1dd78370a5e6bd1fbdf07b0b59aca..0f36502f3b8efbee0ad36d1a5def5c7588bf7733 100644 --- a/VectoCore/VectoCoreTest/Utils/ResultFileHelper.cs +++ b/VectoCore/VectoCoreTest/Utils/ResultFileHelper.cs @@ -86,8 +86,9 @@ namespace TUGraz.VectoCore.Tests.Utils if (testRowcount) { Assert.AreEqual(expected.Rows.Count, actual.Rows.Count, - string.Format("Moddata: Row count differs.\nExpected {0} Rows in {1}\nGot {2} Rows in {3}", expected.Rows.Count, - result.expectedFile, actual.Rows.Count, result.actualFile)); + $"Moddata: Row count differs.\n" + + $"Expected {expected.Rows.Count} Rows in {result.expectedFile}\n" + + $"Got {actual.Rows.Count} Rows in {result.actualFile}"); } var actualCols = actual.Columns.Cast<DataColumn>().Select(x => x.ColumnName).OrderBy(x => x).ToList(); @@ -131,8 +132,7 @@ namespace TUGraz.VectoCore.Tests.Utils var actual = VectoCSVFile.Read(actualFile, fullHeader: true); Assert.AreEqual(expected.Rows.Count, actual.Rows.Count, - string.Format("SUM File row count differs.\nExpected {0} Rows in {1}\nGot {2} Rows in {3}", expected.Rows.Count, - expectedFile, actual.Rows.Count, actualFile)); + $"SUM File row count differs.\nExpected {expected.Rows.Count} Rows in {expectedFile}\nGot {actual.Rows.Count} Rows in {actualFile}"); var actualCols = actual.Columns.Cast<DataColumn>().Select(x => x.ColumnName).OrderBy(x => x).ToList(); var expectedCols = expected.Columns.Cast<DataColumn>().Select(x => x.ColumnName).OrderBy(x => x).ToList(); diff --git a/VectoCore/VectoCoreTest/XML/XMLEngineeringInputSingleTest.cs b/VectoCore/VectoCoreTest/XML/XMLEngineeringInputSingleTest.cs index ef8fd5a2144e7737f6fb90bd6b74ada8955aa99d..08500daf4005c7b8bfcebb7f0118aac566121a1e 100644 --- a/VectoCore/VectoCoreTest/XML/XMLEngineeringInputSingleTest.cs +++ b/VectoCore/VectoCoreTest/XML/XMLEngineeringInputSingleTest.cs @@ -104,8 +104,8 @@ namespace TUGraz.VectoCore.Tests.XML Assert.AreEqual("560.00", fcMapTable.Rows[0][0]); var fcMap = FuelConsumptionMapReader.Create(fcMapTable); - Assert.AreEqual(1256.SI(Unit.SI.Gramm.Per.Hour).Value(), - fcMap.GetFuelConsumption(0.SI<NewtonMeter>(), 560.RPMtoRad(), false).Value.Value()); + Assert.AreEqual(1256.SI(Unit.SI.Gramm.Per.Hour).Value(), + fcMap.GetFuelConsumption(0.SI<NewtonMeter>(), 560.RPMtoRad()).Value.Value()); var fldTable = engineDataProvider.EngineModes.First().FullLoadCurve; Assert.AreEqual(10, fldTable.Rows.Count); @@ -171,7 +171,6 @@ namespace TUGraz.VectoCore.Tests.XML var doc = new XmlDocument(); doc.Load(reader); var nav = doc.CreateNavigator(); - var axleglosses = nav.SelectSingleNode(XMLHelper.QueryLocalName( XMLNames.VectoInputEngineering, @@ -226,8 +225,8 @@ namespace TUGraz.VectoCore.Tests.XML var tyre = axles[0].Tyre; Assert.AreEqual("315/70 R22.5", tyre.Dimension); - Assert.AreEqual(0.0055,tyre.RollResistanceCoefficient); - Assert.AreEqual(31300,tyre.TyreTestLoad.Value()); + Assert.AreEqual(0.0055, tyre.RollResistanceCoefficient); + Assert.AreEqual(31300, tyre.TyreTestLoad.Value()); tyre = axles[1].Tyre; Assert.AreEqual("315/70 R22.5", tyre.Dimension); @@ -246,16 +245,15 @@ namespace TUGraz.VectoCore.Tests.XML var doc = new XmlDocument(); doc.Load(reader); var nav = doc.CreateNavigator(); - + var firstAxle = nav.SelectSingleNode(XMLHelper.QueryLocalName( XMLNames.VectoInputEngineering, XMLNames.Component_Vehicle, XMLNames.Vehicle_Components, XMLNames.Component_AxleWheels, XMLNames.ComponentDataWrapper, - XMLNames.AxleWheels_Axles) + - $"/*[@{XMLNames.AxleWheels_Axles_Axle_AxleNumber_Attr}={"1"}]" - ); + XMLNames.AxleWheels_Axles) + $"/*[@{XMLNames.AxleWheels_Axles_Axle_AxleNumber_Attr}=1]" + ); firstAxle.MoveToAttribute(XMLNames.AxleWheels_Axles_Axle_AxleNumber_Attr, string.Empty); firstAxle.SetTypedValue(2); @@ -281,7 +279,6 @@ namespace TUGraz.VectoCore.Tests.XML var doc = new XmlDocument(); doc.Load(reader); var nav = doc.CreateNavigator(); - var firstAxle = nav.SelectSingleNode(XMLHelper.QueryLocalName( XMLNames.VectoInputEngineering, @@ -289,9 +286,8 @@ namespace TUGraz.VectoCore.Tests.XML XMLNames.Vehicle_Components, XMLNames.Component_AxleWheels, XMLNames.ComponentDataWrapper, - XMLNames.AxleWheels_Axles) + - $"/*[@{XMLNames.AxleWheels_Axles_Axle_AxleNumber_Attr}={"1"}]" - ); + XMLNames.AxleWheels_Axles) + $"/*[@{XMLNames.AxleWheels_Axles_Axle_AxleNumber_Attr}=1]" + ); firstAxle.MoveToAttribute(XMLNames.AxleWheels_Axles_Axle_AxleNumber_Attr, string.Empty); firstAxle.SetTypedValue(0); @@ -316,15 +312,15 @@ namespace TUGraz.VectoCore.Tests.XML var doc = new XmlDocument(); doc.Load(reader); var nav = doc.CreateNavigator(); - + var firstAxle = nav.SelectSingleNode(XMLHelper.QueryLocalName( XMLNames.VectoInputEngineering, XMLNames.Component_Vehicle, XMLNames.Vehicle_Components, XMLNames.Component_AxleWheels, XMLNames.ComponentDataWrapper, - XMLNames.AxleWheels_Axles) + $"/*[@{XMLNames.AxleWheels_Axles_Axle_AxleNumber_Attr}={"1"}]" - ); + XMLNames.AxleWheels_Axles) + $"/*[@{XMLNames.AxleWheels_Axles_Axle_AxleNumber_Attr}=1]" + ); firstAxle.MoveToAttribute(XMLNames.AxleWheels_Axles_Axle_AxleNumber_Attr, string.Empty); firstAxle.SetTypedValue(3); @@ -442,7 +438,7 @@ namespace TUGraz.VectoCore.Tests.XML AssertHelper.AreRelativeEqual(Constants.DefaultPowerShiftTime, gearboxData.PowershiftShiftTime); var tcShiftStrategy = inputDataProvider.DriverInputData.GearshiftInputData; - + AssertHelper.AreRelativeEqual(DeclarationData.TorqueConverter.CCUpshiftMinAcceleration, tcShiftStrategy.CCUpshiftMinAcceleration); AssertHelper.AreRelativeEqual(DeclarationData.TorqueConverter.CLUpshiftMinAcceleration, @@ -457,7 +453,7 @@ namespace TUGraz.VectoCore.Tests.XML var doc = new XmlDocument(); doc.Load(reader); var nav = doc.CreateNavigator(); - + var accData = nav.SelectSingleNode(XMLHelper.QueryLocalName( XMLNames.VectoInputEngineering, XMLNames.Component_DriverModel, @@ -583,7 +579,7 @@ namespace TUGraz.VectoCore.Tests.XML //Assert.AreEqual(0.811, gearboxData.PowershiftShiftTime.Value(), 1e-6); // only available for AT gearboxes var tcShiftStrategy = inputDataProvider.DriverInputData.GearshiftInputData; - + Assert.AreEqual(0.134, tcShiftStrategy.CCUpshiftMinAcceleration.Value(), 1e-6); Assert.AreEqual(0.133, tcShiftStrategy.CLUpshiftMinAcceleration.Value(), 1e-6); } @@ -650,7 +646,7 @@ namespace TUGraz.VectoCore.Tests.XML var doc = new XmlDocument(); doc.Load(reader); var nav = doc.CreateNavigator(); - + var angledrivelosses = nav.SelectSingleNode(XMLHelper.QueryLocalName( XMLNames.VectoInputEngineering, @@ -681,9 +677,9 @@ namespace TUGraz.VectoCore.Tests.XML var doc = new XmlDocument(); doc.Load(reader); var nav = doc.CreateNavigator(); - + var aux = nav.SelectSingleNode(XMLHelper.QueryLocalName( - XMLNames.VectoInputEngineering, + XMLNames.VectoInputEngineering, XMLNames.Component_Vehicle, XMLNames.Vehicle_Components, XMLNames.Component_Auxiliaries, XMLNames.ComponentDataWrapper)); //accData.DeleteSelf(); @@ -717,7 +713,7 @@ namespace TUGraz.VectoCore.Tests.XML var doc = new XmlDocument(); doc.Load(reader); var nav = doc.CreateNavigator(); - + var retarderType = nav.SelectSingleNode(XMLHelper.QueryLocalName( XMLNames.VectoInputEngineering, @@ -726,7 +722,7 @@ namespace TUGraz.VectoCore.Tests.XML retarderType.SetValue("None"); var retarder = nav.SelectSingleNode(XMLHelper.QueryLocalName( - XMLNames.VectoInputEngineering, + XMLNames.VectoInputEngineering, XMLNames.Component_Vehicle, XMLNames.Vehicle_Components, XMLNames.Component_Retarder)); @@ -741,7 +737,7 @@ namespace TUGraz.VectoCore.Tests.XML new XAttribute(XMLNames.ExtResource_Type_Attr, XMLNames.ExtResource_Type_Value_CSV), new XAttribute(XMLNames.ExtResource_File_Attr, "LongHaul")).ToString(); var aux = nav.SelectSingleNode(XMLHelper.QueryLocalName( - XMLNames.VectoInputEngineering, + XMLNames.VectoInputEngineering, XMLNames.Component_Vehicle, XMLNames.Vehicle_Components, XMLNames.Component_Auxiliaries, XMLNames.ComponentDataWrapper)); aux.InnerXml = ""; @@ -769,7 +765,7 @@ namespace TUGraz.VectoCore.Tests.XML var doc = new XmlDocument(); doc.Load(reader); var nav = doc.CreateNavigator(); - + var engine = nav.SelectSingleNode(XMLHelper.QueryLocalName( XMLNames.VectoInputEngineering, XMLNames.Component_Vehicle, XMLNames.Vehicle_Components, XMLNames.Component_Engine)); @@ -794,7 +790,7 @@ namespace TUGraz.VectoCore.Tests.XML var doc = new XmlDocument(); doc.Load(reader); var nav = doc.CreateNavigator(); - + var cycles = nav.SelectSingleNode(XMLHelper.QueryLocalName( XMLNames.VectoInputEngineering, XMLNames.VectoJob_MissionCycles)); @@ -826,9 +822,9 @@ namespace TUGraz.VectoCore.Tests.XML var doc = new XmlDocument(); doc.Load(reader); var nav = doc.CreateNavigator(); - + var driverAcceleration = nav.SelectSingleNode(XMLHelper.QueryLocalName( - XMLNames.VectoInputEngineering, + XMLNames.VectoInputEngineering, XMLNames.Component_DriverModel, XMLNames.DriverModel_DriverAccelerationCurve)); //accData.DeleteSelf(); driverAcceleration.InnerXml = @@ -857,7 +853,7 @@ namespace TUGraz.VectoCore.Tests.XML var doc = new XmlDocument(); doc.Load(reader); var nav = doc.CreateNavigator(); - + var axlegearLossMap = nav.SelectSingleNode(XMLHelper.QueryLocalName( XMLNames.VectoInputEngineering, XMLNames.Component_Vehicle, XMLNames.Vehicle_Components, XMLNames.Component_Axlegear,