Code development platform for open source projects from the European Union institutions

Skip to content
Snippets Groups Projects
Commit 5c84fa64 authored by Harald Martini's avatar Harald Martini
Browse files

merged multistagejobviewodel and viftests

parents 48622b90 a0a6db84
No related branches found
No related tags found
No related merge requests found
......@@ -76,14 +76,9 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
public static void SaveVif(IMultistageVIFInputData vifData, string outputFile)
{
Debug.Assert(outputFile != null);
var numberOfManufacturingStages =
vifData.MultistageJobInputData.JobInputData.ManufacturingStages?.Count ?? 1;
var writer = new FileOutputVIFWriter(outputFile, numberOfManufacturingStages);
var inputData = new XMLDeclarationVIFInputData(vifData.MultistageJobInputData, vifData.VehicleInputData);
......
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Xml;
using Moq;
using Ninject;
using NUnit.Framework;
using TUGraz.VectoCommon.InputData;
using TUGraz.VectoCore.OutputData.FileIO;
using TUGraz.VectoCore.Utils;
using VECTO3GUI2020.Helper;
using VECTO3GUI2020.ViewModel.MultiStage.Implementation;
namespace Vecto3GUI2020Test.ViewModelTests
{
public class VIFTests : ViewModelTestBase
{
public class VIFTests : ViewModelTestBase
{
[Test]
[Test]
public void loadPrimaryVehicleOnlyAndCreateNewVIF()
{
var multistagevm = loadFile(primary_vehicle_only).MultiStageJobViewModel;
var stage = multistagevm.ManufacturingStageViewModel.StageCount;
Assert.AreEqual(1, stage);
//Set Necessary Fields
......@@ -29,45 +30,85 @@ namespace Vecto3GUI2020Test.ViewModelTests
vehicle.Manufacturer = "Manufacturer";
vehicle.VIN = "VIN12345678";
var outputFile = primary_vehicle_only.Replace(".xml", "_vif_output_mandatory_fields.xml");
deleteFile(outputFile);
getMockDialogHelper(null, fileToSave: outputFile);
_kernel.Rebind<IDialogHelper>().ToConstant(getMockDialogHelper(null, outputFile).Object);
var outputFileName = primary_vehicle_only.Replace(".xml", "_vif_output_mandatory_fields.xml");
var outputFilePath = Path.Combine(DirPath, outputFileName);
var nextStageNumber = multistagevm.ManufacturingStageViewModel?.StageCount + 2 ?? 2;
var expectedOutputFilePath = outputFilePath.Replace(".xml", $".{FileOutputVIFWriter.REPORT_ENDING_PREFIX}{nextStageNumber}.xml");
deleteFile(expectedOutputFilePath);
getMockDialogHelper(null, outputFilePath);
_kernel.Rebind<IDialogHelper>().ToConstant(getMockDialogHelper(null, outputFilePath).Object);
var multistageConcrete = multistagevm as MultiStageJobViewModel_v0_1;
MultiStageJobViewModel_v0_1.SaveVif(multistagevm, outputFilePath);
multistageConcrete.SaveVIFCommand.Execute(null);
Assert.IsTrue(File.Exists(expectedOutputFilePath));
Assert.IsTrue(checkFileExists(outputFile));
var validator = new XMLValidator(XmlReader.Create(expectedOutputFilePath));
Assert.True(validator.ValidateXML(TUGraz.VectoCore.Utils.XmlDocumentType.MultistageOutputData));
}
[Test]
public void LoadPrimaryVehicleAndStageInputThenCreateVif()
public void TestAirdragLoad()
{
var multistagevm = loadFile(primary_vehicle_only).MultiStageJobViewModel;
var multiplestages = Path.GetFullPath(DirPath + "vecto_multistage_consolidated_multiple_stages.xml");
loadVehicleData(multistagevm as MultiStageJobViewModel_v0_1, stageInputFullSample);
var dialogMockConsolidatedMultipleStage = new Mock<IDialogHelper>();
dialogMockConsolidatedMultipleStage.Setup(dialogHelper => dialogHelper.OpenXMLFileDialog(It.IsAny<string>())).Returns(multiplestages);
dialogMockConsolidatedMultipleStage.Setup(dialogHelper => dialogHelper.OpenXMLFileDialog()).Returns(multiplestages);
_kernel.Rebind<IDialogHelper>().ToConstant(dialogMockConsolidatedMultipleStage.Object);
var newMultistageJobViewModel = _kernel.Get<NewMultiStageJobViewModel>();
newMultistageJobViewModel.AddVifFile.Execute(null);
Assert.NotNull(newMultistageJobViewModel.MultiStageJobViewModel);
var outputFile = "/output/loadPrimaryAndAddStageInput.xml";
var manstageVehicleViewModel = newMultistageJobViewModel.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as IMultistageVehicleViewModel;
Assert.NotNull(manstageVehicleViewModel);
//deleteFile(outputFile);
var mockDialogHelper = getMockDialogHelper(null, fileToSave: outputFile);
Debug.WriteLine($"Write to {mockDialogHelper.Object.SaveToXMLDialog()}");
var multistageVMConc = multistagevm as MultiStageJobViewModel_v0_1;
var auxiliariesViewModel = manstageVehicleViewModel.MultistageAuxiliariesViewModel;
Assert.NotNull(auxiliariesViewModel);
MultiStageJobViewModel_v0_1.SaveVif(multistageVMConc, mockDialogHelper.Object.SaveToXMLDialog());
var multiStageViewModel = newMultistageJobViewModel.MultiStageJobViewModel as MultiStageJobViewModel_v0_1;
Assert.NotNull(multiStageViewModel);
//multistageVMConc.SaveVIFCommand.Execute(null);
var vehicleInputData = Path.GetFullPath(DirPath + "vecto_vehicle-stage_input_full-sample.xml");
Assert.IsTrue(File.Exists(vehicleInputData));
var vehicleInputDataFiledialogMock = new Mock<IDialogHelper>();
vehicleInputDataFiledialogMock.Setup(dialogHelper => dialogHelper.OpenXMLFileDialog(It.IsAny<string>())).Returns(vehicleInputData);
vehicleInputDataFiledialogMock.Setup(dialogHelper => dialogHelper.OpenXMLFileDialog()).Returns(vehicleInputData);
_kernel.Rebind<IDialogHelper>().ToConstant(vehicleInputDataFiledialogMock.Object);
//Assert.IsTrue(checkFileExists(outputFile));
multiStageViewModel.LoadVehicleDataCommand.Execute(null);
var vehicle =
multiStageViewModel.ManufacturingStageViewModel.Vehicle as DeclarationInterimStageBusVehicleViewModel_v2_8;
vehicle.ManufacturerAddress = "Address";
vehicle.Manufacturer = "Manufacturer";
vehicle.VIN = "VIN12345678";
vehicle.AirdragModifiedMultistage = true;
vehicle.VehicleDeclarationType = VehicleDeclarationType.interim;
var outputFileName = primary_vehicle_only.Replace(".xml", "_vif_output_mandatory_fields.xml");
var outputFilePath = Path.Combine(DirPath, outputFileName);
var nextStageNumber = multiStageViewModel.ManufacturingStages?.Count + 2 ?? 2;
var expectedOutputFilePath = outputFilePath.Replace(".xml", $".{FileOutputVIFWriter.REPORT_ENDING_PREFIX}{nextStageNumber}.xml");
deleteFile(expectedOutputFilePath);
getMockDialogHelper(null, outputFilePath);
_kernel.Rebind<IDialogHelper>().ToConstant(getMockDialogHelper(null, outputFilePath).Object);
MultiStageJobViewModel_v0_1.SaveVif(multiStageViewModel, outputFilePath);
var validator = new XMLValidator(XmlReader.Create(expectedOutputFilePath));
Assert.True(validator.ValidateXML(TUGraz.VectoCore.Utils.XmlDocumentType.MultistageOutputData));
}
}
}
}
......@@ -9,13 +9,14 @@ namespace TUGraz.VectoCore.OutputData.FileIO
{
public class FileOutputVIFWriter : FileOutputWriter
{
public const string REPORT_ENDING_PREFIX = "VIF_Report_";
private string _jobFile;
private readonly int _numberOfManufacturingStages;
private string _reportEndingPrefix = "VIF_Report_";
public string XMLMultistageReportFileName
{
get { return Path.ChangeExtension(_jobFile, $"{_reportEndingPrefix}{_numberOfManufacturingStages + 2}.xml"); }
get { return Path.ChangeExtension(_jobFile, $"{REPORT_ENDING_PREFIX}{_numberOfManufacturingStages + 2}.xml"); }
}
public FileOutputVIFWriter(string jobFile, int numberOfManufacturingStages) : base(jobFile)
......@@ -27,11 +28,11 @@ namespace TUGraz.VectoCore.OutputData.FileIO
private void RemoveExistingEndingPrefix()
{
var vifReportIndex = _jobFile.IndexOf(_reportEndingPrefix, StringComparison.Ordinal);
var vifReportIndex = _jobFile.IndexOf(REPORT_ENDING_PREFIX, StringComparison.Ordinal);
if (vifReportIndex == -1)
return;
if (!_jobFile.Contains(_reportEndingPrefix))
if (!_jobFile.Contains(REPORT_ENDING_PREFIX))
return;
_jobFile = $"{_jobFile.Substring(0, vifReportIndex - 1)}.xml";
......
......@@ -16,6 +16,7 @@ using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider;
using TUGraz.VectoCore.Models.Simulation.Data;
using TUGraz.VectoCore.Utils;
namespace TUGraz.VectoCore.OutputData.XML
{
public interface IXMLMultistageReport
......@@ -240,6 +241,9 @@ namespace TUGraz.VectoCore.OutputData.XML
private XElement GetADAS(IAdvancedDriverAssistantSystemDeclarationInputData adasData)
{
if (adasData == null)
return null;
return new XElement(
v28 + XMLNames.Vehicle_ADAS,
new XElement(v23 + XMLNames.Vehicle_ADAS_EngineStopStart, adasData.EngineStopStart),
......@@ -254,6 +258,9 @@ namespace TUGraz.VectoCore.OutputData.XML
private XElement GetBusVehicleComponents(IVehicleComponentsDeclaration vehicleComponents)
{
if (vehicleComponents == null)
return null;
var busAirdrag = GetBusAirdrag(vehicleComponents.AirdragInputData);
var busAux = GetBusAuxiliaries(vehicleComponents.BusAuxiliaries);
......@@ -286,12 +293,24 @@ namespace TUGraz.VectoCore.OutputData.XML
private XElement GetAirdragElement(IAirdragDeclarationInputData airdrag)
{
var component = airdrag as AbstractCommonComponentType;
if (component == null)
if (airdrag == null)
return null;
XmlNode airdragNode = null;
if (airdrag is AbstractCommonComponentType)
airdragNode = (airdrag as AbstractCommonComponentType).XMLSource;
else {
var type = airdrag.GetType();
var property = type.GetProperty(nameof(AbstractCommonComponentType.XMLSource));
if (property != null)
airdragNode = (XmlNode)property.GetValue(airdrag, null);
}
if (airdragNode == null)
return null;
var dataElement = XElement.Parse(component.XMLSource.FirstChild.OuterXml);
var signatureElement = XElement.Parse(component.XMLSource.LastChild.OuterXml);
var dataElement = XElement.Parse(airdragNode.FirstChild.OuterXml);
var signatureElement = XElement.Parse(airdragNode.LastChild.OuterXml);
dataElement.Attribute(XNamespace.Xmlns + "xsi")?.Remove();
return new XElement(v28 + XMLNames.Component_AirDrag,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment