diff --git a/VECTOAux/VectoAuxiliaries/Electrics/ElectricsUserInputsConfig.vb b/VECTOAux/VectoAuxiliaries/Electrics/ElectricsUserInputsConfig.vb new file mode 100644 index 0000000000000000000000000000000000000000..e09b25a7d63cb4d3d0c174ba0eb3b954521d97e8 --- /dev/null +++ b/VECTOAux/VectoAuxiliaries/Electrics/ElectricsUserInputsConfig.vb @@ -0,0 +1,26 @@ +Imports VectoAuxiliaries.Electrics +Namespace Electrics + +Public Class ElectricsUserInputsConfig +Implements IElectricsUserInputsConfig + + +Public Property PowerNetVoltage As Single Implements IElectricsUserInputsConfig.PowerNetVoltage +Public Property AlternatorMap As String Implements IElectricsUserInputsConfig.AlternatorMap +Public Property AlternatorGearEfficiency As Single Implements IElectricsUserInputsConfig.AlternatorGearEfficiency +Public Property ElectricalConsumers As IElectricalConsumerList Implements IElectricsUserInputsConfig.ElectricalConsumers +Public Property DoorActuationTimeSecond As Integer Implements IElectricsUserInputsConfig.DoorActuationTimeSecond + + +Public Property ResultCardIdleAmps As Dictionary(Of Single, Single) Implements IElectricsUserInputsConfig.ResultCardIdleAmps +Public Property ResultCardTractionAmps As Dictionary(Of Single, Single) Implements IElectricsUserInputsConfig.ResultCardTractionAmps +Public Property ResultCardOverrunAmps As Dictionary(Of Single, Single) Implements IElectricsUserInputsConfig.ResultCardOverrunAmps + + + +End Class + +End Namespace + + + diff --git a/VECTOAux/VectoAuxiliaries/Electrics/IElectricsUserInputsConfig.vb b/VECTOAux/VectoAuxiliaries/Electrics/IElectricsUserInputsConfig.vb new file mode 100644 index 0000000000000000000000000000000000000000..5a44a061dcb20f1ffb56b18f7e7f3487d80bb535 --- /dev/null +++ b/VECTOAux/VectoAuxiliaries/Electrics/IElectricsUserInputsConfig.vb @@ -0,0 +1,21 @@ +Imports VectoAuxiliaries.Electrics + +Namespace Electrics + +Public Interface IElectricsUserInputsConfig + +Property PowerNetVoltage As Single +Property AlternatorMap As String +Property AlternatorGearEfficiency As Single +Property ElectricalConsumers As IElectricalConsumerList +Property DoorActuationTimeSecond As Integer + +Property ResultCardIdleAmps As Dictionary(Of Single, Single) +Property ResultCardTractionAmps As Dictionary(Of Single, Single) +Property ResultCardOverrunAmps As Dictionary(Of Single, Single) + +End Interface + +End Namespace + + diff --git a/VECTOAux/VectoAuxiliaries/Electrics/IM0_NonSmart_AlternatorsSetEfficiency.vb b/VECTOAux/VectoAuxiliaries/Electrics/IM0_NonSmart_AlternatorsSetEfficiency.vb new file mode 100644 index 0000000000000000000000000000000000000000..e911f8e65647882f9a0bb4e69323656edcd8add3 --- /dev/null +++ b/VECTOAux/VectoAuxiliaries/Electrics/IM0_NonSmart_AlternatorsSetEfficiency.vb @@ -0,0 +1,8 @@ +Public Interface IM0_NonSmart_AlternatorsSetEfficiency + + + Function GetHVACElectricalPowerDemandAmps() As Single + Function GetEfficiency(crankRPM As Integer, DoorCycleActuationPercentage As Single) As Single + + +End Interface diff --git a/VECTOAux/VectoAuxiliaries/Electrics/IResultCard.vb b/VECTOAux/VectoAuxiliaries/Electrics/IResultCard.vb new file mode 100644 index 0000000000000000000000000000000000000000..60bcf230cf178473b34683a5c567415d970664f5 --- /dev/null +++ b/VECTOAux/VectoAuxiliaries/Electrics/IResultCard.vb @@ -0,0 +1,12 @@ +Namespace Electrics + +Public Interface IResultCard + +Function GetSmartCurrentResult(key As Single) As Single + +End Interface + + +End Namespace + + diff --git a/VECTOAux/VectoAuxiliaries/Electrics/M0_5_SmartAlternatorSetEfficiency.vb b/VECTOAux/VectoAuxiliaries/Electrics/M0_5_SmartAlternatorSetEfficiency.vb new file mode 100644 index 0000000000000000000000000000000000000000..b563eeed7bd4ab28f0539450b8e47e7e58757e68 --- /dev/null +++ b/VECTOAux/VectoAuxiliaries/Electrics/M0_5_SmartAlternatorSetEfficiency.vb @@ -0,0 +1,11 @@ + +Namespace Electrics + + +Public Class M0_5_SmartAlternatorSetEfficiency + +End Class + +End Namespace + + diff --git a/VECTOAux/VectoAuxiliaries/Electrics/AlternatorsEfficiency.vb b/VECTOAux/VectoAuxiliaries/Electrics/M0_NonSmart_AlternatorsSetEfficiency.vb similarity index 86% rename from VECTOAux/VectoAuxiliaries/Electrics/AlternatorsEfficiency.vb rename to VECTOAux/VectoAuxiliaries/Electrics/M0_NonSmart_AlternatorsSetEfficiency.vb index 7be03502716d809218c5fd126340bc5a9e90f85f..71661d5c0533afd9e22eda69654fcac0e2149ed4 100644 --- a/VECTOAux/VectoAuxiliaries/Electrics/AlternatorsEfficiency.vb +++ b/VECTOAux/VectoAuxiliaries/Electrics/M0_NonSmart_AlternatorsSetEfficiency.vb @@ -3,7 +3,8 @@ Imports VectoAuxiliaries.Hvac Namespace Electrics -Public Class AlternatorsEfficiency +Public Class M0_NonSmart_AlternatorsSetEfficiency + Implements IM0_NonSmart_AlternatorsSetEfficiency Private _electricalConsumersList As IElectricalConsumerList Private _hvacInputs As IHVACInputs @@ -32,7 +33,9 @@ Public Class AlternatorsEfficiency End Sub - Public Function GetEfficiency(crankRPM As Integer, DoorCycleActuationPercentage As Single) As Single + + + Public Function GetEfficiency(crankRPM As Integer, DoorCycleActuationPercentage As Single) As Single Implements IM0_NonSmart_AlternatorsSetEfficiency.GetEfficiency 'Sanity Check. If crankRPM < 1 Then Throw New ArgumentException("CrankRMP must be greater than zero") @@ -48,7 +51,7 @@ Public Class AlternatorsEfficiency End Function - Public Function GetHVACElectricalPowerDemandAmps() As Single + Public Function GetHVACElectricalPowerDemandAmps() As Single Implements IM0_NonSmart_AlternatorsSetEfficiency.GetHVACElectricalPowerDemandAmps Return _hvacMap.GetElectricalDemand(_hvacInputs.Region, _hvacInputs.Season) / _powernetVoltage diff --git a/VECTOAux/VectoAuxiliaries/Electrics/AverageElectricalDemand.vb b/VECTOAux/VectoAuxiliaries/Electrics/M2_AverageElectricalLoadDemand.vb similarity index 54% rename from VECTOAux/VectoAuxiliaries/Electrics/AverageElectricalDemand.vb rename to VECTOAux/VectoAuxiliaries/Electrics/M2_AverageElectricalLoadDemand.vb index b245dc7e691e692380ee45730ed5f1f29e600f8a..69a6970d7c84ceab154cedb0fd7041e0c3cefad3 100644 --- a/VECTOAux/VectoAuxiliaries/Electrics/AverageElectricalDemand.vb +++ b/VECTOAux/VectoAuxiliaries/Electrics/M2_AverageElectricalLoadDemand.vb @@ -1,41 +1,32 @@ Namespace Electrics - Public Class AverageElectricalDemand + Public Class M2_AverageElectricalLoadDemand Public _powerNetVoltage As Single = 26.3 + Private _electricalConsumers As IElectricalConsumerList + Private _module0 As IM0_NonSmart_AlternatorsSetEfficiency + Private _alternatorPulleyEffiency As Single - ''' <summary> - ''' Alternator Model - ''' </summary> - ''' <value></value> - ''' <returns></returns> - 'Public ReadOnly Property Alternator() As IAlternator - ' Get - ' Return _alternator - ' End Get - 'End Property - Private _electricalConsumers As IElectricalConsumerList + Public Sub New(ByVal electricalConsumers As IElectricalConsumerList, m0 As IM0_NonSmart_AlternatorsSetEfficiency, altPulleyEfficiency As Single, powerNetVoltage As Single) + + If electricalConsumers Is Nothing Then Throw New ArgumentException("Electrical Consumer List must be supplied") + If m0 Is Nothing Then Throw New ArgumentException("Must supply module 0") + If altPulleyEfficiency = 0 OrElse altPulleyEfficiency > 1 Then Throw New ArgumentException("Alternator Gear efficiency out of range.") + If powerNetVoltage < ElectricConstants.PowenetVoltageMin OrElse powerNetVoltage > ElectricConstants.PowenetVoltageMax Then + Throw New ArgumentException("Powernet Voltage out of known range.") + End If + - ''' <summary> - ''' Creates a new instance of the AverageElectricalDemand class - ''' </summary> - ''' <param name="alternator">Alternator Models</param> - ''' <param name="electricalConsumers">List of Electrical Consumers</param> - ''' <remarks></remarks> - Public Sub New(ByVal electricalConsumers As IElectricalConsumerList, powerNetVoltage As Single) _powerNetVoltage = powerNetVoltage _electricalConsumers = electricalConsumers + _module0 = m0 + _alternatorPulleyEffiency = altPulleyEfficiency + + End Sub - ''' <summary> - ''' Initialised the Alternator Models - ''' </summary> - ''' <returns></returns> - ''' <remarks></remarks> - Public Function Initialise() As Boolean - End Function ''' <summary> ''' Gets the total average power at the alternator for all electrical consumers @@ -44,7 +35,7 @@ ''' <remarks></remarks> Public Function GetAveragePowerDemandAtAlternator() As Single - ' Return _electricalConsumers.GetTotalAverageDemandAmps() + ' Return _electricalConsumers.GetTotalAverageDemandAmps() Return 5000 ' TODO:FIX THIS End Function diff --git a/VECTOAux/VectoAuxiliaries/Electrics/ResultCard.vb b/VECTOAux/VectoAuxiliaries/Electrics/ResultCard.vb new file mode 100644 index 0000000000000000000000000000000000000000..6927ae57018e5d304e0a72ff90f8f692e684727f --- /dev/null +++ b/VECTOAux/VectoAuxiliaries/Electrics/ResultCard.vb @@ -0,0 +1,123 @@ +Imports VectoAuxiliaries.Electrics + +Namespace Electrics + + +Public Class ResultCard +Implements IResultCard + + +Private _results As Dictionary(Of Single, Single) + + +Public Sub New(results As Dictionary(Of Single, Single)) + + If results Is Nothing Then Throw New ArgumentException("A dictionary of smart results must be supplied.") + If results.Count < 2 Then Throw New ArgumentException("More than two entries are needed to interpolate results") + _results = results + +End Sub + + + + +Public Function GetSmartCurrentResult(key As Single) As Single Implements IResultCard.GetSmartCurrentResult + + + Return GetOrInterpolate(key) + + +End Function + + +Private Function GetOrInterpolate(key As Single) As Single + +Dim pre As Single +Dim post As Single +Dim dAmps As Single +Dim dSmartAmps As Single +Dim smartAmpsSlope As Single +Dim smartAmps As Single +Dim maxKey As Single +Dim minKey As Single + + maxKey = (From k In _results Select k).Last.Key + minKey = (From k In _results Select k).First.Key + + + 'Is on boundary check + If _results.ContainsKey(key) Then Return _results(key) + + 'Is over map - Extrapolate + If key > maxKey Then + + 'get the entries before and after the supplied key + pre = (From m In _results Order By m.Key Where m.Key < maxKey Select m).Last().Key + post = maxKey + + 'get the delta values + dAmps = post - pre + dSmartAmps = _results(post) - _results(pre) + + 'calculate the slopes + smartAmpsSlope = dSmartAmps / dAmps + + 'calculate the new values + smartAmps = ((key - post) * smartAmpsSlope) + _results(post) + + Return smartAmps + + End If + + 'Is under map - Extrapolate + If key < minKey Then + + 'get the entries before and after the supplied key + 'Post is the first entry and pre is the penultimate to first entry + post = minKey + pre = (From k In _results Order By k.Key Where k.Key > minKey Select k).First.Key + + 'get the delta values + dAmps = post - pre + dSmartAmps = _results(post) - _results(pre) + + 'calculate the slopes + smartAmpsSlope = dSmartAmps / dAmps + + 'calculate the new values + smartAmps = ((key - post) * smartAmpsSlope) + _results(post) + + Return smartAmps + End If + + 'Is Inside map - Interpolate + + 'get the entries before and after the supplied rpm + pre = (From m In _results Where m.Key < key Select m).Last().Key + post = (From m In _results Where m.Key > key Select m).First().Key + + 'get the delta values for rpm and the map values + dAmps = post - pre + dSmartAmps = _results(post) - _results(pre) + + 'calculate the slopes + smartAmpsSlope = dSmartAmps / dAmps + + 'calculate the new values + smartAmps = ((key - pre) * smartAmpsSlope) + _results(pre) + + + Return smartAmps + +End Function + + + + +End Class + + +End Namespace + + + diff --git a/VECTOAux/VectoAuxiliaries/VectoAuxiliaries.vbproj b/VECTOAux/VectoAuxiliaries/VectoAuxiliaries.vbproj index 8c44f8a5644e58fd272307aa2865bc80bd5724ec..999d8aeb064ba98d3b356bf02dd3040f65f92869 100644 --- a/VECTOAux/VectoAuxiliaries/VectoAuxiliaries.vbproj +++ b/VECTOAux/VectoAuxiliaries/VectoAuxiliaries.vbproj @@ -70,9 +70,15 @@ </ItemGroup> <ItemGroup> <Compile Include="Electrics\AlternatorMapValues.vb" /> - <Compile Include="Electrics\AlternatorsEfficiency.vb" /> + <Compile Include="Electrics\ElectricsUserInputsConfig.vb" /> + <Compile Include="Electrics\IElectricsUserInputsConfig.vb" /> + <Compile Include="Electrics\IResultCard.vb" /> + <Compile Include="Electrics\M0_5_SmartAlternatorSetEfficiency.vb" /> + <Compile Include="Electrics\M0_NonSmart_AlternatorsSetEfficiency.vb" /> <Compile Include="Electrics\ElectricalConsumerList.vb" /> <Compile Include="Electrics\ElectricConstants.vb" /> + <Compile Include="Electrics\IM0_NonSmart_AlternatorsSetEfficiency.vb" /> + <Compile Include="Electrics\ResultCard.vb" /> <Compile Include="Hvac\HVACInputs.vb" /> <Compile Include="Electrics\IAlternator.vb" /> <Compile Include="Electrics\IElectricalConsumerList.vb" /> @@ -83,7 +89,7 @@ <Compile Include="Pneumatics\AirCompressor.vb" /> <Compile Include="Electrics\Alternator.vb" /> <Compile Include="Electrics\AlternatorMap.vb" /> - <Compile Include="Electrics\AverageElectricalDemand.vb" /> + <Compile Include="Electrics\M2_AverageElectricalLoadDemand.vb" /> <Compile Include="Hvac\AverageHVACLoadDemand.vb" /> <Compile Include="Pneumatics\AveragePneumaticLoadDemand.vb" /> <Compile Include="Pneumatics\CompressorMap.vb" /> diff --git a/VECTOAux/VectoAuxiliariesTests/UnitTests/AverageElectricalDemandTests.vb b/VECTOAux/VectoAuxiliariesTests/UnitTests/AverageElectricalDemandTests.vb index 3144cff50876fcad107a45a4e9254f6d373f05b2..539d3648ab5c504ffa24b3be6bb6cac0708ba735 100644 --- a/VECTOAux/VectoAuxiliariesTests/UnitTests/AverageElectricalDemandTests.vb +++ b/VECTOAux/VectoAuxiliariesTests/UnitTests/AverageElectricalDemandTests.vb @@ -8,30 +8,24 @@ Namespace UnitTests Public Class AverageElectricalDemandTests #Region "Helpers" - Private Function GetAverageElectricalDemandInstance() As AverageElectricalDemand + Private Function GetAverageElectricalDemandInstance() As M2_AverageElectricalLoadDemand Dim alt As IAlternator = New AlternatorMock - Dim consumers As List(Of IElectricalConsumer) = New List(Of IElectricalConsumer)() - consumers.Add(New ElectricalConsumerMock) - consumers.Add(New ElectricalConsumerMock) - Return New AverageElectricalDemand(consumers, 26.3) + Dim consumers As IElectricalConsumerList = CType(New ElectricalConsumerList(), IElectricalConsumerList) + + Return New M2_AverageElectricalLoadDemand(consumers, 26.3) End Function #End Region <Test()> Public Sub NewTest() - Dim target As AverageElectricalDemand = GetAverageElectricalDemandInstance() + Dim target As M2_AverageElectricalLoadDemand = GetAverageElectricalDemandInstance() Assert.IsNotNull(target) End Sub - <Test()> - Public Sub InitialiseTest() - Dim target As AverageElectricalDemand = GetAverageElectricalDemandInstance() - Assert.IsTrue(target.Initialise()) - End Sub <Test()> Public Sub GetElectricalConsumersTest() - Dim target As AverageElectricalDemand = GetAverageElectricalDemandInstance() + Dim target As M2_AverageElectricalLoadDemand = GetAverageElectricalDemandInstance() Assert.Fail() End Sub @@ -41,7 +35,7 @@ Namespace UnitTests Dim consumers As List(Of IElectricalConsumer) = New List(Of IElectricalConsumer)() Dim mock As ElectricalConsumerMock = New ElectricalConsumerMock consumers.Add(mock) - Dim target As AverageElectricalDemand = New AverageElectricalDemand(consumers, 26.3) + Dim target As M2_AverageElectricalLoadDemand = New M2_AverageElectricalLoadDemand(consumers, 26.3) 'Assert.IsTrue(target.ElectricalConsumers.Contains(mock)) Assert.Fail() @@ -49,23 +43,10 @@ Namespace UnitTests End Sub - <Test()> - Public Sub GetAlternatorTest() - Dim alt As IAlternator = New AlternatorMock - Dim consumers As List(Of IElectricalConsumer) = New List(Of IElectricalConsumer)() - Dim mock As ElectricalConsumerMock = New ElectricalConsumerMock - consumers.Add(mock) - Dim target As AverageElectricalDemand = New AverageElectricalDemand(consumers, 26.3) - - 'Assert.AreSame(alt, target.Alternator) TODO: CHECK - Assert.Fail() - End Sub - - <Test()> Public Sub GetAveragePowerAtAlternatorTest() - Dim target As AverageElectricalDemand = GetAverageElectricalDemandInstance() + Dim target As M2_AverageElectricalLoadDemand = GetAverageElectricalDemandInstance() Dim actual As Single = target.GetAveragePowerDemandAtAlternator() Assert.AreEqual(actual, 200) @@ -73,7 +54,7 @@ Namespace UnitTests <Test()> Public Sub GetAveragePowerAtCrankTest() - Dim target As AverageElectricalDemand = GetAverageElectricalDemandInstance() + Dim target As M2_AverageElectricalLoadDemand = GetAverageElectricalDemandInstance() Dim expected As Single = 400.0 Dim actual As Single = target.GetAveragePowerAtCrank(100) Assert.AreEqual(expected, actual) diff --git a/VECTOAux/VectoAuxiliariesTests/UnitTests/AveragePneumaticLoadDemandTests.vb b/VECTOAux/VectoAuxiliariesTests/UnitTests/AveragePneumaticLoadDemandTests.vb index ded141b214dfecfda28820fd44addc944e150c13..4fb73fca51a186d40884ae88ef63a62d157c118d 100644 --- a/VECTOAux/VectoAuxiliariesTests/UnitTests/AveragePneumaticLoadDemandTests.vb +++ b/VECTOAux/VectoAuxiliariesTests/UnitTests/AveragePneumaticLoadDemandTests.vb @@ -120,6 +120,29 @@ Namespace UnitTests End Sub + 'CompressorGearEfficiency = 0.99 + <Test()> + Public Sub AverageLoadValueUsingDefaultAuxValues_AveragePowerAtTheCrank_0_99EFTest() + + initialise() + + _defaultInputConfig.CompressorGearEfficiency = 0.99 + + Dim psAuxConfig = CType(New PneumaticsAuxilliariesConfig(True), IPneumaticsAuxilliariesConfig) + Dim psActuationsMap = CType(New PneumaticActuationsMAP(_actuationsMapPath), IPneumaticActuationsMAP) + Dim psCompressorMap = CType(New CompressorMap(_compressorMapPath), ICompressorMap) + + psCompressorMap.Initialise() + + Dim target As New AveragePneumaticLoadDemand(_defaultInputConfig, psAuxConfig, psActuationsMap, psCompressorMap, _vehicleMassKG, "Urban", _cycleDurationMinutes) + + Dim expected As Single = 0.025780227 + Dim actual As Single = target.GetAveragePowerDemandAtCrankFromPneumatics() + + Assert.AreEqual(expected, actual) + + End Sub + <Test()> Public Sub AverageLoadValueUsingDefaultAuxValues_TotalRequiredAirDeliveryRateTest() @@ -140,22 +163,149 @@ Namespace UnitTests End Sub + 'SmartRegeneration = False + <Test()> + Public Sub AverageLoadValueUsingDefaultAuxValues_TotalRequiredAirDeliveryRate_SmartRegenOffTest() - 'CompressorGearEfficiency = 0.99 + initialise() - 'SmartRegeneration = False + Dim psAuxConfig = CType(New PneumaticsAuxilliariesConfig(True), IPneumaticsAuxilliariesConfig) + Dim psActuationsMap = CType(New PneumaticActuationsMAP(_actuationsMapPath), IPneumaticActuationsMAP) + Dim psCompressorMap = CType(New CompressorMap(_compressorMapPath), ICompressorMap) + + psCompressorMap.Initialise() + + _defaultInputConfig.SmartRegeneration = False + + Dim target As New AveragePneumaticLoadDemand(_defaultInputConfig, psAuxConfig, psActuationsMap, psCompressorMap, _vehicleMassKG, "Urban", _cycleDurationMinutes) + + Dim expected As Single = 8863.295 + Dim actual As Single = target.TotalAirConsumedPerCycle() + + Assert.AreEqual(expected, actual) + + End Sub 'RetarderBrake = False + <Test()> + Public Sub AverageLoadValueUsingDefaultAuxValues_TotalRequiredAirDeliveryRate_RetarderBrakeOffTest() + + initialise() + + Dim psAuxConfig = CType(New PneumaticsAuxilliariesConfig(True), IPneumaticsAuxilliariesConfig) + Dim psActuationsMap = CType(New PneumaticActuationsMAP(_actuationsMapPath), IPneumaticActuationsMAP) + Dim psCompressorMap = CType(New CompressorMap(_compressorMapPath), ICompressorMap) + + psCompressorMap.Initialise() + + _defaultInputConfig.RetarderBrake = False + + Dim target As New AveragePneumaticLoadDemand(_defaultInputConfig, psAuxConfig, psActuationsMap, psCompressorMap, _vehicleMassKG, "Urban", _cycleDurationMinutes) + + Dim expected As Single = 8541.45 + + Dim actual As Single = Math.Round(target.TotalAirConsumedPerCycle(), 2) + + Assert.AreEqual(expected, actual) + + End Sub 'KneelingHeightMilimeters = 100 + <Test()> + Public Sub AverageLoadValueUsingDefaultAuxValues_TotalRequiredAirDeliveryRate_Kneeling100mmTest() + + initialise() + + Dim psAuxConfig = CType(New PneumaticsAuxilliariesConfig(True), IPneumaticsAuxilliariesConfig) + Dim psActuationsMap = CType(New PneumaticActuationsMAP(_actuationsMapPath), IPneumaticActuationsMAP) + Dim psCompressorMap = CType(New CompressorMap(_compressorMapPath), ICompressorMap) + + psCompressorMap.Initialise() + + _defaultInputConfig.KneelingHeightMilimeters = 100 + + Dim target As New AveragePneumaticLoadDemand(_defaultInputConfig, psAuxConfig, psActuationsMap, psCompressorMap, _vehicleMassKG, "Urban", _cycleDurationMinutes) + + Dim expected As Single = 8557.52 + + Dim actual As Single = Math.Round(target.TotalAirConsumedPerCycle(), 2) + + Assert.AreEqual(expected, actual) + + End Sub 'AirSuspensionControl = "mechanically" + <Test()> + Public Sub AverageLoadValueUsingDefaultAuxValues_TotalRequiredAirDeliveryRate_AirSuspension_mechanicallyTest() + + initialise() + + Dim psAuxConfig = CType(New PneumaticsAuxilliariesConfig(True), IPneumaticsAuxilliariesConfig) + Dim psActuationsMap = CType(New PneumaticActuationsMAP(_actuationsMapPath), IPneumaticActuationsMAP) + Dim psCompressorMap = CType(New CompressorMap(_compressorMapPath), ICompressorMap) + + psCompressorMap.Initialise() + + _defaultInputConfig.AirSuspensionControl = "mechanically" + + Dim target As New AveragePneumaticLoadDemand(_defaultInputConfig, psAuxConfig, psActuationsMap, psCompressorMap, _vehicleMassKG, "Urban", _cycleDurationMinutes) + + Dim expected As Single = 8726.18 + + Dim actual As Single = Math.Round(target.TotalAirConsumedPerCycle(), 2) + + Assert.AreEqual(expected, actual) + + End Sub 'AdBlueDosing = "electric" + <Test()> + Public Sub AverageLoadValueUsingDefaultAuxValues_TotalRequiredAirDeliveryRate_AdBlueDosing_electric_Test() + + initialise() + + Dim psAuxConfig = CType(New PneumaticsAuxilliariesConfig(True), IPneumaticsAuxilliariesConfig) + Dim psActuationsMap = CType(New PneumaticActuationsMAP(_actuationsMapPath), IPneumaticActuationsMAP) + Dim psCompressorMap = CType(New CompressorMap(_compressorMapPath), ICompressorMap) + + psCompressorMap.Initialise() + + _defaultInputConfig.AdBlueDosing = "electric" + + Dim target As New AveragePneumaticLoadDemand(_defaultInputConfig, psAuxConfig, psActuationsMap, psCompressorMap, _vehicleMassKG, "Urban", _cycleDurationMinutes) + + Dim expected As Single = 6712.46 + + Dim actual As Single = Math.Round(target.TotalAirConsumedPerCycle(), 2) + + Assert.AreEqual(expected, actual) + + End Sub 'Doors = "electric" + <Test()> + Public Sub AverageLoadValueUsingDefaultAuxValues_TotalRequiredAirDeliveryRate_Doors_electric_Test() + + initialise() + + Dim psAuxConfig = CType(New PneumaticsAuxilliariesConfig(True), IPneumaticsAuxilliariesConfig) + Dim psActuationsMap = CType(New PneumaticActuationsMAP(_actuationsMapPath), IPneumaticActuationsMAP) + Dim psCompressorMap = CType(New CompressorMap(_compressorMapPath), ICompressorMap) + + psCompressorMap.Initialise() + + _defaultInputConfig.Doors = "electric" + + Dim target As New AveragePneumaticLoadDemand(_defaultInputConfig, psAuxConfig, psActuationsMap, psCompressorMap, _vehicleMassKG, "Urban", _cycleDurationMinutes) + + Dim expected As Single = 6880.88 + + Dim actual As Single = Math.Round(target.TotalAirConsumedPerCycle(), 2) + + Assert.AreEqual(expected, actual) + + End Sub - 'SmartAirCompression = false End Class diff --git a/VECTOAux/VectoAuxiliariesTests/UnitTests/AlternatorsEfficiencyTests.vb b/VECTOAux/VectoAuxiliariesTests/UnitTests/M0_NonSmart_AlternatorsSetEfficiencyTests.vb similarity index 65% rename from VECTOAux/VectoAuxiliariesTests/UnitTests/AlternatorsEfficiencyTests.vb rename to VECTOAux/VectoAuxiliariesTests/UnitTests/M0_NonSmart_AlternatorsSetEfficiencyTests.vb index ee91311168d3f7bdcd171fc3b59be936a951ba37..7eb7540e1e64333be937b8c9d58b355c2154d58d 100644 --- a/VECTOAux/VectoAuxiliariesTests/UnitTests/AlternatorsEfficiencyTests.vb +++ b/VECTOAux/VectoAuxiliariesTests/UnitTests/M0_NonSmart_AlternatorsSetEfficiencyTests.vb @@ -9,7 +9,7 @@ Imports VectoAuxiliaries.Hvac Namespace UnitTests <TestFixture()> -Public Class AlternatorsEfficiencyTests +Public Class M0_NonSmart_AlternatorsSetEfficiencyTests Private Const cstrAlternatorsEfficiencyMapLocation As String = "tests\testAlternatorMap.csv" Private Const cstrHVACMapLocation As String = "TestFiles\TestHvacMap.csv" @@ -45,41 +45,41 @@ End Sub <Test()> Public Sub CreateNewTest() - Dim target As AlternatorsEfficiency = New AlternatorsEfficiency(elecConsumers, hvacInputs, hvacMap, alternatorMap, powernetVoltage) + Dim target As M0_NonSmart_AlternatorsSetEfficiency = New M0_NonSmart_AlternatorsSetEfficiency(elecConsumers, hvacInputs, hvacMap, alternatorMap, powernetVoltage) Assert.IsNotNull(target) End Sub <Test()> <ExpectedException("System.ArgumentException")> Public Sub CreateNew_MissingElecConsumers_ThrowArgumentExceptionTest() - Dim target As AlternatorsEfficiency = New AlternatorsEfficiency(Nothing, hvacInputs, hvacMap, alternatorMap, powernetVoltage) + Dim target As M0_NonSmart_AlternatorsSetEfficiency = New M0_NonSmart_AlternatorsSetEfficiency(Nothing, hvacInputs, hvacMap, alternatorMap, powernetVoltage) End Sub <Test()> <ExpectedException("System.ArgumentException")> Public Sub CreateNew_MissingHVACInputs_ThrowArgumentExceptionTest() - Dim target As AlternatorsEfficiency = New AlternatorsEfficiency(elecConsumers, Nothing, hvacMap, alternatorMap, powernetVoltage) + Dim target As M0_NonSmart_AlternatorsSetEfficiency = New M0_NonSmart_AlternatorsSetEfficiency(elecConsumers, Nothing, hvacMap, alternatorMap, powernetVoltage) End Sub <Test()> <ExpectedException("System.ArgumentException")> Public Sub CreateNew_MissingHVACMAP_ThrowArgumentExceptionTest() - Dim target As AlternatorsEfficiency = New AlternatorsEfficiency(elecConsumers, hvacInputs, Nothing, alternatorMap, powernetVoltage) + Dim target As M0_NonSmart_AlternatorsSetEfficiency = New M0_NonSmart_AlternatorsSetEfficiency(elecConsumers, hvacInputs, Nothing, alternatorMap, powernetVoltage) End Sub <Test()> <ExpectedException("System.ArgumentException")> Public Sub CreateNew_MissingAlternatorMap_ThrowArgumentExceptionTest() - Dim target As AlternatorsEfficiency = New AlternatorsEfficiency(elecConsumers, hvacInputs, hvacMap, Nothing, powernetVoltage) + Dim target As M0_NonSmart_AlternatorsSetEfficiency = New M0_NonSmart_AlternatorsSetEfficiency(elecConsumers, hvacInputs, hvacMap, Nothing, powernetVoltage) End Sub <Test()> Public Sub EfficiencyValueTest() - Dim target As AlternatorsEfficiency = New AlternatorsEfficiency(elecConsumers, hvacInputs, hvacMap, alternatorMap, powernetVoltage) + Dim target As M0_NonSmart_AlternatorsSetEfficiency = New M0_NonSmart_AlternatorsSetEfficiency(elecConsumers, hvacInputs, hvacMap, alternatorMap, powernetVoltage) Dim actual As Single = target.GetEfficiency(2000, 1) @@ -94,7 +94,7 @@ End Sub <Test()> Public Sub HVAC_PowerDemandAmpsTest() - Dim target As AlternatorsEfficiency = New AlternatorsEfficiency(elecConsumers, hvacInputs, hvacMap, alternatorMap, powernetVoltage) + Dim target As M0_NonSmart_AlternatorsSetEfficiency = New M0_NonSmart_AlternatorsSetEfficiency(elecConsumers, hvacInputs, hvacMap, alternatorMap, powernetVoltage) Dim actual As Single Dim expected As Single = 152.091263F '( HVAC POWER OUTPUT IN KW not Watts ) diff --git a/VECTOAux/VectoAuxiliariesTests/UnitTests/ResultCardTests.vb b/VECTOAux/VectoAuxiliariesTests/UnitTests/ResultCardTests.vb new file mode 100644 index 0000000000000000000000000000000000000000..9cd2f072e8a6146226a8c8f4a08a53286051b6a1 --- /dev/null +++ b/VECTOAux/VectoAuxiliariesTests/UnitTests/ResultCardTests.vb @@ -0,0 +1,116 @@ +Imports NUnit.Framework +Imports VectoAuxiliaries.Electrics + +<TestFixture()> +Public Class ResultCardTests + +Private results As New Dictionary(Of Single, Single) +Private resultCard As ResultCard + +Public Sub New() + +results.Add(20, 18) +results.Add(30, 27) +results.Add(40, 36) +results.Add(50, 45) +'results.Add(60, 54) + +resultCard = New ResultCard(results) + +End Sub + + +<Test()> +Public Sub CreateNewResultsOKTest() + + Dim target As New ResultCard(results) + + Assert.IsNotNull(target) + +End Sub + +<Test()> +<ExpectedException("System.ArgumentException")> +Public Sub CreateNewBanResultsNullTest() + + Dim target As New ResultCard(Nothing) + + Assert.IsNotNull(target) + +End Sub + +<Test()> +<ExpectedException("System.ArgumentException")> +Public Sub CreateNewBanResultsInsufficientEntriesTest() + + + Dim target As New ResultCard(New Dictionary(Of Single, Single)) + + +End Sub + +<Test()> +Public Sub GetBotomBoundryValueTest() + +Dim expected As Single = 18 +Dim actual As Single = resultCard.GetSmartCurrentResult(20) + +Assert.AreEqual(expected, actual) + +End Sub + +<Test()> +Public Sub GetCentreBoundayValueTest() + +Dim expected As Single = 36 +Dim actual As Single = resultCard.GetSmartCurrentResult(40) + +Assert.AreEqual(expected, actual) + + +End Sub + + +<Test()> +Public Sub GetTopBoundaryValueTest() + +Dim expected As Single = 45 +Dim actual As Single = resultCard.GetSmartCurrentResult(50) + +Assert.AreEqual(expected, actual) + +End Sub + +<Test()> +Public Sub GetInterpolatedValue35AmpsTest() + +Dim expected As Single = 31.5 +Dim actual As Single = resultCard.GetSmartCurrentResult(35) + +Assert.AreEqual(expected, actual) + +End Sub + +<Test()> +Public Sub GetExtrapolatedValue60AmpsTest() + +Dim expected As Single = 54 +Dim actual As Single = resultCard.GetSmartCurrentResult(60) + +Assert.AreEqual(expected, actual) + +End Sub + +<Test()> +Public Sub GetExtrapolatedValue10AmpsTest() + +Dim expected As Single = 9 +Dim actual As Single = resultCard.GetSmartCurrentResult(10) + +Assert.AreEqual(expected, actual) + +End Sub + + +End Class + diff --git a/VECTOAux/VectoAuxiliariesTests/VectoAuxiliariesTests.vbproj b/VECTOAux/VectoAuxiliariesTests/VectoAuxiliariesTests.vbproj index f6025ac4899a493bc13bd2f9d02ee1d18ee5867f..e895c67aff36bb579131fb184fdc5a4f7edb3b90 100644 --- a/VECTOAux/VectoAuxiliariesTests/VectoAuxiliariesTests.vbproj +++ b/VECTOAux/VectoAuxiliariesTests/VectoAuxiliariesTests.vbproj @@ -88,7 +88,7 @@ </ItemGroup> <ItemGroup> <Compile Include="Mocks\HVACMapMock.vb" /> - <Compile Include="UnitTests\AlternatorsEfficiencyTests.vb" /> + <Compile Include="UnitTests\M0_NonSmart_AlternatorsSetEfficiencyTests.vb" /> <Compile Include="UnitTests\AveragePneumaticLoadDemandTests.vb" /> <Compile Include="UnitTests\ElectricalConsumerListTests.vb" /> <Compile Include="UnitTests\HVACMapTests.vb" /> @@ -118,6 +118,7 @@ <DependentUpon>Settings.settings</DependentUpon> <DesignTimeSharedInput>True</DesignTimeSharedInput> </Compile> + <Compile Include="UnitTests\ResultCardTests.vb" /> </ItemGroup> <ItemGroup> <EmbeddedResource Include="My Project\Resources.resx">