diff --git a/VectoCore/VectoCoreTest/FileIO/JsonReadTest.cs b/VectoCore/VectoCoreTest/FileIO/JsonReadTest.cs index 254f26e1a44cae413eeeffe9f1b0ab56c13f5430..34093d21c59c3a99cb77c2a91193157c4d783b22 100644 --- a/VectoCore/VectoCoreTest/FileIO/JsonReadTest.cs +++ b/VectoCore/VectoCoreTest/FileIO/JsonReadTest.cs @@ -29,6 +29,7 @@ * Martin Rexeis, rexeis@ivt.tugraz.at, IVT, Graz University of Technology */ +using System; using System.Collections.Generic; using Newtonsoft.Json; using Newtonsoft.Json.Linq; @@ -505,6 +506,110 @@ namespace TUGraz.VectoCore.Tests.FileIO Assert.AreEqual(true, busAux.HVACAux.AdjustableCoolantThermostat); Assert.AreEqual(true, busAux.HVACAux.EngineWasteGasHeatExchanger); } + + [TestCase()] + public void JSON_Read_IEPC() + { + var inputProvider = new JSONComponentInputData(@"TestData\Hybrids\IEPC\GenericIEPC.viepc", null); + var iepcData = (IIEPCEngineeringInputData)inputProvider.IEPC; + + Assert.AreEqual("3", iepcData.AppVersion); + Assert.AreEqual(DateTime.MinValue, iepcData.Date); + + Assert.AreEqual(false, iepcData.SavedInDeclarationMode); + Assert.AreEqual("Generic IEPC", iepcData.Model); + Assert.AreEqual(0.15.SI<KilogramSquareMeter>(), iepcData.Inertia); + Assert.AreEqual(false, iepcData.DifferentialIncluded); + Assert.AreEqual(false, iepcData.DesignTypeWheelMotor); + Assert.AreEqual(1, iepcData.NrOfDesignTypeWheelMotorMeasured); + Assert.AreEqual(0.9, iepcData.OverloadRecoveryFactor); + + TestIEPCGears(iepcData.Gears); + TestIEPCVoltageLevel(iepcData.VoltageLevels); + TestDragCurve(iepcData.DragCurves); + } + + private void TestDragCurve(IList<IDragCurve> dragCurvesData) + { + Assert.AreEqual(3, dragCurvesData.Count); + + var dragCurve = dragCurvesData[0]; + Assert.AreEqual(1, dragCurve.Gear); + Assert.IsNotNull(dragCurve.DragCurve); + + dragCurve = dragCurvesData[1]; + Assert.AreEqual(2, dragCurve.Gear); + Assert.IsNotNull(dragCurve.DragCurve); + + dragCurve = dragCurvesData[2]; + Assert.AreEqual(3, dragCurve.Gear); + Assert.IsNotNull(dragCurve.DragCurve); + } + + private void TestIEPCGears(IList<IGearEntry> gears) + { + Assert.AreEqual(3, gears.Count); + + var gear = gears[0]; + Assert.AreEqual(1, gear.GearNumber); + Assert.AreEqual(3.2, gear.Ratio); + Assert.AreEqual(10000.SI<NewtonMeter>(), gear.MaxOutputShaftTorque); + Assert.AreEqual(5000.SI<PerSecond>(), gear.MaxOutputShaftSpeed); + + gear = gears[1]; + Assert.AreEqual(2, gear.GearNumber); + Assert.AreEqual(1.6, gear.Ratio); + Assert.AreEqual(10000.SI<NewtonMeter>(), gear.MaxOutputShaftTorque); + Assert.AreEqual(5000.SI<PerSecond>(), gear.MaxOutputShaftSpeed); + + gear = gears[2]; + Assert.AreEqual(3, gear.GearNumber); + Assert.AreEqual(1.6, gear.Ratio); + Assert.AreEqual(10000.SI<NewtonMeter>(), gear.MaxOutputShaftTorque); + Assert.AreEqual(5000.SI<PerSecond>(), gear.MaxOutputShaftSpeed); + } + + private void TestIEPCVoltageLevel(IList<IElectricMotorVoltageLevel> voltageLevels) + { + Assert.AreEqual(2, voltageLevels.Count); + + var voltageLevel = voltageLevels[0]; + Assert.AreEqual(400.SI<Volt>(), voltageLevel.VoltageLevel); + Assert.AreEqual(200.SI<NewtonMeter>(), voltageLevel.ContinuousTorque); + Assert.AreEqual(2000.RPMtoRad(), voltageLevel.ContinuousTorqueSpeed); + Assert.AreEqual(500.SI<NewtonMeter>(), voltageLevel.OverloadTorque); + Assert.AreEqual(2000.RPMtoRad(), voltageLevel.OverloadTestSpeed); + Assert.AreEqual(60.SI<Second>(), voltageLevel.OverloadTime); + Assert.IsNotNull(voltageLevel.FullLoadCurve); + TestPowerMap(voltageLevel.PowerMap); + + voltageLevel = voltageLevels[1]; + Assert.AreEqual(800.SI<Volt>(), voltageLevel.VoltageLevel); + Assert.AreEqual(200.SI<NewtonMeter>(), voltageLevel.ContinuousTorque); + Assert.AreEqual(2000.RPMtoRad(), voltageLevel.ContinuousTorqueSpeed); + Assert.AreEqual(500.SI<NewtonMeter>(), voltageLevel.OverloadTorque); + Assert.AreEqual(2000.RPMtoRad(), voltageLevel.OverloadTestSpeed); + Assert.AreEqual(60.SI<Second>(), voltageLevel.OverloadTime); + Assert.IsNotNull(voltageLevel.FullLoadCurve); + TestPowerMap(voltageLevel.PowerMap); + } + + private void TestPowerMap(IList<IElectricMotorPowerMap> powerMapData) + { + Assert.AreEqual(3, powerMapData.Count); + + var powerMap = powerMapData[0]; + Assert.AreEqual(1, powerMap.Gear); + Assert.IsNotNull(powerMap.PowerMap); + + powerMap = powerMapData[1]; + Assert.AreEqual(2, powerMap.Gear); + Assert.IsNotNull(powerMap.PowerMap); + + powerMap = powerMapData[2]; + Assert.AreEqual(3, powerMap.Gear); + Assert.IsNotNull(powerMap.PowerMap); + } } public class MockDriverTestInputData : IDriverEngineeringInputData {