From da54f9d50a7969a42db1d32215b7b146db5258e5 Mon Sep 17 00:00:00 2001 From: "harald.martini@student.tugraz.at" <harald.martini@student.tugraz.at> Date: Tue, 29 Jun 2021 10:23:50 +0200 Subject: [PATCH] Updated Passenger Heat Pumps --- .../MultistageAuxiliariesViewModel.cs | 42 ++++++++------ Vecto3GUI2020Test/Vecto3GUI2020Test.csproj | 1 + .../MultistageAuxiliariesViewModelTests.cs | 58 ++++++++++++++----- 3 files changed, 70 insertions(+), 31 deletions(-) diff --git a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageAuxiliariesViewModel.cs b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageAuxiliariesViewModel.cs index 3b762b2fa2..00e412f74e 100644 --- a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageAuxiliariesViewModel.cs +++ b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageAuxiliariesViewModel.cs @@ -274,15 +274,6 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation set => SetProperty(ref _primaryVehicleHybridElectric, value); } - private IndexedStorage<bool> _editingEnabledDictionary; - public IndexedStorage<bool> EditingEnabledDictionary - { - get - { - return _editingEnabledDictionary; - } - } - #region HVAC @@ -364,23 +355,37 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation public ICommand AddPassengerHeatpumpCommand { - get => _addPassengerHeatpumpCommand ?? + get + { + return _addPassengerHeatpumpCommand ?? (_addPassengerHeatpumpCommand = new RelayCommand(() => { HeatPumpGroupEditingEnabled = true; if (HeatPumpConfigurationsPassenger == null) { HeatPumpConfigurationsPassenger = new ObservableCollection<HeatPumpConfiguration>(); } + HeatPumpConfigurationsPassenger.Add(new HeatPumpConfiguration()); + RemovePassengerHeatpumpCommand.NotifyCanExecuteChanged(); + }, - () => true); + () => true)); + } } - public ICommand _removePasssengerHeatpumpCommand; + private IRelayCommand _removePassengerHeatpumpCommand; - public ICommand RemovePassengerHeatpumpCommand + public IRelayCommand RemovePassengerHeatpumpCommand { - get => _removePasssengerHeatpumpCommand ?? - new RelayCommand<HeatPumpConfiguration>(hp => HeatPumpConfigurationsPassenger?.Remove(hp), (hp) => true); + get + { + return _removePassengerHeatpumpCommand ?? (_removePassengerHeatpumpCommand = + new RelayCommand<HeatPumpConfiguration>(hp => { + if (HeatPumpGroupEditingEnabled && HeatPumpConfigurationsPassenger.Count > 1) { + HeatPumpConfigurationsPassenger?.Remove(hp); + RemovePassengerHeatpumpCommand.NotifyCanExecuteChanged(); + } + }, hp => HeatPumpConfigurationsPassenger.Count > 1)); + } } public IList<Tuple<HeatPumpType, HeatPumpMode>> HeatPumpPassengerCompartments{ @@ -559,6 +564,10 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation _parameterViewModels[nameof(SystemConfiguration)].EditingEnabled = value; if (value == false) { HeatPumpConfigurationsPassenger = null; + } else { + if (HeatPumpConfigurationsPassenger == null || HeatPumpConfigurationsPassenger.Count == 0) { + AddPassengerHeatpumpCommand.Execute(null); + } } } } @@ -648,9 +657,6 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation set { SetProperty(ref _interiorLightsLed, value); - if (value != null) { - OnPropertyChanged(nameof(EditingEnabledDictionary)); - } } } diff --git a/Vecto3GUI2020Test/Vecto3GUI2020Test.csproj b/Vecto3GUI2020Test/Vecto3GUI2020Test.csproj index 30f9aca4e1..f675c034a5 100644 --- a/Vecto3GUI2020Test/Vecto3GUI2020Test.csproj +++ b/Vecto3GUI2020Test/Vecto3GUI2020Test.csproj @@ -80,6 +80,7 @@ <ItemGroup> <PackageReference Include="Appium.WebDriver" Version="4.3.1" /> + <PackageReference Include="Microsoft.Toolkit.Mvvm" Version="7.0.2" /> <PackageReference Include="Moq" Version="4.16.1" /> <PackageReference Include="Ninject" Version="3.3.4" /> <PackageReference Include="NUnit" Version="3.12.0" /> diff --git a/Vecto3GUI2020Test/ViewModelTests/MultistageAuxiliariesViewModelTests.cs b/Vecto3GUI2020Test/ViewModelTests/MultistageAuxiliariesViewModelTests.cs index 07c2f96cb7..801e095995 100644 --- a/Vecto3GUI2020Test/ViewModelTests/MultistageAuxiliariesViewModelTests.cs +++ b/Vecto3GUI2020Test/ViewModelTests/MultistageAuxiliariesViewModelTests.cs @@ -9,11 +9,11 @@ using VECTO3GUI2020.ViewModel.MultiStage.Implementation; namespace Vecto3GUI2020Test.ViewModelTests { - [TestFixture] - public class MultistageAuxiliariesViewModelTests : ViewModelTestBase - { + [TestFixture] + public class MultistageAuxiliariesViewModelTests : ViewModelTestBase + { + - [Test] public void TestAllowedValuesHeatPumpModePassenger() @@ -33,18 +33,18 @@ namespace Vecto3GUI2020Test.ViewModelTests [Test] public void TestAllowedValuesHeatPumpModeDriver() - { + { var auxVm = new MultistageAuxiliariesViewModel(null); auxVm.HeatPumpTypeDriverCompartment = HeatPumpType.none; - Assert.IsTrue(auxVm.HeatPumpModeDriverCompartmentAllowedValues.Contains(HeatPumpMode.N_A)); - Assert.IsFalse(auxVm.HeatPumpModeDriverCompartmentAllowedValues.Contains(HeatPumpMode.cooling)); - Assert.IsFalse(auxVm.HeatPumpModeDriverCompartmentAllowedValues.Contains(HeatPumpMode.heating)); - Assert.IsFalse(auxVm.HeatPumpModeDriverCompartmentAllowedValues.Contains(HeatPumpMode.heating_and_cooling)); + Assert.IsTrue(auxVm.HeatPumpModeDriverCompartmentAllowedValues.Contains(HeatPumpMode.N_A)); + Assert.IsFalse(auxVm.HeatPumpModeDriverCompartmentAllowedValues.Contains(HeatPumpMode.cooling)); + Assert.IsFalse(auxVm.HeatPumpModeDriverCompartmentAllowedValues.Contains(HeatPumpMode.heating)); + Assert.IsFalse(auxVm.HeatPumpModeDriverCompartmentAllowedValues.Contains(HeatPumpMode.heating_and_cooling)); - auxVm.HeatPumpTypeDriverCompartment = HeatPumpType.R_744; - Assert.IsFalse(auxVm.HeatPumpModeDriverCompartmentAllowedValues.Contains(HeatPumpMode.N_A)); - } + auxVm.HeatPumpTypeDriverCompartment = HeatPumpType.R_744; + Assert.IsFalse(auxVm.HeatPumpModeDriverCompartmentAllowedValues.Contains(HeatPumpMode.N_A)); + } [Test] @@ -80,13 +80,45 @@ namespace Vecto3GUI2020Test.ViewModelTests Assert.AreEqual(HeatPumpMode.N_A, auxVm.HeatPumpModeDriverCompartment); Assert.AreEqual(HeatPumpMode.N_A, auxVm.ParameterViewModels[nameof(auxVm.HeatPumpModeDriverCompartment)].CurrentContent); - } + [Test] + public void TestPassengerHeatPumpConfigurations() + { + var auxVm = new MultistageAuxiliariesViewModel(null); + auxVm.HeatPumpGroupEditingEnabled = true; + + Assert.AreEqual(1, auxVm.HeatPumpConfigurationsPassenger.Count); + Assert.IsFalse(auxVm.RemovePassengerHeatpumpCommand.CanExecute(null)); + bool canExecuteChangedFired = false; + auxVm.RemovePassengerHeatpumpCommand.CanExecuteChanged += (sender, args) => { + canExecuteChangedFired = true; + }; + //Add another configuration + + auxVm.AddPassengerHeatpumpCommand.Execute(null); + Assert.AreEqual(2, auxVm.HeatPumpConfigurationsPassenger.Count); + Assert.IsTrue(canExecuteChangedFired, "Can Execute Changed Not Fired"); + canExecuteChangedFired = false; + Assert.IsTrue(auxVm.RemovePassengerHeatpumpCommand.CanExecute(null)); + + //Remove configuration + auxVm.RemovePassengerHeatpumpCommand.Execute(auxVm.HeatPumpConfigurationsPassenger.Last()); + Assert.AreEqual(1, auxVm.HeatPumpConfigurationsPassenger.Count); + Assert.IsTrue(canExecuteChangedFired); + Assert.IsFalse(auxVm.RemovePassengerHeatpumpCommand.CanExecute(null)); + + + + + + + + } } } -- GitLab