From 488a769a016023aa217fa68f4720885665c8c8dc Mon Sep 17 00:00:00 2001
From: "Burns, Terry" <Terry.Burns@ricardo.com>
Date: Wed, 5 Nov 2014 13:37:10 +0000
Subject: [PATCH] M6 and M7 Written, now looking at unit tests for them. WIP
 Checkpoint

git-tfs-id: [http://tfs00.element.root.com:8080/tfs/TFSCollection]$/VECTO;C1661
---
 .../AuxillaryTestHarness.vbproj               |   5 +-
 AuxillaryTestHarness/Dashboard.vb             |   2 +-
 .../testAlternatorMap - Copy.csv              |  36 +++
 AuxillaryTestHarness/testAlternatorMap.csv    |  70 ++---
 VECTO/Input Files/cVECTO.vb                   |   1 -
 .../VectoAuxiliaries/DownstreamModules/IM6.vb |  28 ++
 .../VectoAuxiliaries/DownstreamModules/IM7.vb |  22 ++
 .../VectoAuxiliaries/DownstreamModules/M6.vb  | 254 ++++++++++++++++++
 .../VectoAuxiliaries/DownstreamModules/M7.vb  |  91 +++++++
 .../IM2_AverageElectricalLoadDemand.vb        |   2 +-
 .../IM5_SmartAlternatorSetGeneration.vb       |  11 +-
 .../M2_AverageElectricalLoadDemand.vb         |   2 +-
 .../Hvac/IM1_AverageHVACLoadDemand.vb         |  10 +-
 .../Hvac/M1_AverageHVACLoadDemand.vb          |  55 ++--
 VECTOAux/VectoAuxiliaries/ISignals.vb         |   8 +-
 VECTOAux/VectoAuxiliaries/Signals.vb          |   8 +
 .../VectoAuxiliaries/VectoAuxiliaries.vbproj  |   4 +
 .../VectoAuxiliariesTests/Mocks/M1_Mock.vb    |  51 ++++
 .../VectoAuxiliariesTests/Mocks/M2_Mock.vb    |  35 +++
 .../VectoAuxiliariesTests/Mocks/M3_Mock.vb    |  32 +++
 .../VectoAuxiliariesTests/Mocks/M4_Mock.vb    |  63 +++++
 .../VectoAuxiliariesTests/Mocks/M5_Mock.vb    |  46 ++++
 .../VectoAuxiliariesTests/Mocks/M6_Mock.vb    | 102 +++++++
 .../M2_AverageElectricalLoadTests.vb          |   2 +-
 .../VectoAuxiliariesTests/UnitTests/M6.vb     | 120 +++++++++
 .../VectoAuxiliariesTests/UnitTests/M7.vb     | 107 ++++++++
 .../VectoAuxiliariesTests.vbproj              |   8 +
 27 files changed, 1099 insertions(+), 76 deletions(-)
 create mode 100644 AuxillaryTestHarness/testAlternatorMap - Copy.csv
 create mode 100644 VECTOAux/VectoAuxiliaries/DownstreamModules/IM6.vb
 create mode 100644 VECTOAux/VectoAuxiliaries/DownstreamModules/IM7.vb
 create mode 100644 VECTOAux/VectoAuxiliaries/DownstreamModules/M6.vb
 create mode 100644 VECTOAux/VectoAuxiliaries/DownstreamModules/M7.vb
 create mode 100644 VECTOAux/VectoAuxiliariesTests/Mocks/M1_Mock.vb
 create mode 100644 VECTOAux/VectoAuxiliariesTests/Mocks/M2_Mock.vb
 create mode 100644 VECTOAux/VectoAuxiliariesTests/Mocks/M3_Mock.vb
 create mode 100644 VECTOAux/VectoAuxiliariesTests/Mocks/M4_Mock.vb
 create mode 100644 VECTOAux/VectoAuxiliariesTests/Mocks/M5_Mock.vb
 create mode 100644 VECTOAux/VectoAuxiliariesTests/Mocks/M6_Mock.vb
 create mode 100644 VECTOAux/VectoAuxiliariesTests/UnitTests/M6.vb
 create mode 100644 VECTOAux/VectoAuxiliariesTests/UnitTests/M7.vb

diff --git a/AuxillaryTestHarness/AuxillaryTestHarness.vbproj b/AuxillaryTestHarness/AuxillaryTestHarness.vbproj
index b040a28ae4..dac2375f54 100644
--- a/AuxillaryTestHarness/AuxillaryTestHarness.vbproj
+++ b/AuxillaryTestHarness/AuxillaryTestHarness.vbproj
@@ -28,7 +28,7 @@
     <UpdatePeriodically>false</UpdatePeriodically>
     <UpdateRequired>false</UpdateRequired>
     <MapFileExtensions>true</MapFileExtensions>
-    <ApplicationRevision>5</ApplicationRevision>
+    <ApplicationRevision>6</ApplicationRevision>
     <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
     <UseApplicationTrust>false</UseApplicationTrust>
     <PublishWizardCompleted>true</PublishWizardCompleted>
@@ -168,6 +168,9 @@
     <Content Include="testPneumaticActuationsMap_GOODMAP.csv">
       <CopyToOutputDirectory>Always</CopyToOutputDirectory>
     </Content>
+    <Content Include="testAlternatorMap - Copy.csv">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </Content>
   </ItemGroup>
   <ItemGroup>
     <ProjectReference Include="..\VECTOAux\VectoAuxiliaries\VectoAuxiliaries.vbproj">
diff --git a/AuxillaryTestHarness/Dashboard.vb b/AuxillaryTestHarness/Dashboard.vb
index 06ba5cf505..ced42557f6 100644
--- a/AuxillaryTestHarness/Dashboard.vb
+++ b/AuxillaryTestHarness/Dashboard.vb
@@ -871,7 +871,7 @@ Private sub RefreshDisplays()
 
      'M2
      txtM2_out_AvgPowerAtAltFromElectrics.Text=auxEnvironment.M2.GetAveragePowerDemandAtAlternator
-     txtM2_out_AvgPowerAtCrankFromElectrics.Text=auxEnvironment.M2.GetAveragePowerAtCrank()
+     txtM2_out_AvgPowerAtCrankFromElectrics.Text=auxEnvironment.M2.GetAveragePowerAtCrankFromElectrics()
 
      'M3
      txtM3_out_AveragePowerAtCrankFromPneumatics.Text=auxEnvironment.M3.GetAveragePowerDemandAtCrankFromPneumatics
diff --git a/AuxillaryTestHarness/testAlternatorMap - Copy.csv b/AuxillaryTestHarness/testAlternatorMap - Copy.csv
new file mode 100644
index 0000000000..3968d6970a
--- /dev/null
+++ b/AuxillaryTestHarness/testAlternatorMap - Copy.csv	
@@ -0,0 +1,36 @@
+Amp,RPM,Efficiency
+10,1500,0.615
+27,1500,0.70
+53,1500,0.1947
+63,1500,0.00
+68,1500,0.00
+125,1500,0.00
+136,1500,0.00
+10,2000,0.62
+27,2000,0.70
+53,2000,0.30
+63,2000,0.1462
+68,2000,0.692
+125,2000,0.00
+136,2000,0.00
+10,4000,0.64
+27,4000,0.6721
+53,4000,0.7211
+63,4000,0.7400
+68,4000,0.7352
+125,4000,0.6800
+136,4000,0.6694
+10,6000,0.5300
+27,6000,0.5798
+53,6000,0.6560
+63,6000,0.6853
+68,6000,0.7000
+125,6000,0.6329
+136,6000,0.6200
+10,7000,0.4750
+27,7000,0.5337
+53,7000,0.6235
+63,7000,0.6580
+68,7000,0.6824
+125,7000,0.6094
+136,7000,0.5953
diff --git a/AuxillaryTestHarness/testAlternatorMap.csv b/AuxillaryTestHarness/testAlternatorMap.csv
index 3968d6970a..726d26f734 100644
--- a/AuxillaryTestHarness/testAlternatorMap.csv
+++ b/AuxillaryTestHarness/testAlternatorMap.csv
@@ -1,36 +1,36 @@
 Amp,RPM,Efficiency
-10,1500,0.615
-27,1500,0.70
-53,1500,0.1947
-63,1500,0.00
-68,1500,0.00
-125,1500,0.00
-136,1500,0.00
-10,2000,0.62
-27,2000,0.70
-53,2000,0.30
-63,2000,0.1462
-68,2000,0.692
-125,2000,0.00
-136,2000,0.00
-10,4000,0.64
-27,4000,0.6721
-53,4000,0.7211
-63,4000,0.7400
-68,4000,0.7352
-125,4000,0.6800
-136,4000,0.6694
-10,6000,0.5300
-27,6000,0.5798
-53,6000,0.6560
-63,6000,0.6853
-68,6000,0.7000
-125,6000,0.6329
-136,6000,0.6200
-10,7000,0.4750
-27,7000,0.5337
-53,7000,0.6235
-63,7000,0.6580
-68,7000,0.6824
-125,7000,0.6094
-136,7000,0.5953
+10,1500,0.5
+27,1500,0.5
+53,1500,0.5
+63,1500,0.5
+68,1500,0.5
+125,1500,0.5
+136,1500,0.5
+10,2000,0.5
+27,2000,0.5
+53,2000,0.5
+63,2000,0.5
+68,2000,0.5
+125,2000,0.5
+136,2000,0.5
+10,4000,0.5
+27,4000,0.5
+53,4000,0.5
+63,4000,0.5
+68,4000,0.5
+125,4000,0.5
+136,4000,0.5
+10,6000,0.5
+27,6000,0.5
+53,6000,0.5
+63,6000,0.5
+68,6000,0.5
+125,6000,0.5
+136,6000,0.5
+10,7000,0.5
+27,7000,0.5
+53,7000,0.5
+63,7000,0.5
+68,7000,0.5
+125,7000,0.5
+136,7000,0.5
diff --git a/VECTO/Input Files/cVECTO.vb b/VECTO/Input Files/cVECTO.vb
index e360f84393..d64bcba953 100644
--- a/VECTO/Input Files/cVECTO.vb	
+++ b/VECTO/Input Files/cVECTO.vb	
@@ -9,7 +9,6 @@
 '
 ' See the LICENSE.txt for the specific language governing permissions and limitations.
 
-Imports VectoAuxiliaries.ElectricalConsumers
 
 Imports System.Collections.Generic
 
diff --git a/VECTOAux/VectoAuxiliaries/DownstreamModules/IM6.vb b/VECTOAux/VectoAuxiliaries/DownstreamModules/IM6.vb
new file mode 100644
index 0000000000..9989fddbeb
--- /dev/null
+++ b/VECTOAux/VectoAuxiliaries/DownstreamModules/IM6.vb
@@ -0,0 +1,28 @@
+
+'Module 6: OVER-RUN smart and non-smart systems alternator and air compressor load calculations
+
+Namespace DownstreamModules
+
+
+Public Interface IM6
+
+'Watts
+ Readonly Property  OverrunFlag As Integer
+ Readonly Property  SmartElecAndPneumaticsCompressorFlag As integer
+ ReadOnly Property  SmartElecAndPneumaticAltPowerGenAtCrank As Single
+ ReadOnly Property  SmartElecAndPneumaticAirCompPowerGenAtCrank As Single
+ ReadOnly Property  SmartElecOnlyAltPowerGenAtCrank As Single
+ ReadOnly Property  AveragePowerDemandAtCrankFromPneumatics As Single
+ ReadOnly Property  SmartPneumaticOnlyAirCompPowerGenAtCrank As Single
+                   
+ ReadOnly Property  AvgPowerDemandAtCrankFromElectricsIncHVAC As Single
+ ReadOnly Property  SmartPneumaticsOnlyCompressorFlag As Integer
+ 
+
+
+End Interface
+
+
+End Namespace
+
+
diff --git a/VECTOAux/VectoAuxiliaries/DownstreamModules/IM7.vb b/VECTOAux/VectoAuxiliaries/DownstreamModules/IM7.vb
new file mode 100644
index 0000000000..c005492aae
--- /dev/null
+++ b/VECTOAux/VectoAuxiliaries/DownstreamModules/IM7.vb
@@ -0,0 +1,22 @@
+
+Imports VectoAuxiliaries.Electrics
+Imports VectoAuxiliaries.Pneumatics
+Imports VectoAuxiliaries.Hvac
+
+Namespace DownstreamModules
+
+
+Public Interface IM7
+
+
+   ReadOnly Property SmartElectricalAndPneumaticAuxAltPowerGenAtCrank As Single
+   ReadOnly Property SmartElectricalAndPneumaticAuxAirCompPowerGenAtCrank As Single
+   ReadOnly property SmartElectricalOnlyAuxAltPowerGenAtCrank as single
+   ReadOnly Property SmartPneumaticOnlyAuxAirCompPowerGenAtCrank As Single
+   
+End Interface
+
+
+End Namespace
+
+
diff --git a/VECTOAux/VectoAuxiliaries/DownstreamModules/M6.vb b/VECTOAux/VectoAuxiliaries/DownstreamModules/M6.vb
new file mode 100644
index 0000000000..7eb9ab7547
--- /dev/null
+++ b/VECTOAux/VectoAuxiliaries/DownstreamModules/M6.vb
@@ -0,0 +1,254 @@
+
+Imports VectoAuxiliaries.Electrics
+Imports VectoAuxiliaries.Pneumatics
+Imports VectoAuxiliaries.Hvac
+
+Namespace DownstreamModules
+
+Public Class M6
+Implements IM6
+
+
+ private _m1      As IM1_AverageHVACLoadDemand
+ private _m2      As IM2_AverageElectricalLoadDemand
+ private _m3      As IM3_AveragePneumaticLoadDemand
+ Private _m4      As IM4_AirCompressor
+ Private _m5      As IM5_SmartAlternatorSetGeneration
+ Private _signals As ISignals
+
+
+ Public ReadOnly Property AveragePowerDemandAtCrankFromPneumatics As Single Implements IM6.AveragePowerDemandAtCrankFromPneumatics
+        Get
+         Return _m3.GetAveragePowerDemandAtCrankFromPneumatics
+        End Get
+    End Property
+ Public ReadOnly Property AvgPowerDemandAtCrankFromElectricsIncHVAC As Single Implements IM6.AvgPowerDemandAtCrankFromElectricsIncHVAC
+        Get
+ 
+          Return Sum1
+
+        End Get
+
+    End Property
+ Public ReadOnly Property OverrunFlag As Integer Implements IM6.OverrunFlag
+        
+        Get
+           Return  VC0
+        End Get
+    End Property
+ Public ReadOnly Property SmartElecAndPneumaticAltPowerGenAtCrank As Single Implements IM6.SmartElecAndPneumaticAltPowerGenAtCrank
+        Get
+         Return Max1
+        End Get
+    End Property
+ Public ReadOnly Property SmartElecAndPneumaticAirCompPowerGenAtCrank As Single Implements IM6.SmartElecAndPneumaticAirCompPowerGenAtCrank
+        Get
+        Return Sum16
+        End Get
+    End Property
+ Public ReadOnly Property SmartElecAndPneumaticsCompressorFlag As integer Implements IM6.SmartElecAndPneumaticsCompressorFlag
+        Get
+         Return VC2
+        End Get
+    End Property
+ Public ReadOnly Property SmartElecOnlyAltPowerGenAtCrank As Single Implements IM6.SmartElecOnlyAltPowerGenAtCrank
+        Get
+         Return Max2
+        End Get
+    End Property
+ Public ReadOnly Property SmartPneumaticOnlyAirCompPowerGenAtCrank As Single Implements IM6.SmartPneumaticOnlyAirCompPowerGenAtCrank
+        Get
+         Return Sum19
+        End Get
+    End Property
+ Public ReadOnly Property SmartPneumaticsOnlyCompressorFlag As Integer Implements IM6.SmartPneumaticsOnlyCompressorFlag
+        Get
+         Return VC4
+        End Get
+    End Property
+
+
+'switches
+Private ReadOnly Property SW1 As Single
+    Get
+
+    Return If( _signals.SmartElectrics, _m5.AlternatorsGenerationPowerAtCrankTractionOnWatts,Sum1)
+
+    End Get
+End Property
+
+'Max's
+
+'Max of Sum5 vs Sum10
+Public ReadOnly Property Max1 As Single
+    Get
+       Return If( Sum5 > Sum10, Sum5, Sum10)
+    End Get
+End Property
+'Max of Sum10 vs Sum7
+Public ReadOnly Property Max2 As Single
+    Get
+        Return If( Sum7 > Sum10, Sum7, Sum10)
+    End Get
+End Property
+
+'Value Choices
+Public ReadOnly Property VC0 As Single
+    Get
+    Return  If( Sum3<0,1,0)
+    End Get
+End Property
+Public ReadOnly Property VC1 As Single
+    Get
+     Return If( Sum12>0,1,0)
+    End Get
+End Property
+Public ReadOnly Property VC2 As Single
+    Get
+    Return If( Sum12<0 orelse Sum12=0,1,0)
+    End Get
+End Property
+Public ReadOnly Property VC3 As Single
+    Get
+    Return If( Sum13>0,1,0)
+    End Get
+End Property
+Public ReadOnly Property VC4 As Single
+    Get
+    Return If( Sum13<0 orelse Sum13=0, 1,0)
+    End Get
+End Property
+
+'Sums
+Public ReadOnly Property Sum1 As Single
+    Get
+      Return  _m1.AveragePowerDemandAtCrankFromHVACElectricsWatts + _m2.GetAveragePowerAtCrankFromElectrics
+    End Get
+End Property
+Public ReadOnly Property Sum2 As Single
+    Get
+
+    Return _signals.PreExistingAuxPower + _
+           _m1.AveragePowerDemandAtCrankFromHVACMechanicalsWatts +  _
+           _m3.GetAveragePowerDemandAtCrankFromPneumatics + _
+           SW1
+
+    End Get
+End Property
+Public ReadOnly Property Sum3 As Single
+    Get
+
+    Return _signals.EngineMotoringPower  + _
+           _signals.EngineDrivelinePower + _
+           Sum2 
+
+    End Get
+End Property
+Public ReadOnly Property Sum4 As Single
+    Get
+
+      Return Sum3 - SW1 - _m3.GetAveragePowerDemandAtCrankFromPneumatics + _m4.GetPowerCompressorOff
+
+    End Get
+End Property
+Public ReadOnly Property Sum5 As Single
+    Get
+      Return OverrunFlag * Sum4
+    End Get
+End Property
+Public ReadOnly Property Sum6 As Single 
+    Get
+     Return Sum4  -  _m4.GetPowerCompressorOff + _m3.GetAveragePowerDemandAtCrankFromPneumatics
+    End Get
+End Property
+Public ReadOnly Property Sum7 As Single
+    Get
+     Return VC0 * Sum6
+    End Get
+End Property
+Public ReadOnly Property Sum8 As Single
+    Get
+    Return  Sum4 + SW1
+    End Get
+End Property
+Public ReadOnly Property Sum9 As Single
+    Get
+    Return VC0 * Sum8
+    End Get
+End Property
+Public ReadOnly Property Sum10 As Single
+    Get
+    Return -1 * _m5.AlternatorsGenerationPowerAtCrankOverrunWatts
+    End Get
+End Property
+Public ReadOnly Property Sum11 As Single
+    Get
+      Return Sum5 - Max1
+    End Get
+End Property
+Public ReadOnly Property Sum12 As Single
+    Get
+    Return _m4.GetPowerDifference + Sum11
+    End Get
+End Property
+Public ReadOnly Property Sum13 As Single
+    Get
+     Return Sum9 + _m4.GetPowerDifference
+    End Get
+End Property
+Public ReadOnly Property Sum14 As Single
+    Get
+    Return VC1 * _m4.GetPowerCompressorOff
+    End Get
+End Property
+Public ReadOnly Property Sum15 As Single
+    Get
+    Return VC2 * _m4.GetPowerCompressorOn
+    End Get
+End Property
+Public ReadOnly property Sum16 as single
+    Get
+      Return Sum14 + Sum16
+    End Get
+End Property
+Public ReadOnly Property Sum17 As Single
+    Get
+    Return _m4.GetPowerCompressorOff * VC3
+    End Get
+End Property
+Public ReadOnly Property Sum18 As Single
+    Get
+    Return VC4 * _m4.GetPowerCompressorOn
+    End Get
+End Property
+Public ReadOnly Property Sum19 As Single
+    Get
+    Return Sum17 + Sum18
+    end get
+End Property
+
+
+
+ Public Sub new ( m1 As IM1_AverageHVACLoadDemand,
+                  m2 As IM2_AverageElectricalLoadDemand,
+                  m3 As IM3_AveragePneumaticLoadDemand,
+                  m4 As IM4_AirCompressor,
+                  m5 As IM5_SmartAlternatorSetGeneration ,
+                  signals As ISignals )
+
+      _m1=m1
+      _m2=m2
+      _m3=m3
+      _m4=m4
+      _m5=m5
+      _signals= signals
+                  
+ End Sub
+
+
+End Class
+
+End Namespace
+
+
+
diff --git a/VECTOAux/VectoAuxiliaries/DownstreamModules/M7.vb b/VECTOAux/VectoAuxiliaries/DownstreamModules/M7.vb
new file mode 100644
index 0000000000..4d1f1f8ddd
--- /dev/null
+++ b/VECTOAux/VectoAuxiliaries/DownstreamModules/M7.vb
@@ -0,0 +1,91 @@
+Imports VectoAuxiliaries.Electrics
+Imports VectoAuxiliaries.Pneumatics
+Imports VectoAuxiliaries.Hvac
+
+Namespace DownstreamModules
+
+Public Class M7
+     implements IM7
+
+       Private _m5 As IM5_SmartAlternatorSetGeneration
+       Private _m6 As IM6
+       Private _signals As ISignals
+
+        'Boolan  Conditions IE 
+        Private readonly property C1 As Boolean
+
+           Get
+             Return _m6.OverrunFlag=1 Andalso _signals.ClutchEngaged Andalso _signals.InNeutral=false
+           End Get
+
+       End Property
+
+
+        'Internal Switched Outputs 
+        Private readonly Property SW1 As Single
+           Get
+           Return If ( _signals.Idle, _m5.AlternatorsGenerationPowerAtCrankIdleWatts, _m5.AlternatorsGenerationPowerAtCrankTractionOnWatts)
+           End Get
+       End Property
+        Private readonly Property SW2 As Single
+           Get
+             Return  If( C1, _m6.SmartElecAndPneumaticAltPowerGenAtCrank, SW1)
+           End Get
+       End Property
+        Private readonly Property SW3 As Single
+           Get
+            Return If( C1,_m6.SmartElecAndPneumaticAirCompPowerGenAtCrank,_m6.AveragePowerDemandAtCrankFromPneumatics)
+           End Get
+       End Property
+        Private readonly Property SW4 As Single
+           Get
+            Return If( C1,_m6.SmartElecOnlyAltPowerGenAtCrank,SW1)
+           End Get
+       End Property
+        Private readonly Property SW5 As Single
+           Get
+           Return If( C1, _m6.SmartPneumaticOnlyAirCompPowerGenAtCrank,_m6.AveragePowerDemandAtCrankFromPneumatics)
+           End Get
+       End Property
+       
+
+        'Public readonly properties  ( Outputs )
+        Public ReadOnly Property SmartElectricalAndPneumaticAuxAltPowerGenAtCrank As Single Implements IM7.SmartElectricalAndPneumaticAuxAltPowerGenAtCrank
+            Get
+               Return SW2
+            End Get
+        End Property
+        Public ReadOnly Property SmartElectricalAndPneumaticAuxAirCompPowerGenAtCrank As Single Implements IM7.SmartElectricalAndPneumaticAuxAirCompPowerGenAtCrank
+            Get
+            Return SW3
+            End Get
+        End Property
+        Public ReadOnly Property SmartElectricalOnlyAuxAltPowerGenAtCrank As Single Implements IM7.SmartElectricalOnlyAuxAltPowerGenAtCrank
+            Get
+            Return SW4
+            End Get
+        End Property
+        Public ReadOnly Property SmartPneumaticOnlyAuxAirCompPowerGenAtCrank As Single Implements IM7.SmartPneumaticOnlyAuxAirCompPowerGenAtCrank
+            Get
+            Return SW5
+            End Get
+        End Property
+
+        Public sub new ( m5 as IM5_SmartAlternatorSetGeneration, _
+                         m6 As IM6, _
+                         signals As ISignals)
+            
+          _m5  = m5
+          _m6  = m6
+          _signals = signals
+
+        End Sub
+
+
+End Class
+
+
+End Namespace
+
+
+
diff --git a/VECTOAux/VectoAuxiliaries/Electrics/IM2_AverageElectricalLoadDemand.vb b/VECTOAux/VectoAuxiliaries/Electrics/IM2_AverageElectricalLoadDemand.vb
index 269dc64829..4fd313556a 100644
--- a/VECTOAux/VectoAuxiliaries/Electrics/IM2_AverageElectricalLoadDemand.vb
+++ b/VECTOAux/VectoAuxiliaries/Electrics/IM2_AverageElectricalLoadDemand.vb
@@ -3,7 +3,7 @@
 Public Interface IM2_AverageElectricalLoadDemand
 
     Function GetAveragePowerDemandAtAlternator() As Single
-    Function GetAveragePowerAtCrank() As Single
+    Function GetAveragePowerAtCrankFromElectrics() As Single
 
 End Interface
 
diff --git a/VECTOAux/VectoAuxiliaries/Electrics/IM5_SmartAlternatorSetGeneration.vb b/VECTOAux/VectoAuxiliaries/Electrics/IM5_SmartAlternatorSetGeneration.vb
index 8a1fa0c097..a5628d8d26 100644
--- a/VECTOAux/VectoAuxiliaries/Electrics/IM5_SmartAlternatorSetGeneration.vb
+++ b/VECTOAux/VectoAuxiliaries/Electrics/IM5_SmartAlternatorSetGeneration.vb
@@ -1,4 +1,8 @@
-Public Interface IM5_SmartAlternatorSetGeneration
+
+
+Namespace Electrics
+
+Public Interface IM5_SmartAlternatorSetGeneration
 
 
 
@@ -7,7 +11,10 @@ function  AlternatorsGenerationPowerAtCrankTractionOnWatts() As Single
 function  AlternatorsGenerationPowerAtCrankOverrunWatts() As Single 
 
 
+End Interface
+
 
 
+End Namespace
+
 
-End Interface
diff --git a/VECTOAux/VectoAuxiliaries/Electrics/M2_AverageElectricalLoadDemand.vb b/VECTOAux/VectoAuxiliaries/Electrics/M2_AverageElectricalLoadDemand.vb
index 2907be683d..f4b2731503 100644
--- a/VECTOAux/VectoAuxiliaries/Electrics/M2_AverageElectricalLoadDemand.vb
+++ b/VECTOAux/VectoAuxiliaries/Electrics/M2_AverageElectricalLoadDemand.vb
@@ -38,7 +38,7 @@
         End Function
 
 
-        Public Function GetAveragePowerAtCrank() As Single Implements IM2_AverageElectricalLoadDemand.GetAveragePowerAtCrank
+        Public Function GetAveragePowerAtCrankFromElectrics() As Single Implements IM2_AverageElectricalLoadDemand.GetAveragePowerAtCrankFromElectrics
 
             Dim ElectricalPowerDemandsWatts As Single = GetAveragePowerDemandAtAlternator()
             Dim alternatorsEfficiency As Single       = _module0.AlternatorsEfficiency
diff --git a/VECTOAux/VectoAuxiliaries/Hvac/IM1_AverageHVACLoadDemand.vb b/VECTOAux/VectoAuxiliaries/Hvac/IM1_AverageHVACLoadDemand.vb
index b78670a6d5..387b54fe9d 100644
--- a/VECTOAux/VectoAuxiliaries/Hvac/IM1_AverageHVACLoadDemand.vb
+++ b/VECTOAux/VectoAuxiliaries/Hvac/IM1_AverageHVACLoadDemand.vb
@@ -1,4 +1,8 @@
-Public Interface IM1_AverageHVACLoadDemand
+
+Namespace Pneumatics
+
+
+Public Interface IM1_AverageHVACLoadDemand
 
 Function AveragePowerDemandAtCrankFromHVACMechanicalsWatts() As Single
 
@@ -14,3 +18,7 @@ Function HVACFuelingLitresPerHour() As Single
 
 
 End Interface
+
+End Namespace
+
+
diff --git a/VECTOAux/VectoAuxiliaries/Hvac/M1_AverageHVACLoadDemand.vb b/VECTOAux/VectoAuxiliaries/Hvac/M1_AverageHVACLoadDemand.vb
index a333876420..3eb3446449 100644
--- a/VECTOAux/VectoAuxiliaries/Hvac/M1_AverageHVACLoadDemand.vb
+++ b/VECTOAux/VectoAuxiliaries/Hvac/M1_AverageHVACLoadDemand.vb
@@ -1,4 +1,5 @@
 Imports VectoAuxiliaries.Electrics
+Imports VectoAuxiliaries.Pneumatics
 
 Namespace Hvac
 
@@ -7,49 +8,49 @@ Namespace Hvac
 
 
     Private _m0 As IM0_NonSmart_AlternatorsSetEfficiency
-    Private _alternatorGearEfficiency As Single 
-    Private _compressorGearEfficiency As single
+    Private _alternatorGearEfficiency As Single
+    Private _compressorGearEfficiency As Single
     Private _hvacInputs As IHVACInputs
     Private _hvacMap As IHVACMap
     Private _signals As ISignals
-    Private _powernetVoltage As single
+    Private _powernetVoltage As Single
     Private _steadyStateModel As IHVACSteadyStateModel
 
 
-    Public Sub new ( m0 As IM0_NonSmart_AlternatorsSetEfficiency, hvacMap As IHVACMap, hvacInputs As IHVACInputs, altGearEfficiency As Single,compressorGearEfficiency As Single,  powernetVoltage As Single, signals As ISignals, ssm As IHVACSteadyStateModel )
+    Public Sub New(m0 As IM0_NonSmart_AlternatorsSetEfficiency, hvacMap As IHVACMap, hvacInputs As IHVACInputs, altGearEfficiency As Single, compressorGearEfficiency As Single, powernetVoltage As Single, signals As ISignals, ssm As IHVACSteadyStateModel)
 
           'Sanity Check - Illegal operations without all params.
-          If m0 is Nothing then  Throw New ArgumentException("Module0 as supplied is null")
-          If hvacMap is Nothing then  Throw New ArgumentException("hvacMap as supplied is null")
-          If hvacInputs is Nothing then  Throw New ArgumentException("hvacInputs as supplied is null")
-          If altGearEfficiency< ElectricConstants.AlternatorPulleyEfficiencyMin orelse altGearEfficiency> ElectricConstants.AlternatorPulleyEfficiencyMax then _
-              Throw New ArgumentException(String.Format("Gear efficiency must be between {0} and {1}",ElectricConstants.AlternatorPulleyEfficiencyMin,ElectricConstants.AlternatorPulleyEfficiencyMax ))
+          If m0 Is Nothing Then Throw New ArgumentException("Module0 as supplied is null")
+          If hvacMap Is Nothing Then Throw New ArgumentException("hvacMap as supplied is null")
+          If hvacInputs Is Nothing Then Throw New ArgumentException("hvacInputs as supplied is null")
+          If altGearEfficiency < ElectricConstants.AlternatorPulleyEfficiencyMin OrElse altGearEfficiency > ElectricConstants.AlternatorPulleyEfficiencyMax Then _
+              Throw New ArgumentException(String.Format("Gear efficiency must be between {0} and {1}", ElectricConstants.AlternatorPulleyEfficiencyMin, ElectricConstants.AlternatorPulleyEfficiencyMax))
 
-          If signals is Nothing then Throw New Exception ("Signals object as supplied is null")
-          If powernetVoltage< ElectricConstants.PowenetVoltageMin orelse powernetVoltage> ElectricConstants.PowenetVoltageMax then _
-          Throw New ArgumentException(String.Format("PowenetVoltage supplied must be in the range {0} to {1}",ElectricConstants.PowenetVoltageMin,ElectricConstants.PowenetVoltageMax))
-          If ssm is Nothing then Throw New ArgumentException("Steady State model was not supplied")
-          If compressorGearEfficiency< 0 orelse altGearEfficiency> 1 then _
-              Throw New ArgumentException(String.Format("Compressor Gear efficiency must be between {0} and {1}",0,1 ))
+          If signals Is Nothing Then Throw New Exception("Signals object as supplied is null")
+          If powernetVoltage < ElectricConstants.PowenetVoltageMin OrElse powernetVoltage > ElectricConstants.PowenetVoltageMax Then _
+          Throw New ArgumentException(String.Format("PowenetVoltage supplied must be in the range {0} to {1}", ElectricConstants.PowenetVoltageMin, ElectricConstants.PowenetVoltageMax))
+          If ssm Is Nothing Then Throw New ArgumentException("Steady State model was not supplied")
+          If compressorGearEfficiency < 0 OrElse altGearEfficiency > 1 Then _
+              Throw New ArgumentException(String.Format("Compressor Gear efficiency must be between {0} and {1}", 0, 1))
 
 
           'Assign
-          _m0=m0
-          _hvacMap= hvacMap
+          _m0 = m0
+          _hvacMap = hvacMap
           _hvacInputs = hvacInputs
-          _alternatorGearEfficiency=altGearEfficiency
+          _alternatorGearEfficiency = altGearEfficiency
           _signals = signals
-          _steadyStateModel=ssm
+          _steadyStateModel = ssm
           _compressorGearEfficiency = compressorGearEfficiency
-          _powernetVoltage=powernetVoltage
+          _powernetVoltage = powernetVoltage
+
 
 
-         
     End Sub
 
 
-        Public Function AveragePowerDemandAtCrankFromHVACMechanicalsWatts() As Single Implements IM1_AverageHVACLoadDemand.AveragePowerDemandAtCrankFromHVACMechanicalsWatts          
-            
+        Public Function AveragePowerDemandAtCrankFromHVACMechanicalsWatts() As Single Implements IM1_AverageHVACLoadDemand.AveragePowerDemandAtCrankFromHVACMechanicalsWatts
+
             Return _steadyStateModel.HVACMechanicalLoadPowerWatts / _compressorGearEfficiency
 
 
@@ -61,15 +62,15 @@ Namespace Hvac
 
        End Function
 
-        Public Function AveragePowerDemandAtCrankFromHVACElectricsWatts() As Single Implements IM1_AverageHVACLoadDemand.AveragePowerDemandAtCrankFromHVACElectricsWatts     
+        Public Function AveragePowerDemandAtCrankFromHVACElectricsWatts() As Single Implements IM1_AverageHVACLoadDemand.AveragePowerDemandAtCrankFromHVACElectricsWatts
+
 
-        
-       Return _steadyStateModel.HVACElectricalLoadPowerWatts/ _m0.AlternatorsEfficiency()
+       Return _steadyStateModel.HVACElectricalLoadPowerWatts / _m0.AlternatorsEfficiency()
 
         End Function
 
 
-        Public Function HVACFuelingLitresPerHour() As Single Implements IM1_AverageHVACLoadDemand.HVACFuelingLitresPerHour   
+        Public Function HVACFuelingLitresPerHour() As Single Implements IM1_AverageHVACLoadDemand.HVACFuelingLitresPerHour
 
 
             Return _steadyStateModel.HVACFuellingLitresPerHour
diff --git a/VECTOAux/VectoAuxiliaries/ISignals.vb b/VECTOAux/VectoAuxiliaries/ISignals.vb
index 27982bef76..de354bedbf 100644
--- a/VECTOAux/VectoAuxiliaries/ISignals.vb
+++ b/VECTOAux/VectoAuxiliaries/ISignals.vb
@@ -1,8 +1,6 @@
 Public Interface ISignals
 
-
-
-
+Property PreExistingAuxPower As single
 Property EngineMotoringPower As single
 property EngineDrivelinePower as single
 property SmartElectrics As Boolean
@@ -11,7 +9,7 @@ Property EngineSpeed as integer
 Property SmartPneumatics As Boolean
 Property TotalCycleTimeSeconds As Integer
 property EngineDrivelineTorque as single
-
-
+Property Idle As Boolean
+Property InNeutral As Boolean
 
 End Interface
diff --git a/VECTOAux/VectoAuxiliaries/Signals.vb b/VECTOAux/VectoAuxiliaries/Signals.vb
index c7fa5e1a8c..133f32a744 100644
--- a/VECTOAux/VectoAuxiliaries/Signals.vb
+++ b/VECTOAux/VectoAuxiliaries/Signals.vb
@@ -2,6 +2,8 @@
 Public Class Signals
 Implements ISignals
 
+
+
     Public Property ClutchEngaged As Boolean Implements ISignals.ClutchEngaged
 
     Public Property EngineDrivelinePower As Single Implements ISignals.EngineDrivelinePower
@@ -18,6 +20,12 @@ Implements ISignals
 
     Public Property TotalCycleTimeSeconds As Integer Implements ISignals.TotalCycleTimeSeconds
 
+    Public Property PreExistingAuxPower As Single Implements ISignals.PreExistingAuxPower
+
+    Public Property Idle As Boolean Implements ISignals.Idle
+
+    Public Property InNeutral As Boolean Implements ISignals.InNeutral
+
 End Class
 
 
diff --git a/VECTOAux/VectoAuxiliaries/VectoAuxiliaries.vbproj b/VECTOAux/VectoAuxiliaries/VectoAuxiliaries.vbproj
index 542ab82cf5..caebee0376 100644
--- a/VECTOAux/VectoAuxiliaries/VectoAuxiliaries.vbproj
+++ b/VECTOAux/VectoAuxiliaries/VectoAuxiliaries.vbproj
@@ -73,6 +73,9 @@
   </ItemGroup>
   <ItemGroup>
     <Compile Include="AuxillaryEnvironment.vb" />
+    <Compile Include="DownstreamModules\IM6.vb" />
+    <Compile Include="DownstreamModules\IM7.vb" />
+    <Compile Include="DownstreamModules\M7.vb" />
     <Compile Include="Electrics\AlternatorMapValues.vb" />
     <Compile Include="Electrics\AlternatorMap.vb" />
     <Compile Include="Electrics\ElectricsUserInputsConfig.vb" />
@@ -103,6 +106,7 @@
     <Compile Include="Hvac\IM1_AverageHVACLoadDemand.vb" />
     <Compile Include="ISignals.vb" />
     <Compile Include="IVectoInputs.vb" />
+    <Compile Include="DownstreamModules\M6.vb" />
     <Compile Include="Pneumatics\ActuationsKey.vb" />
     <Compile Include="Pneumatics\IM3_AveragePneumaticLoadDemand.vb" />
     <Compile Include="Pneumatics\M4_AirCompressor.vb" />
diff --git a/VECTOAux/VectoAuxiliariesTests/Mocks/M1_Mock.vb b/VECTOAux/VectoAuxiliariesTests/Mocks/M1_Mock.vb
new file mode 100644
index 0000000000..55fe17eb92
--- /dev/null
+++ b/VECTOAux/VectoAuxiliariesTests/Mocks/M1_Mock.vb
@@ -0,0 +1,51 @@
+
+Imports VectoAuxiliaries.Electrics
+Imports VectoAuxiliaries.Pneumatics
+Imports VectoAuxiliaries.Hvac
+Imports VectoAuxiliaries.DownstreamModules
+
+
+Public Class M1_Mock
+Implements IM1_AverageHVACLoadDemand
+
+Public  _AveragePowerDemandAtAlternatorFromHVACElectricsWatts As Single
+public _AveragePowerDemandAtCrankFromHVACElectricsWatts As single
+Public _AveragePowerDemandAtCrankFromHVACMechanicalsWatts As Single
+Public _HVACFuelingLitresPerHour As single
+
+    Public Function AveragePowerDemandAtAlternatorFromHVACElectricsWatts() As Single Implements IM1_AverageHVACLoadDemand.AveragePowerDemandAtAlternatorFromHVACElectricsWatts
+       Return AveragePowerDemandAtAlternatorFromHVACElectricsWatts
+    End Function
+
+    Public Function AveragePowerDemandAtCrankFromHVACElectricsWatts() As Single Implements IM1_AverageHVACLoadDemand.AveragePowerDemandAtCrankFromHVACElectricsWatts
+        Return _AveragePowerDemandAtCrankFromHVACElectricsWatts
+    End Function
+
+    Public Function AveragePowerDemandAtCrankFromHVACMechanicalsWatts() As Single Implements IM1_AverageHVACLoadDemand.AveragePowerDemandAtCrankFromHVACMechanicalsWatts
+       Return _AveragePowerDemandAtCrankFromHVACMechanicalsWatts
+    End Function
+
+    Public Function HVACFuelingLitresPerHour() As Single Implements IM1_AverageHVACLoadDemand.HVACFuelingLitresPerHour
+       Return _HVACFuelingLitresPerHour
+    End Function
+
+
+Public Sub new ( AveragePowerDemandAtAlternatorFromHVACElectricsWatts  As Single, _
+                 AveragePowerDemandAtCrankFromHVACElectricsWatts       As single, _
+                 AveragePowerDemandAtCrankFromHVACMechanicalsWatts     As Single, _
+                 HVACFuelingLitresPerHour                              As single)
+
+                 'Assign Values
+                _AveragePowerDemandAtAlternatorFromHVACElectricsWatts  = AveragePowerDemandAtAlternatorFromHVACElectricsWatts
+                _AveragePowerDemandAtCrankFromHVACElectricsWatts       = AveragePowerDemandAtCrankFromHVACElectricsWatts
+                _AveragePowerDemandAtCrankFromHVACMechanicalsWatts     = AveragePowerDemandAtCrankFromHVACMechanicalsWatts
+                _HVACFuelingLitresPerHour                              = HVACFuelingLitresPerHour
+                                                              
+                                                            
+End Sub                                                                              
+
+
+
+
+End Class
+
diff --git a/VECTOAux/VectoAuxiliariesTests/Mocks/M2_Mock.vb b/VECTOAux/VectoAuxiliariesTests/Mocks/M2_Mock.vb
new file mode 100644
index 0000000000..d118d019ef
--- /dev/null
+++ b/VECTOAux/VectoAuxiliariesTests/Mocks/M2_Mock.vb
@@ -0,0 +1,35 @@
+Imports VectoAuxiliaries.Electrics
+Imports VectoAuxiliaries.Pneumatics
+Imports VectoAuxiliaries.Hvac
+Imports VectoAuxiliaries.DownstreamModules
+
+Public Class M2_Mock
+Implements IM2_AverageElectricalLoadDemand
+
+
+Public _GetAveragePowerAtCrankFromElectrics As Single
+Public _GetAveragePowerDemandAtAlternator   As Single
+
+
+
+    Public Function GetAveragePowerAtCrankFromElectrics() As Single Implements IM2_AverageElectricalLoadDemand.GetAveragePowerAtCrankFromElectrics
+       Return _GetAveragePowerAtCrankFromElectrics
+    End Function
+
+    Public Function GetAveragePowerDemandAtAlternator() As Single Implements IM2_AverageElectricalLoadDemand.GetAveragePowerDemandAtAlternator
+     Return _GetAveragePowerDemandAtAlternator
+    End Function
+
+
+
+Public Sub new ( GetAveragePowerAtCrankFromElectrics As Single,GetAveragePowerDemandAtAlternator As single )
+
+
+ _GetAveragePowerAtCrankFromElectrics =  GetAveragePowerAtCrankFromElectrics
+ _GetAveragePowerDemandAtAlternator   =  GetAveragePowerDemandAtAlternator  
+
+End Sub
+
+
+End Class
+
diff --git a/VECTOAux/VectoAuxiliariesTests/Mocks/M3_Mock.vb b/VECTOAux/VectoAuxiliariesTests/Mocks/M3_Mock.vb
new file mode 100644
index 0000000000..292a83ed4c
--- /dev/null
+++ b/VECTOAux/VectoAuxiliariesTests/Mocks/M3_Mock.vb
@@ -0,0 +1,32 @@
+Imports VectoAuxiliaries.Electrics
+Imports VectoAuxiliaries.Pneumatics
+Imports VectoAuxiliaries.Hvac
+Imports VectoAuxiliaries.DownstreamModules
+
+Public Class M3_Mock
+ Implements IM3_AveragePneumaticLoadDemand
+
+ public _GetAveragePowerDemandAtCrankFromPneumatics    as single
+ public _TotalAirConsumedPerCycle                      as single
+
+
+    Public Function GetAveragePowerDemandAtCrankFromPneumatics() As Single Implements IM3_AveragePneumaticLoadDemand.GetAveragePowerDemandAtCrankFromPneumatics
+     Return _GetAveragePowerDemandAtCrankFromPneumatics
+    End Function
+
+    Public Function TotalAirConsumedPerCycle() As Single Implements IM3_AveragePneumaticLoadDemand.TotalAirConsumedPerCycle
+     Return _TotalAirConsumedPerCycle
+    End Function
+
+
+Public Sub new ( GetAveragePowerDemandAtCrankFromPneumatics As Single,TotalAirConsumedPerCycle As single )
+
+_GetAveragePowerDemandAtCrankFromPneumatics= GetAveragePowerDemandAtCrankFromPneumatics
+_TotalAirConsumedPerCycle = TotalAirConsumedPerCycle
+
+End Sub
+
+
+
+End Class
+
diff --git a/VECTOAux/VectoAuxiliariesTests/Mocks/M4_Mock.vb b/VECTOAux/VectoAuxiliariesTests/Mocks/M4_Mock.vb
new file mode 100644
index 0000000000..4bade5bb19
--- /dev/null
+++ b/VECTOAux/VectoAuxiliariesTests/Mocks/M4_Mock.vb
@@ -0,0 +1,63 @@
+Imports VectoAuxiliaries.Electrics
+Imports VectoAuxiliaries.Pneumatics
+Imports VectoAuxiliaries.Hvac
+Imports VectoAuxiliaries.DownstreamModules
+
+Public Class M4_Mock
+ Implements IM4_AirCompressor
+
+
+Public Property _AveragePowerDemandPerCompressorUnitFlowRate As Single
+Public Property _FlowRate                                    As Single
+Public Property _PowerCompressorOff                          As single
+Public Property _PowerCompressorOn                           As Single
+Public Property _PowerDifference                             As single
+
+    Public Function GetAveragePowerDemandPerCompressorUnitFlowRate() As Single Implements IM4_AirCompressor.GetAveragePowerDemandPerCompressorUnitFlowRate
+       Return _AveragePowerDemandPerCompressorUnitFlowRate
+    End Function
+
+    Public Function GetFlowRate() As Single Implements IM4_AirCompressor.GetFlowRate
+       Return _FlowRate
+    End Function
+
+    Public Function GetPowerCompressorOff() As Single Implements IM4_AirCompressor.GetPowerCompressorOff
+        Return _PowerCompressorOff
+    End Function
+
+    Public Function PowerCompressorOn() As Single Implements IM4_AirCompressor.GetPowerCompressorOn
+      Return _PowerCompressorOn
+    End Function
+
+    Public Function GetPowerDifference() As Single Implements IM4_AirCompressor.GetPowerDifference
+       Return _PowerDifference
+    End Function
+
+
+   Public Sub new(AveragePowerDemandPerCompressorUnitFlowRate as single , _
+                  FlowRate           As single, _
+                  PowerCompressorOff As Single, _
+                  PowerCompressorOn  As Single, _
+                  PowerDifference    As Single)
+                               
+                 _AveragePowerDemandPerCompressorUnitFlowRate = AveragePowerDemandPerCompressorUnitFlowRate
+                 _FlowRate                                    = FlowRate
+                 _PowerCompressorOff                          = PowerCompressorOff
+                 _PowerCompressorOn                           = PowerCompressorOn
+                 _PowerDifference                             = PowerDifference
+                                                                                           
+   End Sub                                                                       
+                                                                                  
+                                                                                    
+    'Non Essential 
+    Public Function Initialise() As Boolean Implements IM4_AirCompressor.Initialise
+     Return true
+    End Function
+
+    Public Property PulleyGearEfficiency As Single Implements IM4_AirCompressor.PulleyGearEfficiency
+    Public Property PulleyGearRatio As Single Implements IM4_AirCompressor.PulleyGearRatio
+
+
+
+End Class
+
diff --git a/VECTOAux/VectoAuxiliariesTests/Mocks/M5_Mock.vb b/VECTOAux/VectoAuxiliariesTests/Mocks/M5_Mock.vb
new file mode 100644
index 0000000000..93b90a035b
--- /dev/null
+++ b/VECTOAux/VectoAuxiliariesTests/Mocks/M5_Mock.vb
@@ -0,0 +1,46 @@
+Imports VectoAuxiliaries.Electrics
+Imports VectoAuxiliaries.Pneumatics
+Imports VectoAuxiliaries.Hvac
+Imports VectoAuxiliaries.DownstreamModules
+
+Public Class M5_Mock
+ Implements IM5_SmartAlternatorSetGeneration
+
+
+ public property _AlternatorsGenerationPowerAtCrankIdleWatts          as single
+ public property _AlternatorsGenerationPowerAtCrankOverrunWatts       as single
+ public property _AlternatorsGenerationPowerAtCrankTractionOnWatts    as single
+
+
+    Public Function AlternatorsGenerationPowerAtCrankIdleWatts() As Single Implements IM5_SmartAlternatorSetGeneration.AlternatorsGenerationPowerAtCrankIdleWatts
+       Return _AlternatorsGenerationPowerAtCrankIdleWatts
+    End Function
+
+    Public Function AlternatorsGenerationPowerAtCrankOverrunWatts() As Single Implements IM5_SmartAlternatorSetGeneration.AlternatorsGenerationPowerAtCrankOverrunWatts
+       Return _AlternatorsGenerationPowerAtCrankOverrunWatts
+    End Function
+
+    Public Function AlternatorsGenerationPowerAtCrankTractionOnWatts() As Single Implements IM5_SmartAlternatorSetGeneration.AlternatorsGenerationPowerAtCrankTractionOnWatts
+     Return _AlternatorsGenerationPowerAtCrankTractionOnWatts
+    End Function
+
+
+ Public Sub new ()
+
+ End Sub
+
+
+   Public Sub new ( AlternatorsGenerationPowerAtCrankIdleWatts          as single,
+                    AlternatorsGenerationPowerAtCrankOverrunWatts       as single,
+                    AlternatorsGenerationPowerAtCrankTractionOnWatts    as single)
+
+         _AlternatorsGenerationPowerAtCrankIdleWatts          = AlternatorsGenerationPowerAtCrankIdleWatts
+         _AlternatorsGenerationPowerAtCrankOverrunWatts       = AlternatorsGenerationPowerAtCrankOverrunWatts
+         _AlternatorsGenerationPowerAtCrankTractionOnWatts    = AlternatorsGenerationPowerAtCrankTractionOnWatts       
+                                                    
+
+   End Sub
+
+
+End Class
+
diff --git a/VECTOAux/VectoAuxiliariesTests/Mocks/M6_Mock.vb b/VECTOAux/VectoAuxiliariesTests/Mocks/M6_Mock.vb
new file mode 100644
index 0000000000..4b90846b15
--- /dev/null
+++ b/VECTOAux/VectoAuxiliariesTests/Mocks/M6_Mock.vb
@@ -0,0 +1,102 @@
+
+Imports VectoAuxiliaries.Electrics
+Imports VectoAuxiliaries.Pneumatics
+Imports VectoAuxiliaries.Hvac
+Imports VectoAuxiliaries.DownstreamModules
+
+
+Public Class M6_Mock
+ Implements IM6
+
+
+Public Property _AveragePowerDemandAtCrankFromPneumatics       As Single
+public property _AvgPowerDemandAtCrankFromElectricsIncHVAC     As single
+public property _OverrunFlag                                   As integer
+public property _SmartElecAndPneumaticAirCompPowerGenAtCrank   As single
+public property _SmartElecAndPneumaticAltPowerGenAtCrank       As single
+public property _SmartElecAndPneumaticsCompressorFlag          As integer
+public property _SmartElecOnlyAltPowerGenAtCrank               As single
+public property _SmartPneumaticOnlyAirCompPowerGenAtCrank      As single
+public property _SmartPneumaticsOnlyCompressorFlag             As integer
+
+
+    Public ReadOnly Property AveragePowerDemandAtCrankFromPneumatics As Single Implements IM6.AveragePowerDemandAtCrankFromPneumatics
+        Get
+        Return _AveragePowerDemandAtCrankFromPneumatics
+        End Get
+
+    End Property
+    Public ReadOnly Property AvgPowerDemandAtCrankFromElectricsIncHVAC As Single Implements IM6.AvgPowerDemandAtCrankFromElectricsIncHVAC
+        Get
+        Return _AvgPowerDemandAtCrankFromElectricsIncHVAC
+        End Get
+    End Property
+    Public ReadOnly Property OverrunFlag As Integer Implements IM6.OverrunFlag
+        Get
+        Return OverrunFlag
+        End Get
+    End Property
+    Public ReadOnly Property SmartElecAndPneumaticAirCompPowerGenAtCrank As Single Implements IM6.SmartElecAndPneumaticAirCompPowerGenAtCrank
+        Get
+        Return _SmartElecAndPneumaticAirCompPowerGenAtCrank
+        End Get
+    End Property
+    Public ReadOnly Property SmartElecAndPneumaticAltPowerGenAtCrank As Single Implements IM6.SmartElecAndPneumaticAltPowerGenAtCrank
+        Get
+         Return _SmartElecAndPneumaticAltPowerGenAtCrank
+        End Get
+    End Property
+    Public ReadOnly Property SmartElecAndPneumaticsCompressorFlag As Integer Implements IM6.SmartElecAndPneumaticsCompressorFlag
+        Get
+          Return _SmartElecAndPneumaticsCompressorFlag
+        End Get
+    End Property
+    Public ReadOnly Property SmartElecOnlyAltPowerGenAtCrank As Single Implements IM6.SmartElecOnlyAltPowerGenAtCrank
+        Get
+        Return _SmartElecOnlyAltPowerGenAtCrank
+        End Get
+    End Property
+    Public ReadOnly Property SmartPneumaticOnlyAirCompPowerGenAtCrank As Single Implements IM6.SmartPneumaticOnlyAirCompPowerGenAtCrank
+        Get
+          return _SmartPneumaticOnlyAirCompPowerGenAtCrank
+        End Get
+    End Property
+    Public ReadOnly Property SmartPneumaticsOnlyCompressorFlag As Integer Implements IM6.SmartPneumaticsOnlyCompressorFlag
+        Get
+         Return _SmartPneumaticsOnlyCompressorFlag
+        End Get
+    End Property
+
+
+    Public Sub new()
+
+    End Sub
+
+    Public Sub new(_AveragePowerDemandAtCrankFromPneumatics       As Single , _
+                   _AvgPowerDemandAtCrankFromElectricsIncHVAC     As single , _
+                   _OverrunFlag                                   As integer, _
+                   _SmartElecAndPneumaticAirCompPowerGenAtCrank   As single , _
+                   _SmartElecAndPneumaticAltPowerGenAtCrank       As single , _
+                   _SmartElecAndPneumaticsCompressorFlag          As integer, _
+                   _SmartElecOnlyAltPowerGenAtCrank               As single , _
+                   _SmartPneumaticOnlyAirCompPowerGenAtCrank      As single , _
+                   _SmartPneumaticsOnlyCompressorFlag             As integer)
+
+
+       _AveragePowerDemandAtCrankFromPneumatics     = AveragePowerDemandAtCrankFromPneumatics
+       _AvgPowerDemandAtCrankFromElectricsIncHVAC   = AvgPowerDemandAtCrankFromElectricsIncHVAC
+       _OverrunFlag                                 = OverrunFlag
+       _SmartElecAndPneumaticAirCompPowerGenAtCrank = SmartElecAndPneumaticAirCompPowerGenAtCrank
+       _SmartElecAndPneumaticAltPowerGenAtCrank     = SmartElecAndPneumaticAltPowerGenAtCrank
+       _SmartElecAndPneumaticsCompressorFlag        = SmartElecAndPneumaticsCompressorFlag
+       _SmartElecOnlyAltPowerGenAtCrank             = SmartElecOnlyAltPowerGenAtCrank
+       _SmartPneumaticOnlyAirCompPowerGenAtCrank    = SmartPneumaticOnlyAirCompPowerGenAtCrank
+       _SmartPneumaticsOnlyCompressorFlag           = SmartPneumaticsOnlyCompressorFlag
+                                                         
+                                                           
+                                                                   
+    End Sub                                               
+                                                                 
+
+End Class
+
diff --git a/VECTOAux/VectoAuxiliariesTests/UnitTests/M2_AverageElectricalLoadTests.vb b/VECTOAux/VectoAuxiliariesTests/UnitTests/M2_AverageElectricalLoadTests.vb
index 348a2d6659..79bbe421c7 100644
--- a/VECTOAux/VectoAuxiliariesTests/UnitTests/M2_AverageElectricalLoadTests.vb
+++ b/VECTOAux/VectoAuxiliariesTests/UnitTests/M2_AverageElectricalLoadTests.vb
@@ -65,7 +65,7 @@ Namespace UnitTests
         Public Sub GetAveragePowerAtCrankTest()
             Dim target As M2_AverageElectricalLoadDemand = GetAverageElectricalDemandInstance()
             Dim expected As Single = 2302.69116
-            Dim actual As Single = target.GetAveragePowerAtCrank()
+            Dim actual As Single = target.GetAveragePowerAtCrankFromElectrics()
             Assert.AreEqual(expected, actual)
         End Sub
 
diff --git a/VECTOAux/VectoAuxiliariesTests/UnitTests/M6.vb b/VECTOAux/VectoAuxiliariesTests/UnitTests/M6.vb
new file mode 100644
index 0000000000..1b05d9d8e7
--- /dev/null
+++ b/VECTOAux/VectoAuxiliariesTests/UnitTests/M6.vb
@@ -0,0 +1,120 @@
+Imports VectoAuxiliaries.Electrics
+Imports VectoAuxiliaries.Pneumatics
+Imports VectoAuxiliaries.Hvac
+Imports VectoAuxiliaries.DownstreamModules
+Imports NUnit.Framework
+Imports VectoAuxiliaries
+
+Namespace UnitTests
+
+<TestFixture()>
+Public Class M6Test
+
+Private M1 As New M1_Mock(100, 200, 300, 50)
+Private M2 As New M2_Mock(120, 130)
+Private M3 As New M3_Mock(200, 5000)
+Private M4 As New M4_Mock(100, 2, 200, 100, 100)
+Private M5 As New M5_Mock(200, 50, 80)
+Private Signals As New Signals()
+
+Private Function GetStandardInstanceM6() As IM6
+
+ M1 = New M1_Mock(100, 200, 300, 50)
+ M2 = New M2_Mock(120, 130)
+ M3 = New M3_Mock(200, 5000)
+ M4 = New M4_Mock(100, 2, 200, 100, 100)
+ M5 = New M5_Mock(200, 50, 80)
+
+ Return   New M6(M1,M2,M3,M4,M5,Signals)
+
+End Function
+
+Public Sub new ()
+
+Signals.EngineMotoringPower=100
+Signals.EngineDrivelinePower=150
+Signals.PreExistingAuxPower=30
+
+
+End Sub
+
+<Test()>
+Public Sub CreateNewM6Instance()
+
+Dim target As IM6 = GetStandardInstanceM6()
+
+Assert.IsNotNull( target)
+
+End Sub
+
+<Test()>
+Public Sub SmartElectricalOnTest()
+
+  Signals.SmartElectrics=True
+  
+    Dim target As Im6 = GetStandardInstanceM6()
+
+    Dim OverRunFlag As Integer = target.OverrunFlag
+    Dim SmartElecAndPneumaticsCompressorFlag As Integer = target.SmartElecAndPneumaticsCompressorFlag
+    Dim SmartElectricalAndPneumaticAlternatorPowerGenAtCrank As Single = target.SmartElecAndPneumaticAltPowerGenAtCrank
+    Dim SmartElectricalAndPneumaticAirCompPowerGenAtCrank As Single = target.SmartElecAndPneumaticAirCompPowerGenAtCrank
+    Dim SmartElectricalOnlyAlternatorPowerGenAtCrank As Single = target.SmartElecOnlyAltPowerGenAtCrank
+    Dim AveragePowerDemandAtCrankFromPneumatics As Single = target.AveragePowerDemandAtCrankFromPneumatics
+    Dim SmartPneumaticsOnlyAirCompPowerGenAtCrank As Single = target.SmartPneumaticOnlyAirCompPowerGenAtCrank
+    Dim AveragePowerDemandatCrankFromElectricsInHVAC As Single = target.AvgPowerDemandAtCrankFromElectricsIncHVAC
+    Dim SmartPneumaticsOnlySmartCompressorFlag As Integer = target.SmartPneumaticsOnlyCompressorFlag
+
+    Assert.AreEqual(0,OverRunFlag                                         )
+    Assert.AreEqual(0,SmartElecAndPneumaticsCompressorFlag                )
+    Assert.AreEqual(0,SmartElectricalAndPneumaticAlternatorPowerGenAtCrank)
+    Assert.AreEqual(200,SmartElectricalAndPneumaticAirCompPowerGenAtCrank )
+    Assert.AreEqual(0,SmartElectricalOnlyAlternatorPowerGenAtCrank        )
+    Assert.AreEqual(200,AveragePowerDemandAtCrankFromPneumatics           )
+    Assert.AreEqual(200,SmartPneumaticsOnlyAirCompPowerGenAtCrank         )
+    Assert.AreEqual(320,AveragePowerDemandatCrankFromElectricsInHVAC      )
+    Assert.AreEqual(0,SmartPneumaticsOnlySmartCompressorFlag              )
+
+End Sub
+
+
+<Test()>
+Public Sub SmartElectricalOffTest()
+
+    Signals.SmartElectrics=true
+    Signals.EngineDrivelinePower=0
+    Signals.EngineMotoringPower=0
+  
+    Dim target As Im6 = GetStandardInstanceM6()
+
+    Dim OverRunFlag As Integer = target.OverrunFlag
+    Dim SmartElecAndPneumaticsCompressorFlag As Integer = target.SmartElecAndPneumaticsCompressorFlag
+    Dim SmartElectricalAndPneumaticAlternatorPowerGenAtCrank As Single = target.SmartElecAndPneumaticAltPowerGenAtCrank
+    Dim SmartElectricalAndPneumaticAirCompPowerGenAtCrank As Single = target.SmartElecAndPneumaticAirCompPowerGenAtCrank
+    Dim SmartElectricalOnlyAlternatorPowerGenAtCrank As Single = target.SmartElecOnlyAltPowerGenAtCrank
+    Dim AveragePowerDemandAtCrankFromPneumatics As Single = target.AveragePowerDemandAtCrankFromPneumatics
+    Dim SmartPneumaticsOnlyAirCompPowerGenAtCrank As Single = target.SmartPneumaticOnlyAirCompPowerGenAtCrank
+    Dim AveragePowerDemandatCrankFromElectricsInHVAC As Single = target.AvgPowerDemandAtCrankFromElectricsIncHVAC
+    Dim SmartPneumaticsOnlySmartCompressorFlag As Integer = target.SmartPneumaticsOnlyCompressorFlag
+
+    Assert.AreEqual(0,OverRunFlag                                         )
+    Assert.AreEqual(0,SmartElecAndPneumaticsCompressorFlag                )
+    Assert.AreEqual(0,SmartElectricalAndPneumaticAlternatorPowerGenAtCrank)
+    Assert.AreEqual(200,SmartElectricalAndPneumaticAirCompPowerGenAtCrank )
+    Assert.AreEqual(0,SmartElectricalOnlyAlternatorPowerGenAtCrank        )
+    Assert.AreEqual(200,AveragePowerDemandAtCrankFromPneumatics           )
+    Assert.AreEqual(200,SmartPneumaticsOnlyAirCompPowerGenAtCrank         )
+    Assert.AreEqual(320,AveragePowerDemandatCrankFromElectricsInHVAC      )
+    Assert.AreEqual(0,SmartPneumaticsOnlySmartCompressorFlag              )
+
+
+End Sub
+
+
+End Class
+
+
+
+End Namespace
+
+
+
diff --git a/VECTOAux/VectoAuxiliariesTests/UnitTests/M7.vb b/VECTOAux/VectoAuxiliariesTests/UnitTests/M7.vb
new file mode 100644
index 0000000000..7a61ed1d83
--- /dev/null
+++ b/VECTOAux/VectoAuxiliariesTests/UnitTests/M7.vb
@@ -0,0 +1,107 @@
+Imports VectoAuxiliaries.Electrics
+Imports VectoAuxiliaries.Pneumatics
+Imports VectoAuxiliaries.Hvac
+Imports VectoAuxiliaries.DownstreamModules
+Imports NUnit.Framework
+Imports VectoAuxiliaries
+
+Namespace UnitTests
+
+<TestFixture()> _
+Public Class M7Test
+
+private M5 As M5_Mock
+Private M6 As M6_MOCK
+Private Signals As ISignals
+
+Public Sub new ()
+
+M5 = New M5_Mock( 100,110,120)
+M6 = New M6_Mock(100,0,0,110,120,0,130,140,150)
+Signals = New Signals()
+
+End Sub
+
+<Test()>
+Public Sub CreateNew_M7InstanceTest()
+ Dim target As IM7 = New M7(M5,M6,Signals)
+ Assert.IsNotNull(target)
+End Sub
+
+'IP1  M5 : Alternators Generation Power At Crank (Traction ) (Single )
+'IP2  M5 : Alternators Generation Power At Crank (Idle )     (Single )
+'IP3  Signals : IDLE            (Boolean )
+'IP4  M6      :Overrun Flag     (Integer )
+'IP5  Signals : Clutch engaged  (Boolean )
+'IP6  Signals : InNuetral       (Boolean )
+'IP7  M6      : SmartElectricalAndPneumatic:AlternatorPowerGen@Crank
+'IP8  M6      : SmartElectricalAndPneumatic:AirCompPowerGen@Crank
+'IP9  M6      : SmartElectricalOnly:AlternatorPowerGen@Crank
+'IP10 M6      : AveragePowerDemand@CrankFromPneumatics
+'IP11 M6      : SmartPneumaticsOnly:AirComprPowerGen@Crank
+'OP1  Op1     :Smart Electrical & Pneumatic Aux : Alternator power gen @ Crank
+'OP2  OP2     :Smart Electrical & Pneumatic Aux : Air comp   power gen @ Crank
+'OP3  OP3     :Smart Electrical Aux : Alternator             Power Gen @ Crank
+'OP4  OP4     :Smart Electrical Aux : Ait Compressor         Power Gen @ Crank 
+<Test()>
+Public Sub InputOutputTests(IP1 As Single,  _  
+                            IP2 As Single,  _ 
+                            IP3 As Boolean, _
+                            IP4 As Single,  _
+                            IP5 As Boolean, _
+                            IP6 As Boolean, _
+                            IP7 As Single,  _
+                            IP8 As Single,  _
+                            IP9 As single,  _
+                            IP10 As Single, _
+                            IP11 As Single, _
+                            IP12 As Single, _
+                            IP13 As Single, _
+                            OP1  As Single, _
+                            OP2  As Single,  _
+                            OP3  As Single,  _
+                            OP4  As Single  )
+
+                            'Instantiate new mocks.
+                            M5 = New M5_Mock()
+                            M6 = New M6_Mock()                         
+                            Signals = New Signals
+
+                            'Assign from TestCaseValues
+                            M5._AlternatorsGenerationPowerAtCrankTractionOnWatts=IP1
+                            M5._AlternatorsGenerationPowerAtCrankIdleWatts=IP2
+                            Signals.Idle=IP3
+                            M6._OverrunFlag=IP4
+                            Signals.ClutchEngaged=IP5 
+                            Signals.InNeutral=IP6 
+                            M6._SmartElecAndPneumaticAltPowerGenAtCrank=IP7
+                            M6._SmartElecAndPneumaticAirCompPowerGenAtCrank=IP8
+                            M6._SmartElecOnlyAltPowerGenAtCrank=IP9
+                            M6._AveragePowerDemandAtCrankFromPneumatics=IP10
+                            M6._SmartPneumaticOnlyAirCompPowerGenAtCrank=IP11
+
+
+            'Create Instance of M7 from 
+            Dim target As IM7 = New M7(M5,M6,Signals)
+
+
+
+            Assert.AreEqual(OP1, target.SmartElectricalAndPneumaticAuxAltPowerGenAtCrank)
+            Assert.AreEqual(OP2, target.SmartElectricalAndPneumaticAuxAirCompPowerGenAtCrank)
+            Assert.AreEqual(OP3, target.SmartElectricalOnlyAuxAltPowerGenAtCrank)
+            Assert.AreEqual(OP4, target.SmartPneumaticOnlyAuxAirCompPowerGenAtCrank)
+             
+
+ Assert.IsNotNull(target)
+
+End Sub
+
+
+End Class
+
+
+
+End Namespace
+
+
+
diff --git a/VECTOAux/VectoAuxiliariesTests/VectoAuxiliariesTests.vbproj b/VECTOAux/VectoAuxiliariesTests/VectoAuxiliariesTests.vbproj
index f2f55be120..4612475235 100644
--- a/VECTOAux/VectoAuxiliariesTests/VectoAuxiliariesTests.vbproj
+++ b/VECTOAux/VectoAuxiliariesTests/VectoAuxiliariesTests.vbproj
@@ -88,6 +88,12 @@
   </ItemGroup>
   <ItemGroup>
     <Compile Include="Mocks\HVACMapMock.vb" />
+    <Compile Include="Mocks\M1_Mock.vb" />
+    <Compile Include="Mocks\M2_Mock.vb" />
+    <Compile Include="Mocks\M3_Mock.vb" />
+    <Compile Include="Mocks\M4_Mock.vb" />
+    <Compile Include="Mocks\M5_Mock.vb" />
+    <Compile Include="Mocks\M6_Mock.vb" />
     <Compile Include="UnitTests\M0_5_SmartAlternatorSetEfficiencyTests.vb" />
     <Compile Include="UnitTests\M0_NonSmart_AlternatorsSetEfficiencyTests.vb" />
     <Compile Include="UnitTests\AveragePneumaticLoadDemandTests.vb" />
@@ -96,6 +102,8 @@
     <Compile Include="UnitTests\M1_AverageHVACLoadDemandTests.vb" />
     <Compile Include="UnitTests\M1_HVACAverageLoadDemandTests.vb" />
     <Compile Include="UnitTests\M5_SmartAlternatorSetGenerationTests.vb" />
+    <Compile Include="UnitTests\M6.vb" />
+    <Compile Include="UnitTests\M7.vb" />
     <Compile Include="UnitTests\PneumaticActuationsMapTests.vb" />
     <Compile Include="UnitTests\AirCompressorTests.vb" />
     <Compile Include="UnitTests\AlternatorMapTests.vb" />
-- 
GitLab