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()
 		//{