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

Skip to content
Snippets Groups Projects
Commit a0dccc9a authored by Markus QUARITSCH's avatar Markus QUARITSCH
Browse files

Merge branch 'feature/VECTO-1410-multistage-tool-buses' of...

Merge branch 'feature/VECTO-1410-multistage-tool-buses' of git+ssh://129.27.107.191:2211/vecto-dev into test
parents 4a93a890 91acf6e5
No related branches found
No related tags found
No related merge requests found
Showing
with 1987 additions and 227 deletions
...@@ -218,3 +218,4 @@ Documentation/VehiclesReleaseComparisonDeclarationMode/tmp/ ...@@ -218,3 +218,4 @@ Documentation/VehiclesReleaseComparisonDeclarationMode/tmp/
/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/test.VIF_Report_5.xml /VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/test.VIF_Report_5.xml
/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/tests.xml /VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/tests.xml
/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/finalGroup41.VIF_Report_4.xml /VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/finalGroup41.VIF_Report_4.xml
/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/output
...@@ -77,10 +77,12 @@ namespace VECTO3GUI2020.Helper ...@@ -77,10 +77,12 @@ namespace VECTO3GUI2020.Helper
Action<MultistageParameterViewModel> propertyChangedCallback = null, Action<MultistageParameterViewModel> propertyChangedCallback = null,
params ResourceManager[] resourceManagers) params ResourceManager[] resourceManagers)
{ {
_propertyName = propertyName; _propertyName = propertyName;
PreviousContent = previousContent; PreviousContent = previousContent;
_propertyChangedCallback = propertyChangedCallback; _propertyChangedCallback = propertyChangedCallback;
_parentViewModel = parentViewModel; _parentViewModel = parentViewModel;
//_parentViewModel.PropertyChanged += ParentViewModelPropertyChanged;
_propertyInfo = parentViewModel.GetType().GetProperty(propertyName); _propertyInfo = parentViewModel.GetType().GetProperty(propertyName);
_viewMode = viewMode; _viewMode = viewMode;
...@@ -110,6 +112,20 @@ namespace VECTO3GUI2020.Helper ...@@ -110,6 +112,20 @@ namespace VECTO3GUI2020.Helper
CurrentContent = _propertyInfo.GetValue(parentViewModel); CurrentContent = _propertyInfo.GetValue(parentViewModel);
} }
private void ParentViewModelPropertyChanged(object sender, PropertyChangedEventArgs e)
{
Debug.Assert((IViewModelBase)sender == _parentViewModel);
if (e.PropertyName != _propertyName) {
return;
}
var valueFromParent = _propertyInfo.GetValue(sender);
if (valueFromParent != CurrentContent) {
CurrentContent = valueFromParent;
}
}
private object CreateDummyContent() private object CreateDummyContent()
{ {
var type = _type; var type = _type;
...@@ -278,6 +294,7 @@ namespace VECTO3GUI2020.Helper ...@@ -278,6 +294,7 @@ namespace VECTO3GUI2020.Helper
_propertyInfo.SetValue(_parentViewModel, _currentContent); _propertyInfo.SetValue(_parentViewModel, _currentContent);
_propertyChangedCallback?.Invoke(this); _propertyChangedCallback?.Invoke(this);
}; };
OnPropertyChanged(nameof(CurrentContent));
} }
} }
......
...@@ -25,7 +25,10 @@ namespace VECTO3GUI2020.Util.XML.Implementation.ComponentWriter ...@@ -25,7 +25,10 @@ namespace VECTO3GUI2020.Util.XML.Implementation.ComponentWriter
public XMLAirDragWriter(IAirdragDeclarationInputData inputData) public XMLAirDragWriter(IAirdragDeclarationInputData inputData)
{ {
_inputData = inputData; _inputData = inputData;
_uri = inputData.DigestValue.Reference.Replace("#",""); _uri = inputData.DigestValue?.Reference?.Replace("#","");
if (_uri == null) {
_uri = "AirdragComponent" + Guid.NewGuid().ToString("n").Substring(0, 20);
}
} }
public XElement GetElement() public XElement GetElement()
......
...@@ -159,7 +159,7 @@ namespace VECTO3GUI2020.ViewModel.Implementation ...@@ -159,7 +159,7 @@ namespace VECTO3GUI2020.ViewModel.Implementation
cancellationTokenSource = new CancellationTokenSource(); cancellationTokenSource = new CancellationTokenSource();
SimulationRunning = true; SimulationRunning = true;
await Task.Run(() => RunSimulationAsync(cancellationTokenSource.Token, await Task.Run(() => RunSimulationAsync(cancellationTokenSource.Token,
new Progress<MessageEntry>((message) => { _outputViewModel.Messages.Add(message); }), new Progress<MessageEntry>((message) => { _outputViewModel.AddMessage(message); }),
new Progress<int>((i) => _outputViewModel.Progress = i), new Progress<int>((i) => _outputViewModel.Progress = i),
new Progress<string>((msg) => _outputViewModel.StatusMessage = msg))); new Progress<string>((msg) => _outputViewModel.StatusMessage = msg)));
SimulationRunning = false; SimulationRunning = false;
...@@ -369,6 +369,8 @@ namespace VECTO3GUI2020.ViewModel.Implementation ...@@ -369,6 +369,8 @@ namespace VECTO3GUI2020.ViewModel.Implementation
var duration = start.Elapsed.TotalSeconds; var duration = start.Elapsed.TotalSeconds;
jobProgress.Select(x => x.Value.Progress); jobProgress.Select(x => x.Value.Progress);
progress.Report(Convert.ToInt32(sumProgress * 100 / jobProgress.Count)); progress.Report(Convert.ToInt32(sumProgress * 100 / jobProgress.Count));
status.Report(string.Format( status.Report(string.Format(
"Duration: {0:F1}s, Current Progress: {1:P} ({2})", duration, sumProgress / jobProgress.Count, "Duration: {0:F1}s, Current Progress: {1:P} ({2})", duration, sumProgress / jobProgress.Count,
...@@ -444,6 +446,9 @@ namespace VECTO3GUI2020.ViewModel.Implementation ...@@ -444,6 +446,9 @@ namespace VECTO3GUI2020.ViewModel.Implementation
Type = MessageType.StatusMessage, Type = MessageType.StatusMessage,
Message = string.Format("Simulation finished in {0:F1}s", start.Elapsed.TotalSeconds) Message = string.Format("Simulation finished in {0:F1}s", start.Elapsed.TotalSeconds)
}); });
status.Report($"Simulation finished in {start.Elapsed.TotalSeconds} s");
} }
private void PrintRuns(Dictionary<int, JobContainer.ProgressEntry> progress, Dictionary<int, FileOutputWriter> fileWriters, IProgress<MessageEntry> outputMessages) private void PrintRuns(Dictionary<int, JobContainer.ProgressEntry> progress, Dictionary<int, FileOutputWriter> fileWriters, IProgress<MessageEntry> outputMessages)
{ {
...@@ -510,7 +515,7 @@ namespace VECTO3GUI2020.ViewModel.Implementation ...@@ -510,7 +515,7 @@ namespace VECTO3GUI2020.ViewModel.Implementation
get get
{ {
return _cancelSimulationCommand ?? new RelayCommand(() => { return _cancelSimulationCommand ?? new RelayCommand(() => {
_outputViewModel.Messages.Add(new MessageEntry() { _outputViewModel.AddMessage(new MessageEntry() {
Message="Canceling Simulation", Message="Canceling Simulation",
Type=MessageType.StatusMessage, Type=MessageType.StatusMessage,
}); });
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using System.Windows.Data; using System.Windows.Data;
using Microsoft.WindowsAPICodePack.Shell.Interop;
using VECTO3GUI2020.ViewModel.Implementation; using VECTO3GUI2020.ViewModel.Implementation;
using VECTO3GUI2020.ViewModel.Implementation.Common; using VECTO3GUI2020.ViewModel.Implementation.Common;
using VECTO3GUI2020.ViewModel.Interfaces; using VECTO3GUI2020.ViewModel.Interfaces;
...@@ -22,6 +23,13 @@ namespace VECTO3GUI2020.ViewModel ...@@ -22,6 +23,13 @@ namespace VECTO3GUI2020.ViewModel
get { return _messages; } get { return _messages; }
} }
public void AddMessage(MessageEntry messageEntry)
{
lock (_messageLock) {
Messages.Add(messageEntry);
}
}
public int Progress public int Progress
{ {
get => _progress; get => _progress;
...@@ -43,9 +51,10 @@ namespace VECTO3GUI2020.ViewModel ...@@ -43,9 +51,10 @@ namespace VECTO3GUI2020.ViewModel
public interface IOutputViewModel : IMainViewModel public interface IOutputViewModel : IMainViewModel
{ {
ObservableCollection<MessageEntry> Messages { get; } //ObservableCollection<MessageEntry> Messages { get; }
int Progress { get; set; } int Progress { get; set; }
string StatusMessage { get; set; } string StatusMessage { get; set; }
void AddMessage(MessageEntry messageEntry);
} }
} }
\ No newline at end of file
namespace VECTO3GUI2020.ViewModel.Interfaces.Common using System.ComponentModel;
namespace VECTO3GUI2020.ViewModel.Interfaces.Common
{ {
public interface IViewModelBase public interface IViewModelBase : INotifyPropertyChanged
{ {
string Title { get; set; } string Title { get; set; }
} }
......
...@@ -151,14 +151,9 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation ...@@ -151,14 +151,9 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
MultistageAirdragViewModel.AirdragViewModelChanged += ((sender, args) => { MultistageAirdragViewModel.AirdragViewModelChanged += ((sender, args) => {
if (sender is IMultistageAirdragViewModel vm) { if (sender is IMultistageAirdragViewModel vm) {
if (AirdragModifiedMultistageMandatory) { if (AirdragModifiedMultistageMandatory) {
if (vm.AirDragViewModel != null) if (vm.AirDragViewModel != null) {
{
AirdragModifiedMultistage = true; AirdragModifiedMultistage = true;
} }
else
{
AirdragModifiedMultistage = false;
}
} }
} }
}); });
...@@ -173,13 +168,13 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation ...@@ -173,13 +168,13 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
if (consolidatedVehicleData?.AirdragModifiedMultistage != null) if (consolidatedVehicleData?.AirdragModifiedMultistage != null)
{ {
_airdragModifiedMultistageMandatory = true; AirdragModifiedMultistageMandatory = true;
AirdragModifiedMultistageEditingEnabled = true; AirdragModifiedMultistageEditingEnabled = true;
} }
if (consolidatedVehicleData?.Components?.AirdragInputData != null) if (consolidatedVehicleData?.Components?.AirdragInputData != null)
{ {
_airdragModifiedMultistageMandatory = true; AirdragModifiedMultistageMandatory = true;
AirdragModifiedMultistageEditingEnabled = true; AirdragModifiedMultistageEditingEnabled = true;
} }
} }
...@@ -614,11 +609,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation ...@@ -614,11 +609,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
{ {
get get
{ {
if (AirdragModifiedMultistageEditingEnabled) { return _airdragModifiedMultistage.toAirdragModifiedEnum();
return _airdragModifiedMultistage.toAirdragModifiedEnum();
} else {
return null;
}
} }
set set
{ {
...@@ -626,10 +617,10 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation ...@@ -626,10 +617,10 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
var newVal = value?.toNullableBool(); var newVal = value?.toNullableBool();
if (prevVal != newVal) { if (prevVal != newVal) {
AirdragModifiedMultistage = value?.toNullableBool(); AirdragModifiedMultistage = value?.toNullableBool();
if (_parameterViewModels.ContainsKey(nameof(AirdragModifiedEnum))) }
{ if (_parameterViewModels.ContainsKey(nameof(AirdragModifiedEnum)))
_parameterViewModels[nameof(AirdragModifiedEnum)].CurrentContent = value; {
} _parameterViewModels[nameof(AirdragModifiedEnum)].CurrentContent = value;
} }
} }
} }
...@@ -650,14 +641,23 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation ...@@ -650,14 +641,23 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
public bool? AirdragModifiedMultistage public bool? AirdragModifiedMultistage
{ {
get => _airdragModifiedMultistage; get
{
return _airdragModifiedMultistage;
}
set set
{ {
if (SetProperty(ref _airdragModifiedMultistage, value)) { if (SetProperty(ref _airdragModifiedMultistage, value)) {
if(value == false){
MultistageAirdragViewModel.AirDragViewModel = null;
} else {
MultistageAirdragViewModel.RestoreAirdragViewModel();
}
AirdragModifiedEnum = value.toAirdragModifiedEnum(); AirdragModifiedEnum = value.toAirdragModifiedEnum();
}; };
} }
} }
public bool AirdragModifiedMultistageMandatory public bool AirdragModifiedMultistageMandatory
{ {
get => _airdragModifiedMultistageMandatory; get => _airdragModifiedMultistageMandatory;
......
...@@ -80,6 +80,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation ...@@ -80,6 +80,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
public ManufacturingStageViewModel_v0_1(IManufacturingStageInputData consolidatedManufacturingStageInputData, IMultiStageViewModelFactory viewModelFactory) public ManufacturingStageViewModel_v0_1(IManufacturingStageInputData consolidatedManufacturingStageInputData, IMultiStageViewModelFactory viewModelFactory)
{ {
Title = "Edit Manufacturing Stage";
_viewModelFactory = viewModelFactory; _viewModelFactory = viewModelFactory;
_stageCount = consolidatedManufacturingStageInputData?.StageCount + 1 ?? 2; _stageCount = consolidatedManufacturingStageInputData?.StageCount + 1 ?? 2;
......
...@@ -17,6 +17,7 @@ using TUGraz.VectoCommon.Utils; ...@@ -17,6 +17,7 @@ using TUGraz.VectoCommon.Utils;
using TUGraz.VectoCore.InputData.FileIO.XML; using TUGraz.VectoCore.InputData.FileIO.XML;
using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider; using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider;
using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Factory; using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Factory;
using TUGraz.VectoCore.Models.Declaration;
using TUGraz.VectoCore.Utils; using TUGraz.VectoCore.Utils;
using VECTO3GUI2020.Helper; using VECTO3GUI2020.Helper;
using VECTO3GUI2020.Ninject; using VECTO3GUI2020.Ninject;
...@@ -54,12 +55,29 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation ...@@ -54,12 +55,29 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
get => _airdragViewModel; get => _airdragViewModel;
set set
{ {
StoreAirdragViewModel();
if (SetProperty(ref _airdragViewModel, value)) { if (SetProperty(ref _airdragViewModel, value)) {
OnAirdragViewModelChanged(); OnAirdragViewModelChanged();
}; };
} }
} }
private void StoreAirdragViewModel()
{
if (AirDragViewModel != null && StoredAirdragViewModel != AirDragViewModel) {
StoredAirdragViewModel = AirDragViewModel;
}
}
public void RestoreAirdragViewModel()
{
if (AirDragViewModel == null) {
AirDragViewModel = StoredAirdragViewModel;
}
}
private IAirDragViewModel StoredAirdragViewModel { get; set; } = null;
public void SetAirdragInputData(IAirdragDeclarationInputData airdragInputData) public void SetAirdragInputData(IAirdragDeclarationInputData airdragInputData)
{ {
...@@ -120,7 +138,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation ...@@ -120,7 +138,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
} }
internal bool LoadAirdragFile(string fileName) public bool LoadAirdragFile(string fileName)
{ {
var success = true; var success = true;
var errorStringBuilder = new StringBuilder(); var errorStringBuilder = new StringBuilder();
...@@ -185,13 +203,20 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation ...@@ -185,13 +203,20 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
public ICommand RemoveAirdragDataCommand{ public ICommand RemoveAirdragDataCommand{
get => _removeAirdragDataCommand ?? new RelayCommand(() => { get => _removeAirdragDataCommand ?? new RelayCommand(() => {
AirDragViewModel = null; RemoveAirdragComponent();
OnPropertyChanged(nameof(AirdragFilePath)); OnPropertyChanged(nameof(AirdragFilePath));
}, () => AirDragViewModel != null); }, () => AirDragViewModel != null);
} }
#endregion #endregion
public void RemoveAirdragComponent()
{
AirDragViewModel = null;
StoredAirdragViewModel = null;
OnPropertyChanged(nameof(AirdragFilePath));
}
......
...@@ -63,7 +63,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation ...@@ -63,7 +63,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
public MultiStageJobViewModel_v0_1(IMultistageBusInputDataProvider inputData, IMultiStageViewModelFactory vmFactory, IMultistageDependencies multistageDependencies, IXMLInputDataReader inputDataReader) public MultiStageJobViewModel_v0_1(IMultistageBusInputDataProvider inputData, IMultiStageViewModelFactory vmFactory, IMultistageDependencies multistageDependencies, IXMLInputDataReader inputDataReader)
{ {
Title = "Edit Multistage Job";
_dataSource = inputData.DataSource; _dataSource = inputData.DataSource;
_jobInputData = inputData.JobInputData; _jobInputData = inputData.JobInputData;
_inputData = inputData; _inputData = inputData;
......
...@@ -10,5 +10,9 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Interfaces ...@@ -10,5 +10,9 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Interfaces
IAirDragViewModel AirDragViewModel { get; set; } IAirDragViewModel AirDragViewModel { get; set; }
void SetAirdragInputData(IAirdragDeclarationInputData airdragInputData); void SetAirdragInputData(IAirdragDeclarationInputData airdragInputData);
bool LoadAirdragFile(string fileName);
void RestoreAirdragViewModel();
void RemoveAirdragComponent();
} }
} }
\ No newline at end of file
...@@ -9,67 +9,83 @@ ...@@ -9,67 +9,83 @@
mc:Ignorable="d" mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800" d:DataContext="{d:DesignData Type=viewModel:IOutputViewModel}"> d:DesignHeight="450" d:DesignWidth="800" d:DataContext="{d:DesignData Type=viewModel:IOutputViewModel}">
<Grid> <Grid>
<DockPanel> <DockPanel LastChildFill="False">
<ProgressBar DockPanel.Dock="Top" Minimum="0" Maximum="100" Value="{Binding Progress}"></ProgressBar> <ProgressBar DockPanel.Dock="Top"
<DataGrid DockPanel.Dock="Top" ItemsSource="{Binding Messages}" BorderThickness="1" CanUserAddRows="False" AutoGenerateColumns="False" SelectionUnit="FullRow" Minimum="0"
IsReadOnly="True" HeadersVisibility="All" RowHeaderWidth="5" Name="MessageList"> Maximum="100"
Value="{Binding Progress}"/>
<StatusBar DockPanel.Dock="Bottom" MinHeight="30">
<TextBlock Text="{Binding StatusMessage}" TextWrapping="Wrap"/>
</StatusBar>
<DataGrid
VerticalAlignment="Stretch"
VerticalScrollBarVisibility="Auto"
DockPanel.Dock="Top"
ItemsSource="{Binding Messages, IsAsync=True}"
BorderThickness="1"
CanUserAddRows="False"
AutoGenerateColumns="False"
SelectionUnit="FullRow"
IsReadOnly="True"
HeadersVisibility="All"
RowHeaderWidth="5"
Name="MessageList">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Message" Width="*">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Message}" Visibility="{Binding Message, Converter={StaticResource NullToVisibilityConverter}}"
TextWrapping="Wrap"/>
<TextBlock Text="{Binding Link}" Visibility="{Binding Message, Converter={StaticResource NullToVisibilityConverter}}"
TextWrapping="Wrap"/>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="Time" Binding="{Binding Time}" Width="130" />
</DataGrid.Columns>
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Style.Triggers>
<DataTrigger Binding="{Binding Type}" Value="{x:Static impl:MessageType.StatusMessage}">
<Setter Property="Background" Value="AliceBlue"/>
</DataTrigger>
<DataTrigger Binding="{Binding Type}" Value="{x:Static impl:MessageType.InfoMessage}">
<Setter Property="Background" Value="LemonChiffon"/>
</DataTrigger>
<DataTrigger Binding="{Binding Type}" Value="{x:Static impl:MessageType.ErrorMessage}">
<Setter Property="Background" Value="Red"/>
</DataTrigger>
<DataTrigger Binding="{Binding Type}" Value="{x:Static impl:MessageType.WarningMessage}">
<Setter Property="Background" Value="Gold"/>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
<DataGrid.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="FontFamily" Value="Courier New"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Type}" Value="{x:Static impl:MessageType.StatusMessage}">
<Setter Property="Foreground" Value="Black"/>
</DataTrigger>
<DataTrigger Binding="{Binding Type}" Value="{x:Static impl:MessageType.InfoMessage}">
<Setter Property="Foreground" Value="DimGray"/>
</DataTrigger>
<DataTrigger Binding="{Binding Type}" Value="{x:Static impl:MessageType.ErrorMessage}">
<Setter Property="Foreground" Value="White"/>
<Setter Property="FontWeight" Value="Bold"/>
</DataTrigger>
<DataTrigger Binding="{Binding Type}" Value="{x:Static impl:MessageType.WarningMessage}">
<Setter Property="Foreground" Value="Black"/>
<Setter Property="FontWeight" Value="Bold"/>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.CellStyle>
</DataGrid>
<DataGrid.Columns>
<DataGridTemplateColumn Header="Message" Width="*">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Message}" Visibility="{Binding Message, Converter={StaticResource NullToVisibilityConverter}}"
TextWrapping="Wrap"/>
<TextBlock Text="{Binding Link}" Visibility="{Binding Message, Converter={StaticResource NullToVisibilityConverter}}"
TextWrapping="Wrap"/>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="Time" Binding="{Binding Time}" Width="130" />
</DataGrid.Columns>
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Style.Triggers>
<DataTrigger Binding="{Binding Type}" Value="{x:Static impl:MessageType.StatusMessage}">
<Setter Property="Background" Value="AliceBlue"/>
</DataTrigger>
<DataTrigger Binding="{Binding Type}" Value="{x:Static impl:MessageType.InfoMessage}">
<Setter Property="Background" Value="LemonChiffon"/>
</DataTrigger>
<DataTrigger Binding="{Binding Type}" Value="{x:Static impl:MessageType.ErrorMessage}">
<Setter Property="Background" Value="Red"/>
</DataTrigger>
<DataTrigger Binding="{Binding Type}" Value="{x:Static impl:MessageType.WarningMessage}">
<Setter Property="Background" Value="Gold"/>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
<DataGrid.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="FontFamily" Value="Courier New"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Type}" Value="{x:Static impl:MessageType.StatusMessage}">
<Setter Property="Foreground" Value="Black"/>
</DataTrigger>
<DataTrigger Binding="{Binding Type}" Value="{x:Static impl:MessageType.InfoMessage}">
<Setter Property="Foreground" Value="DimGray"/>
</DataTrigger>
<DataTrigger Binding="{Binding Type}" Value="{x:Static impl:MessageType.ErrorMessage}">
<Setter Property="Foreground" Value="White"/>
<Setter Property="FontWeight" Value="Bold"/>
</DataTrigger>
<DataTrigger Binding="{Binding Type}" Value="{x:Static impl:MessageType.WarningMessage}">
<Setter Property="Foreground" Value="Black"/>
<Setter Property="FontWeight" Value="Bold"/>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.CellStyle>
</DataGrid>
<StatusBar DockPanel.Dock="Bottom" VerticalAlignment="Bottom"><TextBlock Text="{Binding StatusMessage}"/></StatusBar>
</DockPanel> </DockPanel>
</Grid> </Grid>
</UserControl> </UserControl>
...@@ -93,6 +93,9 @@ ...@@ -93,6 +93,9 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework">
<HintPath>..\..\..\..\..\..\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\PublicAssemblies\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll</HintPath>
</Reference>
<Reference Include="PresentationFramework" /> <Reference Include="PresentationFramework" />
</ItemGroup> </ItemGroup>
......
using NUnit.Framework;
using VECTO3GUI2020.ViewModel.MultiStage.Implementation;
namespace Vecto3GUI2020Test.ViewModelTests
{
[TestFixture]
public class AirdragTests : ViewModelTestBase
{
/*
* Airdrag component loaded -> Airdragmodified true (if mandatory)
Airdrag component deleted -> Airdragmodified unchanged
Airdrag modified false -> Airdragcomponent set to null (& temporarily saved)
Airdrag modified true -> Airdragcomponent unchanged
*
*
*/
#region Airdrag
[Test]
public void airdragModifiedInPreviousStages()
{
var vm = loadFile(consolidated_multiple_stages_airdrag);
var vehicleVM = vm.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as
DeclarationInterimStageBusVehicleViewModel_v2_8;
Assert.IsTrue(vehicleVM.AirdragModifiedMultistageEditingEnabled);
//try to change to false
vehicleVM.AirdragModifiedMultistage = false; //should not change the value
Assert.IsTrue(vehicleVM.AirdragModifiedMultistageEditingEnabled);
}
[Test]
public void airdragNotModifiedInPreviousStages()
{
var vm = loadFile(consolidated_multiple_stages);
var vehicleVM =
vm.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as
DeclarationInterimStageBusVehicleViewModel_v2_8;
Assert.IsFalse(vehicleVM.AirdragModifiedMultistageEditingEnabled);
}
/// <summary>
/// 1st interim stage adds AirDrag component
/// => 'AirdragModifiedMultistage' not present in input, VIF 2, Airdrag Component in VIF
/// => 'AirdragModifiedMultistage' required in all consecutive stages
/// </summary>
[Test]
public void airdragComponentLoadedFirstTime()
{
///Load VIF without airdrag
var vm = loadFile(primary_vehicle_only);
var vehicleVM =
vm.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as
DeclarationInterimStageBusVehicleViewModel_v2_8;
Assert.IsNull(vehicleVM.AirdragModifiedMultistage);
var airdragViewModel = vehicleVM.MultistageAirdragViewModel as MultistageAirdragViewModel;
Assert.IsTrue(airdragViewModel.LoadAirdragFile(GetFullPath(airdragLoadTestFile)));
Assert.IsNull(vehicleVM.AirdragModifiedMultistage);
Assert.IsFalse(vehicleVM.AirdragModifiedMultistageMandatory);
vehicleVM.AirdragModifiedMultistageEditingEnabled = true;
Assert.IsFalse(vehicleVM.AirdragModifiedMultistageEditingEnabled);
Assert.IsNull(vehicleVM.AirdragModifiedMultistage);
//Set Mandatory Fields
vehicleVM.Manufacturer = "testManufacturer";
vehicleVM.ManufacturerAddress = "Address";
vehicleVM.VIN = "123456789";
//Save as new VIF
var multistageJobViewModel = vm.MultiStageJobViewModel as MultiStageJobViewModel_v0_1;
var outputName = "AidragLoadedInFirstStage";
multistageJobViewModel.SaveVif(GetFullPath($"{outputName}.xml"));
var resultFile = $"{outputName}.VIF_Report_2.xml";
Assert.IsTrue(checkFileNameExists(resultFile));
var secondstageVM = loadFile(resultFile);
Assert.IsNotNull(secondstageVM);
var secondStageVehicleVM =
(secondstageVM.MultiStageJobViewModel.ManufacturingStageViewModel.VehicleViewModel) as
DeclarationInterimStageBusVehicleViewModel_v2_8;
Assert.IsTrue(secondStageVehicleVM.AirdragModifiedMultistageEditingEnabled);
Assert.IsTrue(secondStageVehicleVM.AirdragModifiedMultistageMandatory);
Assert.IsNull(secondStageVehicleVM.ConsolidatedVehicleData.AirdragModifiedMultistage);
//try to disable AirdragModified
secondStageVehicleVM.AirdragModifiedMultistageEditingEnabled = false;
Assert.IsTrue(secondStageVehicleVM.AirdragModifiedMultistageEditingEnabled);
}
/// <summary>
/// no airdrag component set in VIF => AirdragModifiedMultistage is disabled
/// </summary>
[Test]
public void airdragModifiedDisabled()
{
var vm = loadFile(primary_vehicle_only);
var vehicleVM =
vm.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as
DeclarationInterimStageBusVehicleViewModel_v2_8;
Assert.IsNull(vehicleVM.AirdragModifiedMultistage);
Assert.IsNull(vehicleVM.AirdragModifiedMultistage);
Assert.IsFalse(vehicleVM.AirdragModifiedMultistageMandatory);
var airdragViewModel = vehicleVM.MultistageAirdragViewModel;
Assert.IsTrue(airdragViewModel.LoadAirdragFile(GetFullPath(airdragLoadTestFile)), "Airdrag file not loaded");
Assert.IsFalse(vehicleVM.AirdragModifiedMultistageMandatory);
vehicleVM.AirdragModifiedMultistageEditingEnabled = true;
Assert.IsFalse(vehicleVM.AirdragModifiedMultistageEditingEnabled);
}
/// <summary>
/// airdrag component is in VIF set => AirdragModifiedMultistage is mandatory
/// </summary>
[Test]
public void airdragModifiedMandatory()
{
//var vm = loadFile(primary_vehicle_only);
//var vehicleVM =
// vm.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as
// DeclarationInterimStageBusVehicleViewModel_v2_8;
//Assert.IsNull(vehicleVM.AirdragModifiedMultistage);
//Assert.IsNull(vehicleVM.AirdragModifiedMultistage);
//Assert.IsFalse(vehicleVM.AirdragModifiedMultistageMandatory);
//vehicleVM.AirdragModifiedMultistageEditingEnabled = true;
//Assert.IsFalse(vehicleVM.AirdragModifiedMultistageEditingEnabled);
}
[Test]
public void temporarySaveAirdragComponent1()
{
var vm = loadFile(consolidated_multiple_stages_airdrag);
var vehicleViewModel = vm.MultiStageJobViewModel.ManufacturingStageViewModel.VehicleViewModel as DeclarationInterimStageBusVehicleViewModel_v2_8;
Assert.IsNull(vehicleViewModel.AirdragModifiedMultistage);
//Load airdrag file
var airdragLoaded = vehicleViewModel.MultistageAirdragViewModel.LoadAirdragFile(GetFullPath(airdragLoadTestFile));
var loadedAirdragComponent = vehicleViewModel.MultistageAirdragViewModel.AirDragViewModel;
Assert.IsTrue(airdragLoaded, "Airdrag file was not loaded");
//Airdrag modified set to true if a component is loaded and the field is mandatory
Assert.IsTrue(vehicleViewModel.AirdragModifiedMultistage);
Assert.IsTrue(vehicleViewModel.AirdragModifiedMultistageMandatory);
Assert.AreEqual(
AIRDRAGMODIFIED.TRUE,
vehicleViewModel.ParameterViewModels[nameof(vehicleViewModel.AirdragModifiedEnum)].CurrentContent);
vehicleViewModel.AirdragModifiedMultistage = false;
Assert.AreEqual(AIRDRAGMODIFIED.FALSE,vehicleViewModel.ParameterViewModels[nameof(vehicleViewModel.AirdragModifiedEnum)].CurrentContent);
Assert.IsNull(vehicleViewModel.Components?.AirdragInputData);
Assert.IsNull(vehicleViewModel.MultistageAirdragViewModel.AirDragViewModel);
vehicleViewModel.AirdragModifiedMultistage = true;
Assert.AreEqual(loadedAirdragComponent, vehicleViewModel.MultistageAirdragViewModel.AirDragViewModel);
}
[Test]
public void temporarySaveAirdragComponent2()
{
var vm = loadFile(consolidated_multiple_stages_airdrag);
var vehicleViewModel = vm.MultiStageJobViewModel.ManufacturingStageViewModel.VehicleViewModel as DeclarationInterimStageBusVehicleViewModel_v2_8;
Assert.IsNull(vehicleViewModel.AirdragModifiedMultistage);
//Load input file
var multistageJobViewModel = vm.MultiStageJobViewModel as MultiStageJobViewModel_v0_1;
var mockDialogHelper = setMockDialogHelper(stageInputFullSample, null);
multistageJobViewModel.LoadVehicleDataCommand.Execute(null);
var loadedAirdragComponent = vehicleViewModel.MultistageAirdragViewModel.AirDragViewModel;
Assert.NotNull(loadedAirdragComponent);
//Airdrag modified set to true if a component is loaded and the field is mandatory
Assert.IsTrue(vehicleViewModel.AirdragModifiedMultistage);
Assert.IsTrue(vehicleViewModel.AirdragModifiedMultistageMandatory);
Assert.AreEqual(
AIRDRAGMODIFIED.TRUE,
vehicleViewModel.ParameterViewModels[nameof(vehicleViewModel.AirdragModifiedEnum)].CurrentContent);
vehicleViewModel.AirdragModifiedMultistage = false;
Assert.AreEqual(AIRDRAGMODIFIED.FALSE, vehicleViewModel.ParameterViewModels[nameof(vehicleViewModel.AirdragModifiedEnum)].CurrentContent);
Assert.IsNull(vehicleViewModel.Components?.AirdragInputData);
Assert.IsNull(vehicleViewModel.MultistageAirdragViewModel.AirDragViewModel);
vehicleViewModel.AirdragModifiedMultistage = true;
Assert.AreEqual(loadedAirdragComponent, vehicleViewModel.MultistageAirdragViewModel.AirDragViewModel);
}
[Test]
public void removeAirdragComponent()
{
var vm = loadFile(consolidated_multiple_stages_airdrag);
var vehicleViewModel = vm.MultiStageJobViewModel.ManufacturingStageViewModel.VehicleViewModel as DeclarationInterimStageBusVehicleViewModel_v2_8;
Assert.IsNull(vehicleViewModel.AirdragModifiedMultistage);
//Load input file
var multistageJobViewModel = vm.MultiStageJobViewModel as MultiStageJobViewModel_v0_1;
var mockDialogHelper = setMockDialogHelper(stageInputFullSample, null);
multistageJobViewModel.LoadVehicleDataCommand.Execute(null);
Assert.IsTrue(vehicleViewModel.AirdragModifiedMultistage);
vehicleViewModel.MultistageAirdragViewModel.RemoveAirdragComponent(); //remove airdrag viewmodel;
Assert.IsTrue(vehicleViewModel.AirdragModifiedMultistage);
}
[Test]
public void airdragModifiedSetToTrueWhenComponentIsLoaded()
{
var vm = loadFile(consolidated_multiple_stages_airdrag);
var vehicleViewModel = vm.MultiStageJobViewModel.ManufacturingStageViewModel.VehicleViewModel as DeclarationInterimStageBusVehicleViewModel_v2_8;
Assert.IsNull(vehicleViewModel.AirdragModifiedMultistage);
//Load airdrag file
var airdragLoaded = vehicleViewModel.MultistageAirdragViewModel.LoadAirdragFile(GetFullPath(airdragLoadTestFile));
Assert.IsTrue(airdragLoaded, "Airdrag file was not loaded");
//Airdrag modified set to true if a component is loaded and the field is mandatory
Assert.IsTrue(vehicleViewModel.AirdragModifiedMultistage);
Assert.IsTrue(vehicleViewModel.AirdragModifiedMultistageMandatory);
Assert.AreEqual(
AIRDRAGMODIFIED.TRUE,
vehicleViewModel.ParameterViewModels[nameof(vehicleViewModel.AirdragModifiedEnum)].CurrentContent);
//AirdragComponent is removed when airdragmodified is set to false;
//Load airdrag file
airdragLoaded = vehicleViewModel.MultistageAirdragViewModel.LoadAirdragFile(GetFullPath(airdragLoadTestFile));
Assert.IsTrue(airdragLoaded, "Airdrag file was not loaded");
vehicleViewModel.AirdragModifiedMultistage = false;
Assert.IsNull(vehicleViewModel.MultistageAirdragViewModel.AirDragViewModel);
}
#endregion
}
}
...@@ -211,11 +211,12 @@ namespace Vecto3GUI2020Test ...@@ -211,11 +211,12 @@ namespace Vecto3GUI2020Test
Assert.IsNull(vehicleViewModel_v2_8.AirdragModifiedMultistage); Assert.IsNull(vehicleViewModel_v2_8.AirdragModifiedMultistage);
Assert.IsNull(vehicleViewModel_v2_8.ConsolidatedAirdragModifiedEnum); Assert.IsNull(vehicleViewModel_v2_8.ConsolidatedAirdragModifiedEnum);
Assert.IsNull(vehicleViewModel_v2_8.AirdragModifiedEnum); Assert.IsTrue(vehicleViewModel_v2_8.AirdragModifiedEnum == AIRDRAGMODIFIED.UNKNOWN || vehicleViewModel_v2_8.AirdragModifiedEnum == null);
Assert.AreEqual(vehicleViewModel_v2_8.AirdragModifiedMultistageEditingEnabled, false); Assert.AreEqual(vehicleViewModel_v2_8.AirdragModifiedMultistageEditingEnabled, false);
Assert.Null(vehicleViewModel_v2_8.BusAuxiliaries); Assert.Null(vehicleViewModel_v2_8.BusAuxiliaries);
...@@ -224,6 +225,62 @@ namespace Vecto3GUI2020Test ...@@ -224,6 +225,62 @@ namespace Vecto3GUI2020Test
Assert.Null(vifInputData.VehicleInputData.Components); Assert.Null(vifInputData.VehicleInputData.Components);
} }
[TestCase(consolidated_multiple_stages_airdrag, true)]
[TestCase(consolidated_multiple_stages, null)]
[TestCase(consolidated_one_stage, null)]
[TestCase(primary_vehicle_only, null)]
public void loadAirdragComponentAndSaveVehicleData(string fileName, object expectedAirdragModifiedValue)
{
var vm = loadFile(fileName);
var vehicleVm =
vm.MultiStageJobViewModel.ManufacturingStageViewModel.VehicleViewModel as
DeclarationInterimStageBusVehicleViewModel_v2_8;
var airdragLoadResult = vehicleVm.MultistageAirdragViewModel.LoadAirdragFile(GetFullPath(airdragLoadTestFile));
Assert.IsTrue(airdragLoadResult, "Airdrag file not loaded");
//TODO: Set mandatory fields
vehicleVm.Manufacturer = "TestManufacturer";
vehicleVm.ManufacturerAddress = "ManufacturerADDRESS";
vehicleVm.VIN = "1234567890";
var fileToSave = "stageInput.xml";
var mockDialogHelper = setMockDialogHelper(null, fileToSave: fileToSave);
TestContext.Write("Saving file with loaded Airdrag Component ... ");
var multistageJobViewModel = vm.MultiStageJobViewModel as MultiStageJobViewModel_v0_1;
multistageJobViewModel.SaveInputDataAsCommand.Execute(null);
var savePath = mockDialogHelper.Object.SaveToXMLDialog();
Assert.IsTrue(File.Exists(savePath));
TestContext.WriteLine("Done!");
TestContext.WriteLine("Checking saved File ... ");
var inputData = (IDeclarationInputDataProvider)_kernel.Get<IXMLInputDataReader>().Create(savePath);
Assert.NotNull(inputData.JobInputData.Vehicle.Components.AirdragInputData, "No Airdrag Component loaded");
var airdragData = inputData.JobInputData.Vehicle.Components.AirdragInputData;
Assert.AreEqual(expectedAirdragModifiedValue, vehicleVm.AirdragModifiedMultistage);
TestContext.WriteLine("Done!");
File.Delete(savePath);
}
...@@ -294,6 +351,8 @@ namespace Vecto3GUI2020Test ...@@ -294,6 +351,8 @@ namespace Vecto3GUI2020Test
Assert.AreEqual(500, vehicleViewModel.CurbMassChassis.Value());//CorrectedActualMass Assert.AreEqual(500, vehicleViewModel.CurbMassChassis.Value());//CorrectedActualMass
Assert.AreEqual(3500, vehicleViewModel.GrossVehicleMassRating.Value());//TechnicalPermissibleMaximumLadenMass Assert.AreEqual(3500, vehicleViewModel.GrossVehicleMassRating.Value());//TechnicalPermissibleMaximumLadenMass
Assert.AreEqual(false, vehicleViewModel.AirdragModifiedMultistage); Assert.AreEqual(false, vehicleViewModel.AirdragModifiedMultistage);
Assert.AreEqual(AIRDRAGMODIFIED.FALSE, vehicleViewModel.AirdragModifiedEnum);
Assert.AreEqual(AIRDRAGMODIFIED.FALSE, vehicleViewModel.ParameterViewModels[nameof(vehicleViewModel.AirdragModifiedEnum)].CurrentContent);
Assert.AreEqual(TankSystem.Compressed, vehicleViewModel.TankSystem);//NgTankSystem Assert.AreEqual(TankSystem.Compressed, vehicleViewModel.TankSystem);//NgTankSystem
Assert.AreEqual(RegistrationClass.II_III, vehicleViewModel.RegisteredClass);//ClassBus Assert.AreEqual(RegistrationClass.II_III, vehicleViewModel.RegisteredClass);//ClassBus
Assert.AreEqual(1, vehicleViewModel.NumberPassengerSeatsLowerDeck); Assert.AreEqual(1, vehicleViewModel.NumberPassengerSeatsLowerDeck);
......
...@@ -57,11 +57,11 @@ namespace Vecto3GUI2020Test.ViewModelTests ...@@ -57,11 +57,11 @@ namespace Vecto3GUI2020Test.ViewModelTests
Assert.IsTrue(auxVm.HeatPumpGroupEditingEnabled); Assert.IsTrue(auxVm.HeatPumpGroupEditingEnabled);
auxVm.HeatPumpGroupEditingEnabled = false; auxVm.HeatPumpGroupEditingEnabled = false;
auxVm.ParameterViewModels[nameof(auxVm.HeatPumpModeDriverCompartment)].CurrentContent = auxVm.ParameterViewModels[nameof(auxVm.HeatPumpTypeDriverCompartment)].CurrentContent =
HeatPumpType.R_744; HeatPumpType.R_744;
Assert.IsTrue(auxVm.HeatPumpGroupEditingEnabled); Assert.IsTrue(auxVm.HeatPumpGroupEditingEnabled);
auxVm.ParameterViewModels[nameof(auxVm.HeatPumpModeDriverCompartment)].CurrentContent = auxVm.ParameterViewModels[nameof(auxVm.HeatPumpTypeDriverCompartment)].CurrentContent =
HeatPumpType.none; HeatPumpType.none;
......
...@@ -4,146 +4,21 @@ using System.Diagnostics; ...@@ -4,146 +4,21 @@ using System.Diagnostics;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using Ninject;
using NUnit.Framework; using NUnit.Framework;
using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.InputData;
using TUGraz.VectoCommon.Utils; using TUGraz.VectoCommon.Utils;
using TUGraz.VectoCore.InputData.FileIO.XML;
using VECTO3GUI2020.Annotations; using VECTO3GUI2020.Annotations;
using VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle.Components;
using VECTO3GUI2020.ViewModel.MultiStage.Implementation; using VECTO3GUI2020.ViewModel.MultiStage.Implementation;
using VECTO3GUI2020.ViewModel.MultiStage.Interfaces;
namespace Vecto3GUI2020Test.ViewModelTests namespace Vecto3GUI2020Test.ViewModelTests
{ {
[TestFixture] [TestFixture]
public class VehicleViewModelTests : ViewModelTestBase public class VehicleViewModelTests : ViewModelTestBase
{ {
#region Airdrag
[Test]
public void airdragModifiedInPreviousStages()
{
var vm = loadFile(consolidated_multiple_stages_airdrag);
var vehicleVM = vm.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as
DeclarationInterimStageBusVehicleViewModel_v2_8;
Assert.IsTrue(vehicleVM.AirdragModifiedMultistageEditingEnabled);
//try to change to false
vehicleVM.AirdragModifiedMultistage = false; //should not change the value
Assert.IsTrue(vehicleVM.AirdragModifiedMultistageEditingEnabled);
}
[Test]
public void airdragNotModifiedInPreviousStages()
{
var vm = loadFile(consolidated_multiple_stages);
var vehicleVM =
vm.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as
DeclarationInterimStageBusVehicleViewModel_v2_8;
Assert.IsFalse(vehicleVM.AirdragModifiedMultistageEditingEnabled);
}
/// <summary>
/// 1st interim stage adds AirDrag component
/// => 'AirdragModifiedMultistage' not present in input, VIF 2, Airdrag Component in VIF
/// => 'AirdragModifiedMultistage' required in all consecutive stages
/// </summary>
[Test]
public void airdragComponentLoadedFirstTime()
{
///Load VIF without airdrag
var vm = loadFile(primary_vehicle_only);
var vehicleVM =
vm.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as
DeclarationInterimStageBusVehicleViewModel_v2_8;
Assert.IsNull(vehicleVM.AirdragModifiedMultistage);
var airdragViewModel = vehicleVM.MultistageAirdragViewModel as MultistageAirdragViewModel;
Assert.IsTrue(airdragViewModel.LoadAirdragFile(GetFullPath(airdragComponent)));
Assert.IsNull(vehicleVM.AirdragModifiedMultistage);
Assert.IsFalse(vehicleVM.AirdragModifiedMultistageMandatory);
vehicleVM.AirdragModifiedMultistageEditingEnabled = true;
Assert.IsFalse(vehicleVM.AirdragModifiedMultistageEditingEnabled);
//Set Mandatory Fields
vehicleVM.Manufacturer = "testManufacturer";
vehicleVM.ManufacturerAddress = "Address";
vehicleVM.VIN = "123456789";
//Save as new VIF
var multistageJobViewModel = vm.MultiStageJobViewModel as MultiStageJobViewModel_v0_1;
var outputName = "AidragLoadedInFirstStage";
multistageJobViewModel.SaveVif(GetFullPath($"{outputName}.xml"));
var resultFile = $"{outputName}.VIF_Report_2.xml";
Assert.IsTrue(checkFileNameExists(resultFile));
var secondstageVM = loadFile(resultFile);
Assert.IsNotNull(secondstageVM);
var secondStageVehicleVM =
(secondstageVM.MultiStageJobViewModel.ManufacturingStageViewModel.VehicleViewModel) as
DeclarationInterimStageBusVehicleViewModel_v2_8;
Assert.IsTrue(secondStageVehicleVM.AirdragModifiedMultistageEditingEnabled);
Assert.IsTrue(secondStageVehicleVM.AirdragModifiedMultistageMandatory);
Assert.IsNull(secondStageVehicleVM.ConsolidatedVehicleData.AirdragModifiedMultistage);
//try to disable AirdragModified
secondStageVehicleVM.AirdragModifiedMultistageEditingEnabled = false;
Assert.IsTrue(secondStageVehicleVM.AirdragModifiedMultistageEditingEnabled);
}
/// <summary>
/// no airdrag component set in VIF => AirdragModifiedMultistage is disabled
/// </summary>
[Test]
public void airdragModifiedDisabled()
{
var vm = loadFile(primary_vehicle_only);
var vehicleVM =
vm.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as
DeclarationInterimStageBusVehicleViewModel_v2_8;
Assert.IsNull(vehicleVM.AirdragModifiedMultistage);
Assert.IsNull(vehicleVM.AirdragModifiedMultistage);
Assert.IsFalse(vehicleVM.AirdragModifiedMultistageMandatory);
vehicleVM.AirdragModifiedMultistageEditingEnabled = true;
Assert.IsFalse(vehicleVM.AirdragModifiedMultistageEditingEnabled);
}
/// <summary>
/// airdrag component is in VIF set => AirdragModifiedMultistage is mandatory
/// </summary>
[Test]
public void airdragModifiedMandatory()
{
//var vm = loadFile(primary_vehicle_only);
//var vehicleVM =
// vm.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as
// DeclarationInterimStageBusVehicleViewModel_v2_8;
//Assert.IsNull(vehicleVM.AirdragModifiedMultistage);
//Assert.IsNull(vehicleVM.AirdragModifiedMultistage);
//Assert.IsFalse(vehicleVM.AirdragModifiedMultistageMandatory);
//vehicleVM.AirdragModifiedMultistageEditingEnabled = true;
//Assert.IsFalse(vehicleVM.AirdragModifiedMultistageEditingEnabled);
}
#endregion
[Test] [Test]
public void restoreValuesWhenEditingAgain() public void restoreValuesWhenEditingAgain()
{ {
...@@ -294,19 +169,12 @@ namespace Vecto3GUI2020Test.ViewModelTests ...@@ -294,19 +169,12 @@ namespace Vecto3GUI2020Test.ViewModelTests
var vehicleData = vm.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle; var vehicleData = vm.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle;
vehicleViewModel.EcoRollTypeNullable = EcoRollType.WithEngineStop; vehicleViewModel.EcoRollTypeNullable = EcoRollType.WithEngineStop;
Assert.NotNull(vehicleData.ADAS); Assert.NotNull(vehicleData.ADAS);
vehicleViewModel.EcoRollTypeNullable = null; vehicleViewModel.EcoRollTypeNullable = null;
Assert.Null(vehicleData.ADAS); Assert.Null(vehicleData.ADAS);
} }
......
...@@ -33,7 +33,7 @@ namespace Vecto3GUI2020Test ...@@ -33,7 +33,7 @@ namespace Vecto3GUI2020Test
protected const string stageInputFullSample = "vecto_vehicle-stage_input_full-sample.xml"; protected const string stageInputFullSample = "vecto_vehicle-stage_input_full-sample.xml";
protected const string airdragComponent = "AidragComponent.xml"; protected const string airdragLoadTestFile = "AirdragLoadTestFile.xml";
//protected IXMLInputDataReader xmlInputReader; //protected IXMLInputDataReader xmlInputReader;
protected IKernel _kernel; protected IKernel _kernel;
......
This diff is collapsed.
This diff is collapsed.
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