From 94eee31ff91064a35f86454901d50e5d623f30d5 Mon Sep 17 00:00:00 2001 From: "harald.martini@student.tugraz.at" <harald.martini@student.tugraz.at> Date: Thu, 17 Jun 2021 10:43:16 +0200 Subject: [PATCH] Updated VehicleWriter for exempted Vehicle, added Testcase Loading Exempted vif and save inputdata --- .../ComponentWriter/XMLVehicleWriter.cs | 49 +++++-- .../InterimStageBusVehicleViewModel_v2_8.cs | 35 ++++- .../MultistageJobViewModel_v0_1.cs | 10 +- .../Views/Multistage/MultiStageView.xaml | 4 +- .../Multistage/VehicleView_v2_8_exempted.xaml | 13 -- .../exempted_primary_heavyBus.VIF.xml | 60 +++++++++ Vecto3GUI2020Test/Vecto3GUI2020Test.csproj | 3 + .../ViewModelTests/LoadAndSaveVehicleData.cs | 126 ++++++++++++++---- .../ViewModelTests/ViewModelTestBase.cs | 19 ++- 9 files changed, 256 insertions(+), 63 deletions(-) create mode 100644 Vecto3GUI2020Test/TestData/exempted_primary_heavyBus.VIF.xml diff --git a/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLVehicleWriter.cs b/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLVehicleWriter.cs index 9be3eb5d59..b7cb66ceea 100644 --- a/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLVehicleWriter.cs +++ b/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLVehicleWriter.cs @@ -51,7 +51,6 @@ namespace VECTO3GUI2020.Util.XML.Implementation { if (_Xelement == null) { Initialize(); - CreateElements(); } return _Xelement; @@ -192,12 +191,13 @@ namespace VECTO3GUI2020.Util.XML.Implementation public class XMLVehicleWriter_v2_8 : XMLVehicleWriter { + private readonly bool _exempted; public static readonly string[] SUPPORTEDVERSIONS = { typeof(DeclarationInterimStageBusVehicleViewModel_v2_8).ToString() }; public XMLVehicleWriter_v2_8(IVehicleDeclarationInputData inputData, IXMLWriterFactory xmlWriterFactory) : base(inputData, xmlWriterFactory) { - + _exempted = inputData.ExemptedVehicle; } @@ -210,13 +210,20 @@ namespace VECTO3GUI2020.Util.XML.Implementation _Xelement = new XElement(XMLNamespaces.V20 + XMLNames.Component_Vehicle); _Xelement.Add(new XAttribute(XMLNames.Component_ID_Attr, "TODO_ADDIDENTIFIER")); - _Xelement.Add(new XAttribute(XMLNamespaces.Xsi + XMLNames.Attr_Type, "InterimStageInputType")); + if (_exempted) { + _Xelement.Add(new XAttribute(XMLNamespaces.Xsi + XMLNames.Attr_Type, "ExemptedInterimStageInputType")); + } else { + _Xelement.Add(new XAttribute(XMLNamespaces.Xsi + XMLNames.Attr_Type, "InterimStageInputType")); + } + } protected override void CreateElements() { - - + if (_exempted) { + CreateExemptedElements(); + return; + } _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Component_Manufacturer, _inputData.Manufacturer)); _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Component_ManufacturerAddress, _inputData.ManufacturerAddress)); @@ -226,14 +233,10 @@ namespace VECTO3GUI2020.Util.XML.Implementation _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Component_Model, _inputData.Model)); _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_LegislativeCategory, _inputData.LegislativeClass.ToXMLFormat())); - - - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_CorrectedActualMass, _inputData.CurbMassChassis?.ToXMLFormat(0))); _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Vehicle_TPMLM, _inputData.GrossVehicleMassRating?.ToXMLFormat(0))); - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_AirdragModifiedMultistage, _inputData.AirdragModifiedMultistage)); _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Vehicle_NgTankSystem, _inputData.TankSystem)); _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Vehicle_RegisteredClass, _inputData.RegisteredClass.ToXMLFormat())); @@ -246,7 +249,6 @@ namespace VECTO3GUI2020.Util.XML.Implementation _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_LowEntry, _inputData.LowEntry)); - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_HeighIntegratedBody, _inputData.Height?.ConvertToMilliMeter())); _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_VehicleLength, _inputData.Length?.ConvertToMilliMeter())); @@ -309,6 +311,33 @@ namespace VECTO3GUI2020.Util.XML.Implementation } + private void CreateExemptedElements() + { + _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Component_Manufacturer, _inputData.Manufacturer)); + _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Component_ManufacturerAddress, + _inputData.ManufacturerAddress)); + + _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Vehicle_VIN, _inputData.VIN)); + _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Component_Date, DateTime.Today.ToXmlFormat())); + _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Component_Model, _inputData.Model)); + _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_LegislativeCategory, _inputData.LegislativeClass.ToXMLFormat())); + + _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_CorrectedActualMass, _inputData.CurbMassChassis?.ToXMLFormat(0))); + _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Vehicle_TPMLM, + _inputData.GrossVehicleMassRating?.ToXMLFormat(0))); + + + _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Vehicle_RegisteredClass, _inputData.RegisteredClass.ToXMLFormat())); + + _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_NumberPassengersLowerDeck, _inputData.NumberPassengerSeatsLowerDeck)); + _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_NumberPassengersUpperDeck, _inputData.NumberPassengerSeatsUpperDeck)); + _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Vehicle_BodyworkCode, _inputData.VehicleCode.ToXMLFormat())); + + _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_LowEntry, _inputData.LowEntry)); + + _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_HeighIntegratedBody, _inputData.Height?.ConvertToMilliMeter())); + } + #endregion } diff --git a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/InterimStageBusVehicleViewModel_v2_8.cs b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/InterimStageBusVehicleViewModel_v2_8.cs index e97eaac8d4..cf66a80242 100644 --- a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/InterimStageBusVehicleViewModel_v2_8.cs +++ b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/InterimStageBusVehicleViewModel_v2_8.cs @@ -14,6 +14,7 @@ using System.Xml; using Castle.Core.Internal; using Microsoft.Build.Framework; using TUGraz.VectoCommon.BusAuxiliaries; +using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Utils; @@ -340,6 +341,16 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation public void SetVehicleInputData(IVehicleDeclarationInputData vehicleInputData) { + if (vehicleInputData.ExemptedVehicle != ExemptedVehicle) { + throw new VectoException("Only exempted stage inputs are allowed"); + } + + if (ExemptedVehicle) { + SetExemptedVehicleInputData(vehicleInputData); + return; + } + + Manufacturer = vehicleInputData.Manufacturer; Identifier = vehicleInputData.Identifier; ManufacturerAddress = vehicleInputData.ManufacturerAddress; @@ -383,6 +394,23 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation OnPropertyChanged(string.Empty); } + private void SetExemptedVehicleInputData(IVehicleDeclarationInputData vehicleInputData) + { + Debug.Assert(vehicleInputData.ExemptedVehicle); + Manufacturer = vehicleInputData.Manufacturer; + Identifier = vehicleInputData.Identifier; + ManufacturerAddress = vehicleInputData.ManufacturerAddress; + VIN = vehicleInputData.VIN; + Model = vehicleInputData.Model; + LegislativeClass = vehicleInputData.LegislativeClass; + CurbMassChassis = vehicleInputData.CurbMassChassis; + GrossVehicleMassRating = vehicleInputData.GrossVehicleMassRating; + RegisteredClass = vehicleInputData.RegisteredClass; + NumberPassengerSeatsUpperDeck = vehicleInputData.NumberPassengerSeatsUpperDeck; + NumberPassengerSeatsLowerDeck = vehicleInputData.NumberPassengerSeatsLowerDeck; + VehicleCode = vehicleInputData.VehicleCode; + Height = vehicleInputData.Height; + } @@ -739,12 +767,12 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation public IAirdragDeclarationInputData AirdragInputData { - get => MultistageAirdragViewModel.AirDragViewModel; + get => MultistageAirdragViewModel?.AirDragViewModel; } public IBusAuxiliariesDeclarationData BusAuxiliaries { - get => MultistageAuxiliariesViewModel.HasValues ? MultistageAuxiliariesViewModel : null; + get => MultistageAuxiliariesViewModel != null && MultistageAuxiliariesViewModel.HasValues ? MultistageAuxiliariesViewModel : null; } #region not implemented @@ -1138,7 +1166,8 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation { get { - return !Error.IsNullOrEmpty() || MultistageAuxiliariesViewModel.HasErrors; + return !Error.IsNullOrEmpty() || + (MultistageAuxiliariesViewModel != null && MultistageAuxiliariesViewModel.HasErrors); } } #endregion diff --git a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageJobViewModel_v0_1.cs b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageJobViewModel_v0_1.cs index c44443fdd1..e7fc911c90 100644 --- a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageJobViewModel_v0_1.cs +++ b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageJobViewModel_v0_1.cs @@ -41,6 +41,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation public interface IMultiStageJobViewModel : IDeclarationMultistageJobInputData, IMultistageVIFInputData, IMultistageBusInputDataProvider, IJobViewModel, IEditViewModel { IManufacturingStageViewModel ManufacturingStageViewModel { get; } + bool Exempted { get; } } @@ -75,10 +76,10 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation _dialogHelper = multistageDependencies.DialogHelperLazy; _inputDataReader = inputDataReader; - var exempted = PrimaryVehicle.Vehicle.ExemptedVehicle; + _exempted = PrimaryVehicle.Vehicle.ExemptedVehicle; _manufacturingStageViewModel = - vmFactory.GetManufacturingStageViewModel(_consolidateManufacturingStage, exempted); + vmFactory.GetManufacturingStageViewModel(_consolidateManufacturingStage, _exempted); // QUESTION: HEV/PEV ? //var hybridElectric = inputData.PrimaryVehicleData.Vehicle.HybridElectricHDV; @@ -221,7 +222,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation SaveInputDataExecute(filename:null); }, () => true); - private void SaveInputDataExecute(string filename) + public void SaveInputDataExecute(string filename) { if(_manufacturingStageViewModel.Vehicle is IMultistageVehicleViewModel vehicleViewModel) { @@ -306,6 +307,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation private readonly DataSource _dataSource; private readonly IMultistageBusInputDataProvider _inputData; private bool _selected; + private readonly bool _exempted; public ICommand LoadVehicleDataCommand { @@ -434,6 +436,8 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation public string Name => "Multistage"; + public bool Exempted => _exempted; + #endregion } diff --git a/VECTO3GUI2020/Views/Multistage/MultiStageView.xaml b/VECTO3GUI2020/Views/Multistage/MultiStageView.xaml index 449554b41c..357289757c 100644 --- a/VECTO3GUI2020/Views/Multistage/MultiStageView.xaml +++ b/VECTO3GUI2020/Views/Multistage/MultiStageView.xaml @@ -13,7 +13,8 @@ <customControls:FilePicker DockPanel.Dock="Top" Command="{Binding LoadVehicleDataCommand}" - Text="{Binding VehicleInputDataFilePath, TargetNullValue=Select Vehicle Input Data . . .}"></customControls:FilePicker> + Text="{Binding VehicleInputDataFilePath, TargetNullValue=Select Vehicle Input Data . . .}"/> + <Label DockPanel.Dock="Top" HorizontalAlignment="Center" Visibility="{Binding Exempted}">Exempted Vehicle</Label> <Border BorderThickness="1" BorderBrush="{DynamicResource ButtonHighlightColor}" Height="40" DockPanel.Dock="Bottom"> <DockPanel LastChildFill="False"> <Button DockPanel.Dock="Right" @@ -46,7 +47,6 @@ </DockPanel> </Border> <ContentControl DockPanel.Dock="Top" Content="{Binding ManufacturingStageViewModel}"/> - </DockPanel> </Grid> </UserControl> diff --git a/VECTO3GUI2020/Views/Multistage/VehicleView_v2_8_exempted.xaml b/VECTO3GUI2020/Views/Multistage/VehicleView_v2_8_exempted.xaml index 0e6f60a872..21ae48bcda 100644 --- a/VECTO3GUI2020/Views/Multistage/VehicleView_v2_8_exempted.xaml +++ b/VECTO3GUI2020/Views/Multistage/VehicleView_v2_8_exempted.xaml @@ -28,31 +28,18 @@ <ContentControl Content="{Binding ParameterViewModels[CurbMassChassis]}"/> <ContentControl Content="{Binding ParameterViewModels[GrossVehicleMassRating]}"/> <ContentControl Content="{Binding ParameterViewModels[RegisteredClass]}"/> - - - - <Separator/> - <ContentControl Content="{Binding ParameterViewModels[VehicleCode]}"/> - <ContentControl Content="{Binding ParameterViewModels[LowEntry]}"/> - <Separator/> - <ContentControl Content="{Binding ParameterViewModels[HeightInMm]}"/> - <Separator/> <Label Style="{DynamicResource LabelStyle1}">Number of Passengers</Label> <ContentControl Content="{Binding ParameterViewModels[NumberPassengerSeatsLowerDeck]}"/> <ContentControl Content="{Binding ParameterViewModels[NumberPassengerSeatsUpperDeck]}"/> - <ContentControl - Content="{Binding ParameterViewModels[NumberPassengersStandingLowerDeck]}"/> - <ContentControl - Content="{Binding ParameterViewModels[NumberPassengersStandingUpperDeck]}"/> diff --git a/Vecto3GUI2020Test/TestData/exempted_primary_heavyBus.VIF.xml b/Vecto3GUI2020Test/TestData/exempted_primary_heavyBus.VIF.xml new file mode 100644 index 0000000000..ef4e364d6b --- /dev/null +++ b/Vecto3GUI2020Test/TestData/exempted_primary_heavyBus.VIF.xml @@ -0,0 +1,60 @@ +<?xml version="1.0" encoding="utf-8"?> +<VectoOutputMultistage xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3" xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:v2.8="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1 V:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistage.0.1.xsd"> + <PrimaryVehicle xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1"> + <Data id="VEH-4cb168560c0d4b3d886d" xsi:type="PrimaryVehicleDataType"> + <Vehicle xsi:type="VehicleExemptedPrimaryBusType"> + <ManufacturerPrimaryVehicle>Some Manufacturer</ManufacturerPrimaryVehicle> + <ManufacturerAddressPrimaryVehicle>Infinite Loop 1</ManufacturerAddressPrimaryVehicle> + <Model>Sample Bus Model</Model> + <VIN>VEH-1234567890</VIN> + <Date>2017-02-15T11:00:00Z</Date> + <LegislativeCategory>N2</LegislativeCategory> + <ChassisConfiguration>Bus</ChassisConfiguration> + <AxleConfiguration>6x2</AxleConfiguration> + <Articulated>false</Articulated> + <TechnicalPermissibleMaximumLadenMass unit="kg">15400.0</TechnicalPermissibleMaximumLadenMass> + <ZeroEmissionVehicle>true</ZeroEmissionVehicle> + <SumNetPower unit="W">350000</SumNetPower> + <Technology>Fuel cell vehicle</Technology> + </Vehicle> + <InputDataSignature> + <di:Reference URI="#VEH-1234567890"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <di:DigestValue>sYhNx2MDHaOAMTlPflP/qQbEkazmRDxY0Vw6yzwwcJc=</di:DigestValue> + </di:Reference> + </InputDataSignature> + <ManufacturerRecordSignature> + <di:Reference URI="#RESULT-4c4c52e522874a398b3a"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <di:DigestValue>guwkv90jOyWgDpgQwAEbLRkq7pWGeVaGA+dHizLYufQ=</di:DigestValue> + </di:Reference> + </ManufacturerRecordSignature> + <Results> + <Status>success</Status> + <ExemptedVehicle /> + </Results> + <ApplicationInformation> + <SimulationToolVersion>0.7.3.2247-DEV !!NOT FOR CERTIFICATION!!</SimulationToolVersion> + <Date>2021-06-15T16:00:43.6769906Z</Date> + </ApplicationInformation> + </Data> + <Signature> + <di:Reference URI="#VEH-4cb168560c0d4b3d886d"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <di:DigestValue>KeeEnRNO5Gjm7XB+YYx542ujYbE0k7a9SkWe/BWo7bI=</di:DigestValue> + </di:Reference> + </Signature> + </PrimaryVehicle> +</VectoOutputMultistage> \ No newline at end of file diff --git a/Vecto3GUI2020Test/Vecto3GUI2020Test.csproj b/Vecto3GUI2020Test/Vecto3GUI2020Test.csproj index 5bac291cf2..cf5c33f623 100644 --- a/Vecto3GUI2020Test/Vecto3GUI2020Test.csproj +++ b/Vecto3GUI2020Test/Vecto3GUI2020Test.csproj @@ -109,6 +109,9 @@ <None Update="inputdata\vecto_vehicle-completed_heavyBus_31b.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> + <None Update="TestData\exempted_primary_heavyBus.VIF.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> <None Update="TestData\final.VIF_Report_4.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> diff --git a/Vecto3GUI2020Test/ViewModelTests/LoadAndSaveVehicleData.cs b/Vecto3GUI2020Test/ViewModelTests/LoadAndSaveVehicleData.cs index b1777c717e..daff148eaa 100644 --- a/Vecto3GUI2020Test/ViewModelTests/LoadAndSaveVehicleData.cs +++ b/Vecto3GUI2020Test/ViewModelTests/LoadAndSaveVehicleData.cs @@ -1,4 +1,5 @@ using System; +using System.Configuration; using System.IO; using System.Linq; using System.Runtime.CompilerServices; @@ -29,13 +30,13 @@ namespace Vecto3GUI2020Test public class LoadAndSaveVehicleData : ViewModelTestBase { [Test] - public void loadInputFileMultipleStage() + public void LoadInputFileMultipleStage() { loadFile(consolidated_multiple_stages); } [Test] - public void loadPrimaryAndSaveVehicleData() + public void LoadPrimaryAndSaveVehicleData() { //Load Primary Vehicle VIF var newMultiStageJob = loadFile(primary_vehicle_only); @@ -63,7 +64,7 @@ namespace Vecto3GUI2020Test } [Test] - public void loadPrimaryAndSave() + public void LoadPrimaryAndSave() { //load file var newMultiStageJob = loadFile(primary_vehicle_only); @@ -71,6 +72,79 @@ namespace Vecto3GUI2020Test + } + [Test, Combinatorial] + public void LoadAndSaveExemptedPrimary( + [Values(LegislativeClass.M3)] LegislativeClass legislativeCategory + ) + { + string exempted = "exempted_primary_heavyBus.VIF.xml"; + var newMultiStageJob = loadFile(exempted); + Assert.IsTrue(newMultiStageJob.MultiStageJobViewModel.Exempted); + + + var multistageJobViewModel = newMultiStageJob.MultiStageJobViewModel as MultiStageJobViewModel_v0_1; + + var outputPath = GetFullPath("test1.xml"); + + var vehicleVm = + multistageJobViewModel.ManufacturingStageViewModel.VehicleViewModel as + DeclarationInterimStageBusVehicleViewModel_v2_8; + + Assert.IsTrue(vehicleVm.ExemptedVehicle); + + + var manufacturer = "TestManufacturer"; + var manufacturerAddress = "TestManufacturerAddress"; + var vehicleIdentificationNumber = "12345678"; + var model = "model"; + var curbMassChassis = Kilogram.Create(123456); + var technicalpermissableLadenMass = Kilogram.Create(654321); + var registeredClass = RegistrationClass.II_III; + var bodyWorkCode = VehicleCode.CG; + var lowEntry = false; + var height = Meter.Create(1.5).ConvertToMilliMeter(); + var PassengerSeatsLowerDeck = 4; + var passengerSeatsUpperDeck = 12; + + vehicleVm.ParameterViewModels[nameof(vehicleVm.Manufacturer)].CurrentContent = manufacturer; + + + vehicleVm.ParameterViewModels[nameof(vehicleVm.ManufacturerAddress)].CurrentContent = manufacturerAddress; + vehicleVm.ParameterViewModels[nameof(vehicleVm.HeightInMm)].CurrentContent = height; + vehicleVm.ParameterViewModels[nameof(vehicleVm.VIN)].CurrentContent = vehicleIdentificationNumber; + vehicleVm.ParameterViewModels[nameof(vehicleVm.Model)].CurrentContent = model; + vehicleVm.ParameterViewModels[nameof(vehicleVm.LegislativeClass)].CurrentContent = legislativeCategory; + vehicleVm.ParameterViewModels[nameof(vehicleVm.CurbMassChassis)].CurrentContent = curbMassChassis; + vehicleVm.ParameterViewModels[nameof(vehicleVm.GrossVehicleMassRating)].CurrentContent = technicalpermissableLadenMass; + vehicleVm.ParameterViewModels[nameof(vehicleVm.RegisteredClass)].CurrentContent = registeredClass; + vehicleVm.ParameterViewModels[nameof(vehicleVm.VehicleCode)].CurrentContent = bodyWorkCode; + vehicleVm.ParameterViewModels[nameof(vehicleVm.LowEntry)].CurrentContent = lowEntry; + vehicleVm.ParameterViewModels[nameof(vehicleVm.NumberPassengerSeatsLowerDeck)].CurrentContent = PassengerSeatsLowerDeck; + vehicleVm.ParameterViewModels[nameof(vehicleVm.NumberPassengerSeatsUpperDeck)].CurrentContent = passengerSeatsUpperDeck; + + + multistageJobViewModel.SaveInputDataExecute(outputPath); + + + Assert.AreEqual(outputPath, multistageJobViewModel.VehicleInputDataFilePath); + + Assert.AreEqual( manufacturer, vehicleVm.Manufacturer); + Assert.AreEqual(manufacturerAddress, vehicleVm.ManufacturerAddress); + Assert.AreEqual(height, vehicleVm.HeightInMm); + Assert.AreEqual(model, vehicleVm.Model); + Assert.AreEqual(legislativeCategory, vehicleVm.LegislativeClass); + Assert.AreEqual(curbMassChassis, vehicleVm.CurbMassChassis); + Assert.AreEqual(technicalpermissableLadenMass, vehicleVm.GrossVehicleMassRating); + Assert.AreEqual(registeredClass, vehicleVm.RegisteredClass); + Assert.AreEqual(bodyWorkCode, vehicleVm.VehicleCode); + Assert.AreEqual(lowEntry, vehicleVm.LowEntry); + Assert.AreEqual(passengerSeatsUpperDeck, vehicleVm.NumberPassengerSeatsUpperDeck); + Assert.AreEqual(PassengerSeatsLowerDeck, vehicleVm.NumberPassengerSeatsLowerDeck); + + + + } @@ -96,7 +170,7 @@ namespace Vecto3GUI2020Test } [Test] - public void reloadInputFile() + public void ReloadInputFile() { var newMultistageJobViewModel = loadFile(consolidated_multiple_stages_airdrag) as NewMultiStageJobViewModel; @@ -120,13 +194,13 @@ namespace Vecto3GUI2020Test [Test] - public void loadInputFileMultipleStageAirdrag() + public void LoadInputFileMultipleStageAirdrag() { loadFile(consolidated_multiple_stages_airdrag); } [Test] - public void loadAndSaveFullInputDataSample() + public void LoadAndSaveFullInputDataSample() { var vm = loadFile(primary_vehicle_only); var multiStageJobViewModel = vm.MultiStageJobViewModel as MultiStageJobViewModel_v0_1; @@ -191,33 +265,33 @@ namespace Vecto3GUI2020Test Assert.IsTrue(vehicleViewModel.VIN.IsNullOrEmpty()); Assert.IsNull(vehicleViewModel.Model); - var vehicleViewModel_v2_8 = vehicleViewModel as DeclarationInterimStageBusVehicleViewModel_v2_8; - Assert.NotNull(vehicleViewModel_v2_8); + var vehicleViewModelV28 = vehicleViewModel as DeclarationInterimStageBusVehicleViewModel_v2_8; + Assert.NotNull(vehicleViewModelV28); - Assert.Null(vehicleViewModel_v2_8.HeightInMm); - Assert.Null(vehicleViewModel_v2_8.LengthInMm); - Assert.Null(vehicleViewModel_v2_8.WidthInMm); - Assert.Null(vehicleViewModel_v2_8.EntranceHeightInMm); + Assert.Null(vehicleViewModelV28.HeightInMm); + Assert.Null(vehicleViewModelV28.LengthInMm); + Assert.Null(vehicleViewModelV28.WidthInMm); + Assert.Null(vehicleViewModelV28.EntranceHeightInMm); - Assert.Null(vehicleViewModel_v2_8.ConsolidatedHeightInMm); - Assert.Null(vehicleViewModel_v2_8.ConsolidatedLengthInMm); - Assert.Null(vehicleViewModel_v2_8.ConsolidatedWidthInMm); - Assert.Null(vehicleViewModel_v2_8.ConsolidatedEntranceHeightInMm); + Assert.Null(vehicleViewModelV28.ConsolidatedHeightInMm); + Assert.Null(vehicleViewModelV28.ConsolidatedLengthInMm); + Assert.Null(vehicleViewModelV28.ConsolidatedWidthInMm); + Assert.Null(vehicleViewModelV28.ConsolidatedEntranceHeightInMm); - Assert.IsFalse(vehicleViewModel_v2_8.AirdragModifiedMultistageEditingEnabled); + Assert.IsFalse(vehicleViewModelV28.AirdragModifiedMultistageEditingEnabled); - Assert.IsNull(vehicleViewModel_v2_8.AirdragModifiedMultistage); - Assert.IsNull(vehicleViewModel_v2_8.ConsolidatedAirdragModifiedEnum); - Assert.IsTrue(vehicleViewModel_v2_8.AirdragModifiedEnum == AIRDRAGMODIFIED.UNKNOWN || vehicleViewModel_v2_8.AirdragModifiedEnum == null); + Assert.IsNull(vehicleViewModelV28.AirdragModifiedMultistage); + Assert.IsNull(vehicleViewModelV28.ConsolidatedAirdragModifiedEnum); + Assert.IsTrue(vehicleViewModelV28.AirdragModifiedEnum == AIRDRAGMODIFIED.UNKNOWN || vehicleViewModelV28.AirdragModifiedEnum == null); - Assert.AreEqual(vehicleViewModel_v2_8.AirdragModifiedMultistageEditingEnabled, false); + Assert.AreEqual(vehicleViewModelV28.AirdragModifiedMultistageEditingEnabled, false); - Assert.Null(vehicleViewModel_v2_8.BusAuxiliaries); + Assert.Null(vehicleViewModelV28.BusAuxiliaries); var vifInputData = vm.MultiStageJobViewModel as IMultistageVIFInputData; @@ -229,7 +303,7 @@ namespace Vecto3GUI2020Test [TestCase(consolidated_multiple_stages, null)] [TestCase(consolidated_one_stage, null)] [TestCase(primary_vehicle_only, null)] - public void loadAirdragComponentAndSaveVehicleData(string fileName, object expectedAirdragModifiedValue) + public void LoadAirdragComponentAndSaveVehicleData(string fileName, object expectedAirdragModifiedValue) { var vm = loadFile(fileName); @@ -291,7 +365,7 @@ namespace Vecto3GUI2020Test [Test] - public void loadVehicleDataTest() + public void LoadVehicleDataTest() { @@ -382,7 +456,7 @@ namespace Vecto3GUI2020Test Assert.NotNull(airdrag.AirDragViewModel.XMLSource); - TestADASInput(vehicleViewModel); + TestAdasInput(vehicleViewModel); TestComponents(vehicleViewModel.Components); TestAirdragComponent(vehicleViewModel.Components.AirdragInputData); TestAuxiliariesComponent(vehicleViewModel.BusAuxiliaries); @@ -392,7 +466,7 @@ namespace Vecto3GUI2020Test } - private void TestADASInput(IVehicleDeclarationInputData vehicle) + private void TestAdasInput(IVehicleDeclarationInputData vehicle) { Assert.AreEqual(true, vehicle.ADAS.EngineStopStart); Assert.AreEqual(EcoRollType.None, vehicle.ADAS.EcoRoll); diff --git a/Vecto3GUI2020Test/ViewModelTests/ViewModelTestBase.cs b/Vecto3GUI2020Test/ViewModelTests/ViewModelTestBase.cs index e896552e22..f74f91c18f 100644 --- a/Vecto3GUI2020Test/ViewModelTests/ViewModelTestBase.cs +++ b/Vecto3GUI2020Test/ViewModelTests/ViewModelTestBase.cs @@ -104,16 +104,18 @@ namespace Vecto3GUI2020Test var manstageVehicleViewModel = newMultistageJobViewModel.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as DeclarationInterimStageBusVehicleViewModel_v2_8; Assert.NotNull(manstageVehicleViewModel); - var auxiliariesViewModel = manstageVehicleViewModel.MultistageAuxiliariesViewModel; - Assert.NotNull(auxiliariesViewModel); - + Assert.AreEqual(mockDialogHelper.Object.OpenXMLFileDialog(), newMultistageJobViewModel.VifPath); + if (!manstageVehicleViewModel.ExemptedVehicle) { + var auxiliariesViewModel = manstageVehicleViewModel.MultistageAuxiliariesViewModel; + Assert.NotNull(auxiliariesViewModel); + var airdragViewModel = (manstageVehicleViewModel as DeclarationInterimStageBusVehicleViewModel_v2_8)?.MultistageAirdragViewModel; + Assert.NotNull(airdragViewModel); + } + - var airdragViewModel = (manstageVehicleViewModel as DeclarationInterimStageBusVehicleViewModel_v2_8)?.MultistageAirdragViewModel; - Assert.NotNull(airdragViewModel); - Assert.AreEqual(mockDialogHelper.Object.OpenXMLFileDialog(), newMultistageJobViewModel.VifPath); @@ -132,6 +134,11 @@ namespace Vecto3GUI2020Test (message, caption, button, image) => { TestContext.WriteLine($"{caption}\n {message}"); })); + + _mockDialogHelper.Setup(dialogHelper => + dialogHelper.ShowMessageBox(It.IsAny<string>(), It.IsAny<string>())) + .Callback<string, string>((message, caption) => + TestContext.WriteLine($"{{caption}}\n {message}")); } if (fileToLoad != null) { var filePath = Path.GetFullPath(TestDataDirPath + fileToLoad); -- GitLab