diff --git a/VectoCore/VectoCoreTest/FileIO/JsonTest.cs b/VectoCore/VectoCoreTest/FileIO/JsonTest.cs index e086e41bc5ba9b4ad05ff19b7e7244c28a76aa79..7a5d15d6730a30709e68a9e9b115d689d479db96 100644 --- a/VectoCore/VectoCoreTest/FileIO/JsonTest.cs +++ b/VectoCore/VectoCoreTest/FileIO/JsonTest.cs @@ -39,6 +39,7 @@ using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.InputData.FileIO.JSON; +using TUGraz.VectoCore.InputData.Reader.DataObjectAdapter; using TUGraz.VectoCore.Tests.Utils; namespace TUGraz.VectoCore.Tests.FileIO @@ -156,6 +157,108 @@ namespace TUGraz.VectoCore.Tests.FileIO "Key OverSpeedEcoRoll not found"); } + [TestMethod] + public void ReadGearboxV5() + { + var inputProvider = JSONInputDataFactory.ReadGearbox(@"TestData\Components\AT_GBX\Gearbox_v5.vgbx"); + + var ratios = new[] { 3.0, 1.0, 0.8 }; + Assert.AreEqual(ratios.Length, inputProvider.Gears.Count); + for (int i = 0; i < ratios.Length; i++) { + Assert.AreEqual(ratios[i], inputProvider.Gears[i].Ratio); + } + var gbxData = new EngineeringDataAdapter().CreateGearboxData(inputProvider, + MockSimulationDataFactory.CreateEngineDataFromFile(@"TestData\Components\AT_GBX\Engine.veng"), 2.1, 0.5.SI<Meter>(), + true); + Assert.AreEqual(ratios.Length, gbxData.Gears.Count); + + // interpreted as gearbox with first and second gear using TC (due to gear ratios) + Assert.IsFalse(gbxData.Gears[0].HasLockedGear); + Assert.IsTrue(gbxData.Gears[0].HasTorqueConverter); + Assert.IsTrue(gbxData.Gears[1].HasLockedGear); + Assert.IsTrue(gbxData.Gears[1].HasTorqueConverter); + Assert.IsTrue(gbxData.Gears[2].HasLockedGear); + Assert.IsFalse(gbxData.Gears[2].HasTorqueConverter); + } + + [TestMethod] + public void ReadGearboxSerialTC() + { + var inputProvider = JSONInputDataFactory.ReadGearbox(@"TestData\Components\AT_GBX\GearboxSerial.vgbx"); + + var ratios = new[] { 3.1, 2.4, 1.8, 1.3, 1.0 }; + Assert.AreEqual(ratios.Length, inputProvider.Gears.Count); + for (int i = 0; i < ratios.Length; i++) { + Assert.AreEqual(ratios[i], inputProvider.Gears[i].Ratio); + } + var gbxData = new EngineeringDataAdapter().CreateGearboxData(inputProvider, + MockSimulationDataFactory.CreateEngineDataFromFile(@"TestData\Components\AT_GBX\Engine.veng"), 2.1, 0.5.SI<Meter>(), + true); + Assert.AreEqual(ratios.Length, gbxData.Gears.Count); + + Assert.IsTrue(gbxData.Gears[0].HasLockedGear); + Assert.IsTrue(gbxData.Gears[0].HasTorqueConverter); + Assert.IsTrue(gbxData.Gears[1].HasLockedGear); + Assert.IsFalse(gbxData.Gears[1].HasTorqueConverter); + Assert.IsTrue(gbxData.Gears[2].HasLockedGear); + Assert.IsFalse(gbxData.Gears[2].HasTorqueConverter); + + var gear = gbxData.Gears[0]; + Assert.AreEqual(gear.Ratio, gear.TorqueConverterRatio); + } + + [TestMethod] + public void ReadGearboxPowersplitTC() + { + var inputProvider = JSONInputDataFactory.ReadGearbox(@"TestData\Components\AT_GBX\GearboxPowerSplit.vgbx"); + + var ratios = new[] { 3.1, 2.4, 1.8, 1.3, 1.0 }; + Assert.AreEqual(ratios.Length, inputProvider.Gears.Count); + for (int i = 0; i < ratios.Length; i++) { + Assert.AreEqual(ratios[i], inputProvider.Gears[i].Ratio); + } + var gbxData = new EngineeringDataAdapter().CreateGearboxData(inputProvider, + MockSimulationDataFactory.CreateEngineDataFromFile(@"TestData\Components\AT_GBX\Engine.veng"), 2.1, 0.5.SI<Meter>(), + true); + Assert.AreEqual(ratios.Length, gbxData.Gears.Count); + + Assert.IsTrue(gbxData.Gears[0].HasLockedGear); + Assert.IsTrue(gbxData.Gears[0].HasTorqueConverter); + Assert.IsTrue(gbxData.Gears[1].HasLockedGear); + Assert.IsFalse(gbxData.Gears[1].HasTorqueConverter); + Assert.IsTrue(gbxData.Gears[2].HasLockedGear); + Assert.IsFalse(gbxData.Gears[2].HasTorqueConverter); + + Assert.AreEqual(1, gbxData.Gears[0].TorqueConverterRatio); + } + + [TestMethod] + public void ReadGearboxDualTC() + { + var inputProvider = JSONInputDataFactory.ReadGearbox(@"TestData\Components\AT_GBX\GearboxSerialDualTC.vgbx"); + + var ratios = new[] { 4.35, 2.4, 1.8, 1.3, 1.0 }; + Assert.AreEqual(ratios.Length, inputProvider.Gears.Count); + for (int i = 0; i < ratios.Length; i++) { + Assert.AreEqual(ratios[i], inputProvider.Gears[i].Ratio); + } + var gbxData = new EngineeringDataAdapter().CreateGearboxData(inputProvider, + MockSimulationDataFactory.CreateEngineDataFromFile(@"TestData\Components\AT_GBX\Engine.veng"), 2.1, 0.5.SI<Meter>(), + true); + Assert.AreEqual(ratios.Length, gbxData.Gears.Count); + + Assert.IsFalse(gbxData.Gears[0].HasLockedGear); + Assert.IsTrue(gbxData.Gears[0].HasTorqueConverter); + Assert.IsTrue(gbxData.Gears[1].HasLockedGear); + Assert.IsTrue(gbxData.Gears[1].HasTorqueConverter); + Assert.IsTrue(gbxData.Gears[2].HasLockedGear); + Assert.IsFalse(gbxData.Gears[2].HasTorqueConverter); + + + var gear = gbxData.Gears[1]; + Assert.AreEqual(gear.Ratio, gear.TorqueConverterRatio); + } + //[TestMethod] //public void TestReadingElectricTechlist() //{