From a9f12bdfd6ddb4a52aa3a198685691b4aa74734e Mon Sep 17 00:00:00 2001 From: "Burns, Terry" <Terry.Burns@ricardo.com> Date: Thu, 26 Feb 2015 16:25:17 +0000 Subject: [PATCH] SSM - WIP git-tfs-id: [http://tfs00.element.root.com:8080/tfs/TFSCollection]$/VECTO;C1792 --- VECTOAux/VectoAuxiliaries/AuxiliaryConfig.vb | 3 +- VECTOAux/VectoAuxiliaries/Hvac/ISSMTOOL.vb | 4 + VECTOAux/VectoAuxiliaries/Hvac/SSMTOOL.vb | 101 ++++++++++++-- .../Hvac/TechListBenefitLine.vb | 40 +++--- .../VectoAuxiliaries/VectoAuxiliaries.vbproj | 3 + VECTOAux/VectoAuxiliaries/packages.config | 1 + .../UnitTests/SSMTOOLTests.vb | 126 ++++++++++++++++++ 7 files changed, 245 insertions(+), 33 deletions(-) diff --git a/VECTOAux/VectoAuxiliaries/AuxiliaryConfig.vb b/VECTOAux/VectoAuxiliaries/AuxiliaryConfig.vb index 8e0faf9211..fb0f23eb0f 100644 --- a/VECTOAux/VectoAuxiliaries/AuxiliaryConfig.vb +++ b/VECTOAux/VectoAuxiliaries/AuxiliaryConfig.vb @@ -298,10 +298,11 @@ Public Function Load( auxFile As String ) As Boolean Implements IAuxiliaryCon Dim output As String = File.ReadAllText(auxFile) + tmpAux = JsonConvert.DeserializeObject( Of AuxiliaryConfig)(output,settings) 'This is where we Assume values of loaded( Deserialized ) object. - AssumeValuesOfOther( tmpAux ) + AssumeValuesOfOther( tmpAux ) Catch ex as Exception diff --git a/VECTOAux/VectoAuxiliaries/Hvac/ISSMTOOL.vb b/VECTOAux/VectoAuxiliaries/Hvac/ISSMTOOL.vb index 255621f2e9..13ecf0dac5 100644 --- a/VECTOAux/VectoAuxiliaries/Hvac/ISSMTOOL.vb +++ b/VECTOAux/VectoAuxiliaries/Hvac/ISSMTOOL.vb @@ -10,8 +10,12 @@ ReadOnly Property MechanicalWBaseAdjusted As Single ReadOnly Property FuelLPerHBaseAdjusted As Single +Sub Clone( from As ISSMTOOL ) +Function Load(filePath As String) As Boolean + +Function Save(filePath As String) As Boolean diff --git a/VECTOAux/VectoAuxiliaries/Hvac/SSMTOOL.vb b/VECTOAux/VectoAuxiliaries/Hvac/SSMTOOL.vb index 9c89c6b728..643b1eacfb 100644 --- a/VECTOAux/VectoAuxiliaries/Hvac/SSMTOOL.vb +++ b/VECTOAux/VectoAuxiliaries/Hvac/SSMTOOL.vb @@ -1,71 +1,148 @@ -Namespace Hvac +Imports Omu.ValueInjecter +Imports VectoAuxiliaries.Hvac +Imports Newtonsoft.Json +Imports System.IO + +Namespace Hvac + Public Class SSMTOOL Implements ISSMTOOL + Private filePath As String + Public genInputs As ISSMGenInputs + Public techList As ISSMTechList - - Public ReadOnly Property ElectricalWAdjusted As Single Implements ISSMTOOL.ElectricalWAdjusted + Public ReadOnly Property ElectricalWAdjusted As Single Implements ISSMTOOL.ElectricalWAdjusted Get End Get End Property - Public ReadOnly Property ElectricalWBase As Single Implements ISSMTOOL.ElectricalWBase + Public ReadOnly Property ElectricalWBase As Single Implements ISSMTOOL.ElectricalWBase Get End Get End Property - Public ReadOnly Property FuelLPerHBase As Single Implements ISSMTOOL.FuelLPerHBase + Public ReadOnly Property FuelLPerHBase As Single Implements ISSMTOOL.FuelLPerHBase Get End Get End Property - Public ReadOnly Property FuelLPerHBaseAdjusted As Single Implements ISSMTOOL.FuelLPerHBaseAdjusted + Public ReadOnly Property FuelLPerHBaseAdjusted As Single Implements ISSMTOOL.FuelLPerHBaseAdjusted Get End Get End Property - Public ReadOnly Property MechanicalWBase As Single Implements ISSMTOOL.MechanicalWBase + Public ReadOnly Property MechanicalWBase As Single Implements ISSMTOOL.MechanicalWBase Get End Get End Property - Public ReadOnly Property MechanicalWBaseAdjusted As Single Implements ISSMTOOL.MechanicalWBaseAdjusted + Public ReadOnly Property MechanicalWBaseAdjusted As Single Implements ISSMTOOL.MechanicalWBaseAdjusted Get End Get End Property + Sub New() + + End Sub + Sub New(filePath As String) - Sub new ( ) + Me.filePath = filePath + genInputs = New SSMGenInputs(True) + techList = New SSMTechList(filePath, genInputs) End Sub - Sub New ( StoredFilePath As string) + Public Sub Clone(from As ISSMTOOL) Implements ISSMTOOL.Clone + Dim feedback As String = String.Empty - End Sub + genInputs.InjectFrom(DirectCast(from, SSMTOOL).genInputs) - Private Sub SetDefaults() + techList.InjectFrom(DirectCast(from, SSMTOOL).techList) + techList.Clear() + For Each line As TechListBenefitLine In DirectCast(from, SSMTOOL).techList.TechLines + Dim newLine As ITechListBenefitLine = New TechListBenefitLine(Me.genInputs) + newLine.InjectFrom(line) + techList.Add(newLine, feedback) + Next End Sub +'Persistance Functions +Public Function Save(filePath As String) As Boolean Implements ISSMTOOL.Save + + Dim returnValue As Boolean = True + Dim settings As JsonSerializerSettings = New JsonSerializerSettings() + settings.TypeNameHandling = TypeNameHandling.Objects + + 'JSON METHOD + Try + + Dim output As String = JsonConvert.SerializeObject(Me, Formatting.Indented, settings) + + File.WriteAllText(filePath, output) + + Catch ex As Exception + + 'TODO:Do something meaningfull here perhaps logging + returnValue = False + + End Try + + Return returnValue + +End Function +Public Function Load(filePath As String) As Boolean Implements ISSMTOOL.Load + + Dim returnValue As Boolean = True + Dim settings As JsonSerializerSettings = New JsonSerializerSettings() + Dim tmpAux As SSMTOOL = New SSMTOOL() + + settings.TypeNameHandling = TypeNameHandling.Objects + + 'JSON METHOD + Try + + Dim output As String = File.ReadAllText(filePath) + + + tmpAux = JsonConvert.DeserializeObject(Of SSMTOOL)(output, settings) + + 'This is where we Assume values of loaded( Deserialized ) object. + Clone(tmpAux) + + Catch ex As Exception + + 'TODO:Do something meaningfull here perhaps logging + + returnValue = False + End Try + + Return returnValue + +End Function + + + End Class diff --git a/VECTOAux/VectoAuxiliaries/Hvac/TechListBenefitLine.vb b/VECTOAux/VectoAuxiliaries/Hvac/TechListBenefitLine.vb index 527063c0c4..feb865ba7d 100644 --- a/VECTOAux/VectoAuxiliaries/Hvac/TechListBenefitLine.vb +++ b/VECTOAux/VectoAuxiliaries/Hvac/TechListBenefitLine.vb @@ -232,15 +232,17 @@ End Sub op1.ActiveVC = op2.ActiveVC AndAlso _ op1.ActiveVH = op2.ActiveVH AndAlso _ op1.ActiveVV = op2.ActiveVV AndAlso _ - op1.H = op2.H AndAlso _ op1.LineType = op2.LineType AndAlso _ + op1.LowFloorC = op2.LowFloorC AndAlso _ op1.LowFloorV = op2.LowFloorV AndAlso _ + op1.LowFloorH = op2.LowFloorH AndAlso _ op1.SemiLowFloorC = op2.SemiLowFloorC AndAlso _ op1.SemiLowFloorH = op2.SemiLowFloorH AndAlso _ op1.SemiLowFloorV = op2.SemiLowFloorV AndAlso _ op1.RaisedFloorC = op2.RaisedFloorC AndAlso _ op1.RaisedFloorH = op2.RaisedFloorH AndAlso _ op1.RaisedFloorV = op2.RaisedFloorV AndAlso _ + op1.OnVehicle = op2.OnVehicle AndAlso _ op1.Units = op2.Units ) then Return True @@ -253,23 +255,24 @@ End Sub End Operator - Public Shared Operator <> (ByVal op1 as TechListBenefitLine, ByVal op2 as TechListBenefitLine) As Boolean If ( op1.Category <> op2.Category OrElse _ op1.BenefitName <> op2.BenefitName OrElse _ op1.ActiveVC <> op2.ActiveVC OrElse _ op1.ActiveVH <> op2.ActiveVH OrElse _ - op1.ActiveVV <> op2.ActiveVV OrElse _ - op1.H <> op2.H OrElse _ + op1.ActiveVV <> op2.ActiveVV OrElse _ op1.LineType <> op2.LineType OrElse _ + op1.LowFloorC <> op2.LowFloorC OrElse _ op1.LowFloorV <> op2.LowFloorV OrElse _ + op1.LowFloorH <> op2.LowFloorH OrElse _ op1.SemiLowFloorC <> op2.SemiLowFloorC OrElse _ op1.SemiLowFloorH <> op2.SemiLowFloorH OrElse _ op1.SemiLowFloorV <> op2.SemiLowFloorV OrElse _ op1.RaisedFloorC <> op2.RaisedFloorC OrElse _ op1.RaisedFloorH <> op2.RaisedFloorH OrElse _ op1.RaisedFloorV <> op2.RaisedFloorV OrElse _ + op1.OnVehicle <> op2.OnVehicle OrElse _ op1.Units <> op2.Units ) then Return True @@ -283,13 +286,13 @@ End Operator End Operator - + Public Sub CloneFrom(source As ITechListBenefitLine) Implements ITechListBenefitLine.CloneFrom - Me.Units = source.Units - Me.Category = source.Category - Me.BenefitName = source.BenefitName + Me.Units = source.Units + Me.Category = source.Category + Me.BenefitName = source.BenefitName Me.LowFloorH = source.LowFloorH Me.LowFloorV = source.LowFloorV Me.LowFloorC = source.LowFloorC @@ -302,23 +305,20 @@ End Operator Me.RaisedFloorV = source.RaisedFloorV Me.RaisedFloorC = source.RaisedFloorC - Me.OnVehicle = source.OnVehicle - Me.ActiveVH = source.ActiveVH - Me.ActiveVV = source.ActiveVV - Me.ActiveVC = source.ActiveVC - Me.LineType = source.LineType + Me.OnVehicle = source.OnVehicle + Me.ActiveVH = source.ActiveVH + Me.ActiveVV = source.ActiveVV + Me.ActiveVC = source.ActiveVC + Me.LineType = source.LineType End Sub + Public Function IsEqualTo(source As ITechListBenefitLine) As boolean Implements ITechListBenefitLine.IsEqualTo + Return If(Me=source,True,False) + - - Public Function IsEqualTo(source As ITechListBenefitLine) As boolean Implements ITechListBenefitLine.IsEqualTo - - Return Me=source - - - End Function + End Function diff --git a/VECTOAux/VectoAuxiliaries/VectoAuxiliaries.vbproj b/VECTOAux/VectoAuxiliaries/VectoAuxiliaries.vbproj index e35fcc5c31..a867030c68 100644 --- a/VECTOAux/VectoAuxiliaries/VectoAuxiliaries.vbproj +++ b/VECTOAux/VectoAuxiliaries/VectoAuxiliaries.vbproj @@ -56,6 +56,9 @@ <SpecificVersion>False</SpecificVersion> <HintPath>bin\Debug\Newtonsoft.Json.dll</HintPath> </Reference> + <Reference Include="Omu.ValueInjecter"> + <HintPath>..\..\packages\valueinjecter.2.3.3\lib\net35\Omu.ValueInjecter.dll</HintPath> + </Reference> <Reference Include="SpreadsheetLight, Version=3.4.4.0, Culture=neutral, PublicKeyToken=32fbb46dc1730c57, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> <HintPath>3rdPartyLibraries\SpreadsheetLight.dll</HintPath> diff --git a/VECTOAux/VectoAuxiliaries/packages.config b/VECTOAux/VectoAuxiliaries/packages.config index 6f5b1e06a3..a7d552e47c 100644 --- a/VECTOAux/VectoAuxiliaries/packages.config +++ b/VECTOAux/VectoAuxiliaries/packages.config @@ -1,4 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> <packages> <package id="Newtonsoft.Json" version="6.0.6" targetFramework="net40" /> + <package id="valueinjecter" version="2.3.3" targetFramework="net40" /> </packages> \ No newline at end of file diff --git a/VECTOAux/VectoAuxiliariesTests/UnitTests/SSMTOOLTests.vb b/VECTOAux/VectoAuxiliariesTests/UnitTests/SSMTOOLTests.vb index e6fdc95496..5abca22f90 100644 --- a/VECTOAux/VectoAuxiliariesTests/UnitTests/SSMTOOLTests.vb +++ b/VECTOAux/VectoAuxiliariesTests/UnitTests/SSMTOOLTests.vb @@ -426,6 +426,132 @@ End Sub End Sub + 'TechListLineTests + <Test()> + Public Sub Instantiate_NewTechListLine() + + Dim gen As ISSMGenInputs = New SSMGenInputs(true) + + Dim ttl As ITechListBenefitLine = New TechListBenefitLine( gen) + + Assert.IsNotNull( ttl ) + + + End Sub + <Test()> + Public Sub TechBenefitLineCompareAsEqual() + + Dim gen As ISSMGenInputs = New SSMGenInputs(true) + + Dim ttl1 As ITechListBenefitLine = New TechListBenefitLine( gen) + Dim ttl2 As ITechListBenefitLine = New TechListBenefitLine( gen) + + Assert.IsTrue( ttl1.IsEqualTo(ttl2) ) + + + End Sub + <Test()> _ + <TestCase("Category" )> _ + <TestCase("BenefitName" )> _ + <TestCase("ActiveVC" )> _ + <TestCase("ActiveVH" )> _ + <TestCase("ActiveVV" )> _ + <TestCase("LineType" )> _ + <TestCase("LowFloorC" )> _ + <TestCase("LowFloorV" )> _ + <TestCase("LowFloorH" )> _ + <TestCase("SemiLowFloorC" )> _ + <TestCase("SemiLowFloorH" )> _ + <TestCase("SemiLowFloorV" )> _ + <TestCase("RaisedFloorC" )> _ + <TestCase("RaisedFloorH" )> _ + <TestCase("RaisedFloorV" )> _ + <TestCase("Units" )> _ + <TestCase("OnVehicle" )> _ + Public Sub TechBenefitLineCompareAsUnequal( prop As string) + + Dim gen As ISSMGenInputs = New SSMGenInputs(true) + + Dim ttl1 As ITechListBenefitLine = New TechListBenefitLine( gen) + Dim ttl2 As ITechListBenefitLine = New TechListBenefitLine( gen) + + Select Case prop + + + Case "Category" + ttl2.Category="NOT" + Case "BenefitName" + ttl2.BenefitName="NOT" + Case "ActiveVC" + ttl2.ActiveVC=True + Case "ActiveVH" + ttl2.ActiveVH=True + Case "ActiveVV" + ttl2.ActiveVV=True + Case "LineType" + ttl2.LineType = TechLineType.HVCActiveSelection + Case "LowFloorC" + ttl2.LowFloorC=1 + Case "LowFloorV" + ttl2.LowFloorV=1 + Case "LowFloorH" + ttl2.LowFloorH=1 + Case "SemiLowFloorC" + ttl2.SemiLowFloorC=1 + Case "SemiLowFloorH" + ttl2.SemiLowFloorH=1 + Case "SemiLowFloorV" + ttl2.SemiLowFloorH=1 + Case "RaisedFloorC" + ttl2.RaisedFloorC=1 + Case "RaisedFloorH" + ttl2.RaisedFloorH=1 + Case "RaisedFloorV" + ttl2.RaisedFloorV=1 + Case "Units" + ttl2.Units ="NONE" + Case "OnVehicle" + ttl2.OnVehicle =True + + End Select + + + Assert.IsFalse(ttl1.IsEqualTo(ttl2) ) + + + End Sub + + + 'SSMTOOL Persistance + <Test()> + Public Sub SaveAndRetreiveTest() + + const filePath as string = "SSMTOOLTestSaveRetreive.json" + + Dim gen As ISSMGenInputs = New SSMGenInputs(true) + + Dim saved As new SSMTOOL + + + + Dim target As SSMTOOL = New SSMTOOL(filePath ) + + target.Save(filePath) + + 'change something + target.genInputs.BP_BusLength=202.202 + + Assert.AreEqual( target.genInputs.BP_BusLength,202.202) + + 'Retreive + target.Load( filePath ) + + Assert.AreEqual( target.genInputs.BP_BusLength,10.655) + + + End Sub + + End Class End Namespace -- GitLab