diff --git a/VectoCore/VectoCore/Resources/Declaration/CompletedBusSegmentationTable.csv b/VectoCore/VectoCore/Resources/Declaration/CompletedBusSegmentationTable.csv index 8399abca5f80a437f19dbe026aa2486d8297a040..e9df34c755db25a93579be0748bdc8c7caa1b596 100644 --- a/VectoCore/VectoCore/Resources/Declaration/CompletedBusSegmentationTable.csv +++ b/VectoCore/VectoCore/Resources/Declaration/CompletedBusSegmentationTable.csv @@ -29,4 +29,24 @@ Num Axles , Articulated , floor type , Vehicle Code , Registration Classes , 3 , 1 , high , CC , II+III , - , - , 3100 , 36c , , , , 2.2 , 1.4 , 1 , 4.8 , 27.3/45.4/27.3/0 , 0 , 0 , 0 , 0 3 , 1 , high , CC , III/B , - , - , - , 36d , , , , 2.2 , 1.4 , 1 , 4.8 , 27.3/45.4/27.3/0 , 0 , 0 , 0 , 0 3 , 1 , high , CD , II/II+III/III/B , - , 6 , - , 36e , , , , 2.2 , 1.4 , 1 , 5.4 , 27.3/45.4/27.3/0 , 0 , 0 , 0 , 0 -3 , 1 , high , CD , II/II+III/III/B , - , 6 , - , 36f , , , , 3 , 2 , 1 , 5.4 , 27.3/45.4/27.3/0 , 0 , 0 , 0 , 0 \ No newline at end of file +3 , 1 , high , CD , II/II+III/III/B , - , 6 , - , 36f , , , , 3 , 2 , 1 , 5.4 , 27.3/45.4/27.3/0 , 0 , 0 , 0 , 0 +4 , 0 , low , CE , I/I+II/II/A , 0 , - , - , 37a , 3 , 3 , 3 , , , 0 , 5.1 , 21.4/21.4/35.8/21.4 , 0 , 0 , 0 , 0 +4 , 0 , low , CE , I/I+II/II/A , 1 , - , - , 37b , 3 , 3 , 3 , , , 0 , 5.1 , 21.4/21.4/35.8/21.4 , 0 , 0 , 0 , 0 +4 , 0 , low , CF , I/I+II/II/A , - , - , - , 37c , 3.7 , 3.7 , 3.7 , , , 0 , 6.4 , 21.4/21.4/35.8/21.4 , 0 , 0 , 0 , 0 +4 , 0 , - , CI , I/I+II/II/II+III/III/A/B , - , - , - , 37d , 3 , 3 , 3 , , , 0 , 5.9 , 21.4/21.4/35.8/21.4 , 0 , 0 , 0 , 0 +4 , 0 , - , CJ , I/I+II/II/II+III/III/A/B , - , - , - , 37e , 3.7 , 3.7 , 3.7 , , , 0 , 7.2 , 21.4/21.4/35.8/21.4 , 0 , 0 , 0 , 0 +4 , 0 , high , CA , II , - , - , - , 38a , , , , 2.2 , 1.4 , 1 , 4.8 , 21.4/21.4/35.8/21.4 , 0 , 0 , 0 , 0 +4 , 0 , high , CA , II+III , - , - , 3100 , 38b , , , , 2.2 , 1.4 , 1 , 4.8 , 21.4/21.4/35.8/21.4 , 0 , 0 , 0 , 0 +4 , 0 , high , CA , II+III , - , - , 3100 , 38c , , , , 2.2 , 1.4 , 1 , 4.8 , 21.4/21.4/35.8/21.4 , 0 , 0 , 0 , 0 +4 , 0 , high , CA , III/B , - , - , - , 38d , , , , 2.2 , 1.4 , 1 , 4.8 , 21.4/21.4/35.8/21.4 , 0 , 0 , 0 , 0 +4 , 0 , high , CB , II/II+III/III/B , - , 6 , - , 38e , , , , 2.2 , 1.4 , 1 , 5.4 , 21.4/21.4/35.8/21.4 , 0 , 0 , 0 , 0 +4 , 0 , high , CB , II/II+III/III/B , - , 6 , - , 38f , , , , 3 , 2 , 1 , 5.4 , 21.4/21.4/35.8/21.4 , 0 , 0 , 0 , 0 +4 , 1 , low , CG , I/I+II/II/A , 0 , - , - , 39a , 3 , 3 , 3 , , , 0 , 5.2 , 21.4/21.4/35.8/21.4 , 3 , 3 , 0 , 0 +4 , 1 , low , CG , I/I+II/II/A , 1 , - , - , 39b , 3 , 3 , 3 , , , 0 , 5.2 , 21.4/21.4/35.8/21.4 , 3 , 3 , 0 , 0 +4 , 1 , low , CH , I/I+II/II/A , - , - , - , 39c , 3.7 , 3.7 , 3.7 , , , 0 , 6.5 , 21.4/21.4/35.8/21.4 , 0 , 0 , 0 , 0 +4 , 1 , high , CC , II , - , - , - , 40a , , , , 2.2 , 1.4 , 1 , 4.9 , 21.4/21.4/35.8/21.4 , 0 , 0 , 0 , 0 +4 , 1 , high , CC , II+III , - , - , 3100 , 40b , , , , 2.2 , 1.4 , 1 , 4.9 , 21.4/21.4/35.8/21.4 , 0 , 0 , 0 , 0 +4 , 1 , high , CC , II+III , - , - , 3100 , 40c , , , , 2.2 , 1.4 , 1 , 4.9 , 21.4/21.4/35.8/21.4 , 0 , 0 , 0 , 0 +4 , 1 , high , CC , III/B , - , - , - , 40d , , , , 2.2 , 1.4 , 1 , 4.9 , 21.4/21.4/35.8/21.4 , 0 , 0 , 0 , 0 +4 , 1 , high , CD , II/II+III/III/B , - , 6 , - , 40e , , , , 2.2 , 1.4 , 1 , 5.5 , 21.4/21.4/35.8/21.4 , 0 , 0 , 0 , 0 +4 , 1 , high , CD , II/II+III/III/B , - , 6 , - , 40f , , , , 3 , 2 , 1 , 5.5 , 21.4/21.4/35.8/21.4 , 0 , 0 , 0 , 0 \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/Models/Declaration/DeclarationSegmentComplete4AxleBusesTest.cs b/VectoCore/VectoCoreTest/Models/Declaration/DeclarationSegmentComplete4AxleBusesTest.cs new file mode 100644 index 0000000000000000000000000000000000000000..2df708df69c3aa9ed1fae412a33bf56ded619979 --- /dev/null +++ b/VectoCore/VectoCoreTest/Models/Declaration/DeclarationSegmentComplete4AxleBusesTest.cs @@ -0,0 +1,865 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using NUnit.Framework; +using TUGraz.VectoCommon.BusAuxiliaries; +using TUGraz.VectoCommon.Models; +using TUGraz.VectoCore.Models.Declaration; + +namespace TUGraz.VectoCore.Tests.Models.Declaration +{ + [TestFixture] + public class DeclarationSegmentComplete4AxleBusesTest + { + private MissionType[] _missionsTypes; + + [OneTimeSetUp] + public void RunBeforeAnyTest() + { + _missionsTypes = new[] + { MissionType.HeavyUrban, MissionType.Urban, MissionType.Suburban, MissionType.Interurban, MissionType.Coach }; + } + + [ + TestCase(4, VehicleCode.CE, "37a"), + TestCase(4, VehicleCode.CE, "37b"), + TestCase(4, VehicleCode.CF, "37c"), + TestCase(4, VehicleCode.CI, "37d"), + TestCase(4, VehicleCode.CJ, "37e"), + TestCase(4, VehicleCode.CA, "38a"), + TestCase(4, VehicleCode.CA, "38b"), + TestCase(4, VehicleCode.CA, "38c"), + TestCase(4, VehicleCode.CA, "38d"), + TestCase(4, VehicleCode.CB, "38e"), + TestCase(4, VehicleCode.CB, "38f"), + TestCase(4, VehicleCode.CG, "39a"), + TestCase(4, VehicleCode.CG, "39b"), + TestCase(4, VehicleCode.CH, "39c"), + TestCase(4, VehicleCode.CC, "40a"), + TestCase(4, VehicleCode.CC, "40b"), + TestCase(4, VehicleCode.CC, "40c"), + TestCase(4, VehicleCode.CC, "40d"), + TestCase(4, VehicleCode.CD, "40e"), + TestCase(4, VehicleCode.CD, "40f"), + ] + public void SegmentLookupTest(int numberOfAxles, VehicleCode vehicleCode, string vehicleParameterGroup) + { + var segment = DeclarationData.CompletedBusSegments.Lookup(numberOfAxles, vehicleCode, vehicleParameterGroup); + Assert.AreEqual(5, segment.Missions.Length); + } + + [TestCase(4, VehicleCode.CE, "37a")] + public void TestComplete4AxlesCompleteBus37A(int numberOfAxles, VehicleCode vehicleCode, string vehicleParameterGroup) + { + var segment = + DeclarationData.CompletedBusSegments.Lookup(numberOfAxles, vehicleCode, vehicleParameterGroup); + Assert.AreEqual(_missionsTypes.Length, segment.Missions.Length); + + for (int i = 0; i < segment.Missions.Length; i++) + { + var mission = segment.Missions[i]; + + Assert.AreEqual(_missionsTypes[i], mission.MissionType); + Assert.AreEqual(5.1, mission.DefaultCDxA.Value()); + Assert.AreEqual(false, mission.AirDragMeasurement); + + AssertBusParameters( + isDoubleDeck: false, + numberOfAxles: numberOfAxles, + isArticulated: false, + floorType: FloorType.LowFloor, + vehicleCode: vehicleCode, + regClasses: "I/I+II/II/A", + lowEntry: false, + numPassengersLower: 0, + passengersLowerOrEqual: null, + bodyHeight: null, + bodyHeightLowerOrEqual: null, + vehicleParam: vehicleParameterGroup, + busParameters: mission.BusParameter + ); + + AssertAveragePassengers(heavyUrban: 3, urban: 3, suburban: 3, interurban: 0, coach: 0, busParameters: mission.BusParameter); + AssertAxleDistribution(axle1: 21.4, axle2: 21.4, axle3: 35.8, axle4: 21.4, axleLoadDistribution: mission.BusParameter.AxleLoadDistribution); + AssertVehicleEquipment(externalDisplays: 0, internalDisplays: 0, fridge: 0, kitchenStandard: 0, vehicleEquipment: mission.BusParameter.VehicleEquipment); + } + } + + [TestCase(4, VehicleCode.CE, "37b")] + public void TestComplete4AxlesCompleteBus37B(int numberOfAxles, VehicleCode vehicleCode, string vehicleParameterGroup) + { + var segment = DeclarationData.CompletedBusSegments.Lookup(numberOfAxles, vehicleCode, vehicleParameterGroup); + + Assert.AreEqual(_missionsTypes.Length, segment.Missions.Length); + + for (int i = 0; i < segment.Missions.Length; i++) + { + var mission = segment.Missions[i]; + + Assert.AreEqual(_missionsTypes[i], mission.MissionType); + Assert.AreEqual(5.1, mission.DefaultCDxA.Value()); + Assert.AreEqual(false, mission.AirDragMeasurement); + + AssertBusParameters( + isDoubleDeck: false, + numberOfAxles: numberOfAxles, + isArticulated: false, + floorType: FloorType.LowFloor, + vehicleCode: vehicleCode, + regClasses: "I/I+II/II/A", + lowEntry: true, + numPassengersLower: 0, + passengersLowerOrEqual: null, + bodyHeight: null, + bodyHeightLowerOrEqual: null, + vehicleParam: vehicleParameterGroup, + busParameters: mission.BusParameter + ); + + AssertAveragePassengers(heavyUrban: 3, urban: 3, suburban: 3, interurban: 0, coach: 0, busParameters: mission.BusParameter); + AssertAxleDistribution(axle1: 21.4, axle2: 21.4, axle3: 35.8, axle4: 21.4, axleLoadDistribution: mission.BusParameter.AxleLoadDistribution); + AssertVehicleEquipment(externalDisplays: 0, internalDisplays: 0, fridge: 0, kitchenStandard: 0, vehicleEquipment: mission.BusParameter.VehicleEquipment); + } + } + + [TestCase(4, VehicleCode.CF, "37c")] + public void TestComplete4AxlesCompleteBus37C(int numberOfAxles, VehicleCode vehicleCode, string vehicleParameterGroup) + { + var segment = DeclarationData.CompletedBusSegments.Lookup(numberOfAxles, vehicleCode, vehicleParameterGroup); + + Assert.AreEqual(_missionsTypes.Length, segment.Missions.Length); + + for (int i = 0; i < segment.Missions.Length; i++) + { + var mission = segment.Missions[i]; + + Assert.AreEqual(_missionsTypes[i], mission.MissionType); + Assert.AreEqual(6.4, mission.DefaultCDxA.Value()); + Assert.AreEqual(false, mission.AirDragMeasurement); + + AssertBusParameters( + isDoubleDeck: true, + numberOfAxles: numberOfAxles, + isArticulated: false, + floorType: FloorType.LowFloor, + vehicleCode: vehicleCode, + regClasses: "I/I+II/II/A", + lowEntry: null, + numPassengersLower: 0, + passengersLowerOrEqual: null, + bodyHeight: null, + bodyHeightLowerOrEqual: null, + vehicleParam: vehicleParameterGroup, + busParameters: mission.BusParameter + ); + + AssertAveragePassengers(heavyUrban: 3.7, urban: 3.7, suburban: 3.7, interurban: 0, coach: 0, busParameters: mission.BusParameter); + AssertAxleDistribution(axle1: 21.4, axle2: 21.4, axle3: 35.8, axle4: 21.4, axleLoadDistribution: mission.BusParameter.AxleLoadDistribution); + AssertVehicleEquipment(externalDisplays: 0, internalDisplays: 0, fridge: 0, kitchenStandard: 0, vehicleEquipment: mission.BusParameter.VehicleEquipment); + } + } + + [TestCase(4, VehicleCode.CI, "37d")] + public void TestComplete4AxlesCompleteBus37D(int numberOfAxles, VehicleCode vehicleCode, string vehicleParameterGroup) + { + var segment = DeclarationData.CompletedBusSegments.Lookup(numberOfAxles, vehicleCode, vehicleParameterGroup); + + Assert.AreEqual(_missionsTypes.Length, segment.Missions.Length); + + for (int i = 0; i < segment.Missions.Length; i++) + { + var mission = segment.Missions[i]; + + Assert.AreEqual(_missionsTypes[i], mission.MissionType); + Assert.AreEqual(5.9, mission.DefaultCDxA.Value()); + Assert.AreEqual(false, mission.AirDragMeasurement); + + AssertBusParameters( + isDoubleDeck: false, + numberOfAxles: numberOfAxles, + isArticulated: false, + floorType: FloorType.Unknown, + vehicleCode: vehicleCode, + regClasses: "I/I+II/II/II+III/III/A/B", + lowEntry: null, + numPassengersLower: 0, + passengersLowerOrEqual: null, + bodyHeight: null, + bodyHeightLowerOrEqual: null, + vehicleParam: vehicleParameterGroup, + busParameters: mission.BusParameter + ); + + AssertAveragePassengers(heavyUrban: 3, urban: 3, suburban: 3, interurban: 0, coach: 0, busParameters: mission.BusParameter); + AssertAxleDistribution(axle1: 21.4, axle2: 21.4, axle3: 35.8, axle4: 21.4, axleLoadDistribution: mission.BusParameter.AxleLoadDistribution); + AssertVehicleEquipment(externalDisplays: 0, internalDisplays: 0, fridge: 0, kitchenStandard: 0, vehicleEquipment: mission.BusParameter.VehicleEquipment); + } + } + + [TestCase(4, VehicleCode.CJ, "37e")] + public void TestComplete4AxlesCompleteBus37E(int numberOfAxles, VehicleCode vehicleCode, string vehicleParameterGroup) + { + var segment = DeclarationData.CompletedBusSegments.Lookup(numberOfAxles, vehicleCode, vehicleParameterGroup); + + Assert.AreEqual(_missionsTypes.Length, segment.Missions.Length); + + for (int i = 0; i < segment.Missions.Length; i++) + { + var mission = segment.Missions[i]; + + Assert.AreEqual(_missionsTypes[i], mission.MissionType); + Assert.AreEqual(7.2, mission.DefaultCDxA.Value()); + Assert.AreEqual(false, mission.AirDragMeasurement); + + AssertBusParameters( + isDoubleDeck: true, + numberOfAxles: numberOfAxles, + isArticulated: false, + floorType: FloorType.Unknown, + vehicleCode: vehicleCode, + regClasses: "I/I+II/II/II+III/III/A/B", + lowEntry: null, + numPassengersLower: 0, + passengersLowerOrEqual: null, + bodyHeight: null, + bodyHeightLowerOrEqual: null, + vehicleParam: vehicleParameterGroup, + busParameters: mission.BusParameter + ); + + AssertAveragePassengers(heavyUrban: 3.7, urban: 3.7, suburban: 3.7, interurban: 0, coach: 0, busParameters: mission.BusParameter); + AssertAxleDistribution(axle1: 21.4, axle2: 21.4, axle3: 35.8, axle4: 21.4, axleLoadDistribution: mission.BusParameter.AxleLoadDistribution); + AssertVehicleEquipment(externalDisplays: 0, internalDisplays: 0, fridge: 0, kitchenStandard: 0, vehicleEquipment: mission.BusParameter.VehicleEquipment); + } + } + + [TestCase(4, VehicleCode.CA, "38a")] + public void TestComplete4AxlesCompleteBus38A(int numberOfAxles, VehicleCode vehicleCode, string vehicleParameterGroup) + { + var segment = DeclarationData.CompletedBusSegments.Lookup(numberOfAxles, vehicleCode, vehicleParameterGroup); + + Assert.AreEqual(_missionsTypes.Length, segment.Missions.Length); + + for (int i = 0; i < segment.Missions.Length; i++) + { + var mission = segment.Missions[i]; + + Assert.AreEqual(_missionsTypes[i], mission.MissionType); + Assert.AreEqual(4.8, mission.DefaultCDxA.Value()); + Assert.AreEqual(true, mission.AirDragMeasurement); + + AssertBusParameters( + isDoubleDeck: false, + numberOfAxles: numberOfAxles, + isArticulated: false, + floorType: FloorType.HighFloor, + vehicleCode: vehicleCode, + regClasses: "II", + lowEntry: null, + numPassengersLower: 0, + passengersLowerOrEqual: null, + bodyHeight: null, + bodyHeightLowerOrEqual: null, + vehicleParam: vehicleParameterGroup, + busParameters: mission.BusParameter + ); + + AssertAveragePassengers(heavyUrban: 0, urban: 0, suburban: 0, interurban: 2.2, coach: 1.4, busParameters: mission.BusParameter); + AssertAxleDistribution(axle1: 21.4, axle2: 21.4, axle3: 35.8, axle4: 21.4, axleLoadDistribution: mission.BusParameter.AxleLoadDistribution); + AssertVehicleEquipment(externalDisplays: 0, internalDisplays: 0, fridge: 0, kitchenStandard: 0, vehicleEquipment: mission.BusParameter.VehicleEquipment); + } + } + + [TestCase(4, VehicleCode.CA, "38b")] + public void TestComplete4AxlesCompleteBus38B(int numberOfAxles, VehicleCode vehicleCode, string vehicleParameterGroup) + { + var segment = DeclarationData.CompletedBusSegments.Lookup(numberOfAxles, vehicleCode, vehicleParameterGroup); + + Assert.AreEqual(_missionsTypes.Length, segment.Missions.Length); + + for (int i = 0; i < segment.Missions.Length; i++) + { + var mission = segment.Missions[i]; + + Assert.AreEqual(_missionsTypes[i], mission.MissionType); + Assert.AreEqual(4.8, mission.DefaultCDxA.Value()); + Assert.AreEqual(true, mission.AirDragMeasurement); + + AssertBusParameters( + isDoubleDeck: false, + numberOfAxles: numberOfAxles, + isArticulated: false, + floorType: FloorType.HighFloor, + vehicleCode: vehicleCode, + regClasses: "II+III", + lowEntry: null, + numPassengersLower: 0, + passengersLowerOrEqual: null, + bodyHeight: 3100, + bodyHeightLowerOrEqual: true, + vehicleParam: vehicleParameterGroup, + busParameters: mission.BusParameter + ); + + AssertAveragePassengers(heavyUrban: 0, urban: 0, suburban: 0, interurban: 2.2, coach: 1.4, busParameters: mission.BusParameter); + AssertAxleDistribution(axle1: 21.4, axle2: 21.4, axle3: 35.8, axle4: 21.4, axleLoadDistribution: mission.BusParameter.AxleLoadDistribution); + AssertVehicleEquipment(externalDisplays: 0, internalDisplays: 0, fridge: 0, kitchenStandard: 0, vehicleEquipment: mission.BusParameter.VehicleEquipment); + } + } + + [TestCase(4, VehicleCode.CA, "38c")] + public void TestComplete4AxlesCompleteBus38C(int numberOfAxles, VehicleCode vehicleCode, string vehicleParameterGroup) + { + var segment = DeclarationData.CompletedBusSegments.Lookup(numberOfAxles, vehicleCode, vehicleParameterGroup); + + Assert.AreEqual(_missionsTypes.Length, segment.Missions.Length); + + for (int i = 0; i < segment.Missions.Length; i++) + { + var mission = segment.Missions[i]; + + Assert.AreEqual(_missionsTypes[i], mission.MissionType); + Assert.AreEqual(4.8, mission.DefaultCDxA.Value()); + Assert.AreEqual(true, mission.AirDragMeasurement); + + AssertBusParameters( + isDoubleDeck: false, + numberOfAxles: numberOfAxles, + isArticulated: false, + floorType: FloorType.HighFloor, + vehicleCode: vehicleCode, + regClasses: "II+III", + lowEntry: null, + numPassengersLower: 0, + passengersLowerOrEqual: null, + bodyHeight: 3100, + bodyHeightLowerOrEqual: false, + vehicleParam: vehicleParameterGroup, + busParameters: mission.BusParameter + ); + + AssertAveragePassengers(heavyUrban: 0, urban: 0, suburban: 0, interurban: 2.2, coach: 1.4, busParameters: mission.BusParameter); + AssertAxleDistribution(axle1: 21.4, axle2: 21.4, axle3: 35.8, axle4: 21.4, axleLoadDistribution: mission.BusParameter.AxleLoadDistribution); + AssertVehicleEquipment(externalDisplays: 0, internalDisplays: 0, fridge: 0, kitchenStandard: 0, vehicleEquipment: mission.BusParameter.VehicleEquipment); + } + } + + [TestCase(4, VehicleCode.CA, "38d")] + public void TestComplete4AxlesCompleteBus38D(int numberOfAxles, VehicleCode vehicleCode, string vehicleParameterGroup) + { + var segment = DeclarationData.CompletedBusSegments.Lookup(numberOfAxles, vehicleCode, vehicleParameterGroup); + + Assert.AreEqual(_missionsTypes.Length, segment.Missions.Length); + + for (int i = 0; i < segment.Missions.Length; i++) + { + var mission = segment.Missions[i]; + + Assert.AreEqual(_missionsTypes[i], mission.MissionType); + Assert.AreEqual(4.8, mission.DefaultCDxA.Value()); + Assert.AreEqual(true, mission.AirDragMeasurement); + + AssertBusParameters( + isDoubleDeck: false, + numberOfAxles: numberOfAxles, + isArticulated: false, + floorType: FloorType.HighFloor, + vehicleCode: vehicleCode, + regClasses: "III/B", + lowEntry: null, + numPassengersLower: 0, + passengersLowerOrEqual: null, + bodyHeight: null, + bodyHeightLowerOrEqual: null, + vehicleParam: vehicleParameterGroup, + busParameters: mission.BusParameter + ); + + AssertAveragePassengers(heavyUrban: 0, urban: 0, suburban: 0, interurban: 2.2, coach: 1.4, busParameters: mission.BusParameter); + AssertAxleDistribution(axle1: 21.4, axle2: 21.4, axle3: 35.8, axle4: 21.4, axleLoadDistribution: mission.BusParameter.AxleLoadDistribution); + AssertVehicleEquipment(externalDisplays: 0, internalDisplays: 0, fridge: 0, kitchenStandard: 0, vehicleEquipment: mission.BusParameter.VehicleEquipment); + } + } + + [TestCase(4, VehicleCode.CB, "38e")] + public void TestComplete4AxlesCompleteBus38E(int numberOfAxles, VehicleCode vehicleCode, string vehicleParameterGroup) + { + var segment = DeclarationData.CompletedBusSegments.Lookup(numberOfAxles, vehicleCode, vehicleParameterGroup); + + Assert.AreEqual(_missionsTypes.Length, segment.Missions.Length); + + for (int i = 0; i < segment.Missions.Length; i++) + { + var mission = segment.Missions[i]; + + Assert.AreEqual(_missionsTypes[i], mission.MissionType); + Assert.AreEqual(5.4, mission.DefaultCDxA.Value()); + Assert.AreEqual(true, mission.AirDragMeasurement); + + AssertBusParameters( + isDoubleDeck: true, + numberOfAxles: numberOfAxles, + isArticulated: false, + floorType: FloorType.HighFloor, + vehicleCode: vehicleCode, + regClasses: "II/II+III/III/B", + lowEntry: null, + numPassengersLower: 6, + passengersLowerOrEqual: true, + bodyHeight: null, + bodyHeightLowerOrEqual: null, + vehicleParam: vehicleParameterGroup, + busParameters: mission.BusParameter + ); + + AssertAveragePassengers(heavyUrban: 0, urban: 0, suburban: 0, interurban: 2.2, coach: 1.4, busParameters: mission.BusParameter); + AssertAxleDistribution(axle1: 21.4, axle2: 21.4, axle3: 35.8, axle4: 21.4, axleLoadDistribution: mission.BusParameter.AxleLoadDistribution); + AssertVehicleEquipment(externalDisplays: 0, internalDisplays: 0, fridge: 0, kitchenStandard: 0, vehicleEquipment: mission.BusParameter.VehicleEquipment); + } + } + + [TestCase(4, VehicleCode.CB, "38f")] + public void TestComplete4AxlesCompleteBus38F(int numberOfAxles, VehicleCode vehicleCode, string vehicleParameterGroup) + { + var segment = DeclarationData.CompletedBusSegments.Lookup(numberOfAxles, vehicleCode, vehicleParameterGroup); + + Assert.AreEqual(_missionsTypes.Length, segment.Missions.Length); + + for (int i = 0; i < segment.Missions.Length; i++) + { + var mission = segment.Missions[i]; + + Assert.AreEqual(_missionsTypes[i], mission.MissionType); + Assert.AreEqual(5.4, mission.DefaultCDxA.Value()); + Assert.AreEqual(true, mission.AirDragMeasurement); + + AssertBusParameters( + isDoubleDeck: true, + numberOfAxles: numberOfAxles, + isArticulated: false, + floorType: FloorType.HighFloor, + vehicleCode: vehicleCode, + regClasses: "II/II+III/III/B", + lowEntry: null, + numPassengersLower: 6, + passengersLowerOrEqual: false, + bodyHeight: null, + bodyHeightLowerOrEqual: null, + vehicleParam: vehicleParameterGroup, + busParameters: mission.BusParameter + ); + + AssertAveragePassengers(heavyUrban: 0, urban: 0, suburban: 0, interurban: 3, coach: 2, busParameters: mission.BusParameter); + AssertAxleDistribution(axle1: 21.4, axle2: 21.4, axle3: 35.8, axle4: 21.4, axleLoadDistribution: mission.BusParameter.AxleLoadDistribution); + AssertVehicleEquipment(externalDisplays: 0, internalDisplays: 0, fridge: 0, kitchenStandard: 0, vehicleEquipment: mission.BusParameter.VehicleEquipment); + } + } + + [TestCase(4, VehicleCode.CG, "39a")] + public void TestComplete4AxlesCompleteBus39A(int numberOfAxles, VehicleCode vehicleCode, string vehicleParameterGroup) + { + var segment = DeclarationData.CompletedBusSegments.Lookup(numberOfAxles, vehicleCode, vehicleParameterGroup); + + Assert.AreEqual(_missionsTypes.Length, segment.Missions.Length); + + for (int i = 0; i < segment.Missions.Length; i++) + { + var mission = segment.Missions[i]; + + Assert.AreEqual(_missionsTypes[i], mission.MissionType); + Assert.AreEqual(5.2, mission.DefaultCDxA.Value()); + Assert.AreEqual(false, mission.AirDragMeasurement); + + AssertBusParameters( + isDoubleDeck: false, + numberOfAxles: numberOfAxles, + isArticulated: true, + floorType: FloorType.LowFloor, + vehicleCode: vehicleCode, + regClasses: "I/I+II/II/A", + lowEntry: false, + numPassengersLower: 0, + passengersLowerOrEqual: null, + bodyHeight: null, + bodyHeightLowerOrEqual: null, + vehicleParam: vehicleParameterGroup, + busParameters: mission.BusParameter + ); + + AssertAveragePassengers(heavyUrban: 3, urban: 3, suburban: 3, interurban: 0, coach: 0, busParameters: mission.BusParameter); + AssertAxleDistribution(axle1: 21.4, axle2: 21.4, axle3: 35.8, axle4: 21.4, axleLoadDistribution: mission.BusParameter.AxleLoadDistribution); + AssertVehicleEquipment(externalDisplays: 3, internalDisplays: 3, fridge: 0, kitchenStandard: 0, vehicleEquipment: mission.BusParameter.VehicleEquipment); + } + } + + [TestCase(4, VehicleCode.CG, "39b")] + public void TestComplete4AxlesCompleteBus39B(int numberOfAxles, VehicleCode vehicleCode, string vehicleParameterGroup) + { + var segment = DeclarationData.CompletedBusSegments.Lookup(numberOfAxles, vehicleCode, vehicleParameterGroup); + + Assert.AreEqual(_missionsTypes.Length, segment.Missions.Length); + + for (int i = 0; i < segment.Missions.Length; i++) + { + var mission = segment.Missions[i]; + + Assert.AreEqual(_missionsTypes[i], mission.MissionType); + Assert.AreEqual(5.2, mission.DefaultCDxA.Value()); + Assert.AreEqual(false, mission.AirDragMeasurement); + + AssertBusParameters( + isDoubleDeck: false, + numberOfAxles: numberOfAxles, + isArticulated: true, + floorType: FloorType.LowFloor, + vehicleCode: vehicleCode, + regClasses: "I/I+II/II/A", + lowEntry: true, + numPassengersLower: 0, + passengersLowerOrEqual: null, + bodyHeight: null, + bodyHeightLowerOrEqual: null, + vehicleParam: vehicleParameterGroup, + busParameters: mission.BusParameter + ); + + AssertAveragePassengers(heavyUrban: 3, urban: 3, suburban: 3, interurban: 0, coach: 0, busParameters: mission.BusParameter); + AssertAxleDistribution(axle1: 21.4, axle2: 21.4, axle3: 35.8, axle4: 21.4, axleLoadDistribution: mission.BusParameter.AxleLoadDistribution); + AssertVehicleEquipment(externalDisplays: 3, internalDisplays: 3, fridge: 0, kitchenStandard: 0, vehicleEquipment: mission.BusParameter.VehicleEquipment); + } + } + + [TestCase(4, VehicleCode.CH, "39c")] + public void TestComplete4AxlesCompleteBus39C(int numberOfAxles, VehicleCode vehicleCode, string vehicleParameterGroup) + { + var segment = DeclarationData.CompletedBusSegments.Lookup(numberOfAxles, vehicleCode, vehicleParameterGroup); + + Assert.AreEqual(_missionsTypes.Length, segment.Missions.Length); + + for (int i = 0; i < segment.Missions.Length; i++) + { + var mission = segment.Missions[i]; + + Assert.AreEqual(_missionsTypes[i], mission.MissionType); + Assert.AreEqual(6.5, mission.DefaultCDxA.Value()); + Assert.AreEqual(false, mission.AirDragMeasurement); + + AssertBusParameters( + isDoubleDeck: true, + numberOfAxles: numberOfAxles, + isArticulated: true, + floorType: FloorType.LowFloor, + vehicleCode: vehicleCode, + regClasses: "I/I+II/II/A", + lowEntry: null, + numPassengersLower: 0, + passengersLowerOrEqual: null, + bodyHeight: null, + bodyHeightLowerOrEqual: null, + vehicleParam: vehicleParameterGroup, + busParameters: mission.BusParameter + ); + + AssertAveragePassengers(heavyUrban: 3.7, urban: 3.7, suburban: 3.7, interurban: 0, coach: 0, busParameters: mission.BusParameter); + AssertAxleDistribution(axle1: 21.4, axle2: 21.4, axle3: 35.8, axle4: 21.4, axleLoadDistribution: mission.BusParameter.AxleLoadDistribution); + AssertVehicleEquipment(externalDisplays: 0, internalDisplays: 0, fridge: 0, kitchenStandard: 0, vehicleEquipment: mission.BusParameter.VehicleEquipment); + } + } + + [TestCase(4, VehicleCode.CC, "40a")] + public void TestComplete4AxlesCompleteBus40A(int numberOfAxles, VehicleCode vehicleCode, string vehicleParameterGroup) + { + var segment = DeclarationData.CompletedBusSegments.Lookup(numberOfAxles, vehicleCode, vehicleParameterGroup); + + Assert.AreEqual(_missionsTypes.Length, segment.Missions.Length); + + for (int i = 0; i < segment.Missions.Length; i++) + { + var mission = segment.Missions[i]; + + Assert.AreEqual(_missionsTypes[i], mission.MissionType); + Assert.AreEqual(4.9, mission.DefaultCDxA.Value()); + Assert.AreEqual(true, mission.AirDragMeasurement); + + AssertBusParameters( + isDoubleDeck: false, + numberOfAxles: numberOfAxles, + isArticulated: true, + floorType: FloorType.HighFloor, + vehicleCode: vehicleCode, + regClasses: "II", + lowEntry: null, + numPassengersLower: 0, + passengersLowerOrEqual: null, + bodyHeight: null, + bodyHeightLowerOrEqual: null, + vehicleParam: vehicleParameterGroup, + busParameters: mission.BusParameter + ); + + AssertAveragePassengers(heavyUrban: 0, urban: 0, suburban: 0, interurban: 2.2, coach: 1.4, busParameters: mission.BusParameter); + AssertAxleDistribution(axle1: 21.4, axle2: 21.4, axle3: 35.8, axle4: 21.4, axleLoadDistribution: mission.BusParameter.AxleLoadDistribution); + AssertVehicleEquipment(externalDisplays: 0, internalDisplays: 0, fridge: 0, kitchenStandard: 0, vehicleEquipment: mission.BusParameter.VehicleEquipment); + } + } + + [TestCase(4, VehicleCode.CC, "40b")] + public void TestComplete4AxlesCompleteBus40B(int numberOfAxles, VehicleCode vehicleCode, string vehicleParameterGroup) + { + var segment = DeclarationData.CompletedBusSegments.Lookup(numberOfAxles, vehicleCode, vehicleParameterGroup); + + Assert.AreEqual(_missionsTypes.Length, segment.Missions.Length); + + for (int i = 0; i < segment.Missions.Length; i++) + { + var mission = segment.Missions[i]; + + Assert.AreEqual(_missionsTypes[i], mission.MissionType); + Assert.AreEqual(4.9, mission.DefaultCDxA.Value()); + Assert.AreEqual(true, mission.AirDragMeasurement); + + AssertBusParameters( + isDoubleDeck: false, + numberOfAxles: numberOfAxles, + isArticulated: true, + floorType: FloorType.HighFloor, + vehicleCode: vehicleCode, + regClasses: "II+III", + lowEntry: null, + numPassengersLower: 0, + passengersLowerOrEqual: null, + bodyHeight: 3100, + bodyHeightLowerOrEqual: true, + vehicleParam: vehicleParameterGroup, + busParameters: mission.BusParameter + ); + + AssertAveragePassengers(heavyUrban: 0, urban: 0, suburban: 0, interurban: 2.2, coach: 1.4, busParameters: mission.BusParameter); + AssertAxleDistribution(axle1: 21.4, axle2: 21.4, axle3: 35.8, axle4: 21.4, axleLoadDistribution: mission.BusParameter.AxleLoadDistribution); + AssertVehicleEquipment(externalDisplays: 0, internalDisplays: 0, fridge: 0, kitchenStandard: 0, vehicleEquipment: mission.BusParameter.VehicleEquipment); + } + } + + [TestCase(4, VehicleCode.CC, "40c")] + public void TestComplete4AxlesCompleteBus40C(int numberOfAxles, VehicleCode vehicleCode, string vehicleParameterGroup) + { + var segment = DeclarationData.CompletedBusSegments.Lookup(numberOfAxles, vehicleCode, vehicleParameterGroup); + + Assert.AreEqual(_missionsTypes.Length, segment.Missions.Length); + + for (int i = 0; i < segment.Missions.Length; i++) + { + var mission = segment.Missions[i]; + + Assert.AreEqual(_missionsTypes[i], mission.MissionType); + Assert.AreEqual(4.9, mission.DefaultCDxA.Value()); + Assert.AreEqual(true, mission.AirDragMeasurement); + + AssertBusParameters( + isDoubleDeck: false, + numberOfAxles: numberOfAxles, + isArticulated: true, + floorType: FloorType.HighFloor, + vehicleCode: vehicleCode, + regClasses: "II+III", + lowEntry: null, + numPassengersLower: 0, + passengersLowerOrEqual: null, + bodyHeight: 3100, + bodyHeightLowerOrEqual: false, + vehicleParam: vehicleParameterGroup, + busParameters: mission.BusParameter + ); + + AssertAveragePassengers(heavyUrban: 0, urban: 0, suburban: 0, interurban: 2.2, coach: 1.4, busParameters: mission.BusParameter); + AssertAxleDistribution(axle1: 21.4, axle2: 21.4, axle3: 35.8, axle4: 21.4, axleLoadDistribution: mission.BusParameter.AxleLoadDistribution); + AssertVehicleEquipment(externalDisplays: 0, internalDisplays: 0, fridge: 0, kitchenStandard: 0, vehicleEquipment: mission.BusParameter.VehicleEquipment); + } + } + + [TestCase(4, VehicleCode.CC, "40d")] + public void TestComplete4AxlesCompleteBus40D(int numberOfAxles, VehicleCode vehicleCode, string vehicleParameterGroup) + { + var segment = DeclarationData.CompletedBusSegments.Lookup(numberOfAxles, vehicleCode, vehicleParameterGroup); + + Assert.AreEqual(_missionsTypes.Length, segment.Missions.Length); + + for (int i = 0; i < segment.Missions.Length; i++) + { + var mission = segment.Missions[i]; + + Assert.AreEqual(_missionsTypes[i], mission.MissionType); + Assert.AreEqual(4.9, mission.DefaultCDxA.Value()); + Assert.AreEqual(true, mission.AirDragMeasurement); + + AssertBusParameters( + isDoubleDeck: false, + numberOfAxles: numberOfAxles, + isArticulated: true, + floorType: FloorType.HighFloor, + vehicleCode: vehicleCode, + regClasses: "III/B", + lowEntry: null, + numPassengersLower: 0, + passengersLowerOrEqual: null, + bodyHeight: null, + bodyHeightLowerOrEqual: null, + vehicleParam: vehicleParameterGroup, + busParameters: mission.BusParameter + ); + + AssertAveragePassengers(heavyUrban: 0, urban: 0, suburban: 0, interurban: 2.2, coach: 1.4, busParameters: mission.BusParameter); + AssertAxleDistribution(axle1: 21.4, axle2: 21.4, axle3: 35.8, axle4: 21.4, axleLoadDistribution: mission.BusParameter.AxleLoadDistribution); + AssertVehicleEquipment(externalDisplays: 0, internalDisplays: 0, fridge: 0, kitchenStandard: 0, vehicleEquipment: mission.BusParameter.VehicleEquipment); + } + } + + [TestCase(4, VehicleCode.CD, "40e")] + public void TestComplete4AxlesCompleteBus40E(int numberOfAxles, VehicleCode vehicleCode, string vehicleParameterGroup) + { + var segment = DeclarationData.CompletedBusSegments.Lookup(numberOfAxles, vehicleCode, vehicleParameterGroup); + + Assert.AreEqual(_missionsTypes.Length, segment.Missions.Length); + + for (int i = 0; i < segment.Missions.Length; i++) + { + var mission = segment.Missions[i]; + + Assert.AreEqual(_missionsTypes[i], mission.MissionType); + Assert.AreEqual(5.5, mission.DefaultCDxA.Value()); + Assert.AreEqual(true, mission.AirDragMeasurement); + + AssertBusParameters( + isDoubleDeck: true, + numberOfAxles: numberOfAxles, + isArticulated: true, + floorType: FloorType.HighFloor, + vehicleCode: vehicleCode, + regClasses: "II/II+III/III/B", + lowEntry: null, + numPassengersLower: 6, + passengersLowerOrEqual: true, + bodyHeight: null, + bodyHeightLowerOrEqual: null, + vehicleParam: vehicleParameterGroup, + busParameters: mission.BusParameter + ); + + AssertAveragePassengers(heavyUrban: 0, urban: 0, suburban: 0, interurban: 2.2, coach: 1.4, busParameters: mission.BusParameter); + AssertAxleDistribution(axle1: 21.4, axle2: 21.4, axle3: 35.8, axle4: 21.4, axleLoadDistribution: mission.BusParameter.AxleLoadDistribution); + AssertVehicleEquipment(externalDisplays: 0, internalDisplays: 0, fridge: 0, kitchenStandard: 0, vehicleEquipment: mission.BusParameter.VehicleEquipment); + } + } + + [TestCase(4, VehicleCode.CD, "40f")] + public void TestComplete4AxlesCompleteBus40F(int numberOfAxles, VehicleCode vehicleCode, string vehicleParameterGroup) + { + var segment = DeclarationData.CompletedBusSegments.Lookup(numberOfAxles, vehicleCode, vehicleParameterGroup); + + Assert.AreEqual(_missionsTypes.Length, segment.Missions.Length); + + for (int i = 0; i < segment.Missions.Length; i++) + { + var mission = segment.Missions[i]; + + Assert.AreEqual(_missionsTypes[i], mission.MissionType); + Assert.AreEqual(5.5, mission.DefaultCDxA.Value()); + Assert.AreEqual(true, mission.AirDragMeasurement); + + AssertBusParameters( + isDoubleDeck: true, + numberOfAxles: numberOfAxles, + isArticulated: true, + floorType: FloorType.HighFloor, + vehicleCode: vehicleCode, + regClasses: "II/II+III/III/B", + lowEntry: null, + numPassengersLower: 6, + passengersLowerOrEqual: false, + bodyHeight: null, + bodyHeightLowerOrEqual: null, + vehicleParam: vehicleParameterGroup, + busParameters: mission.BusParameter + ); + + AssertAveragePassengers(heavyUrban: 0, urban: 0, suburban: 0, interurban: 3, coach: 2, busParameters: mission.BusParameter); + AssertAxleDistribution(axle1: 21.4, axle2: 21.4, axle3: 35.8, axle4: 21.4, axleLoadDistribution: mission.BusParameter.AxleLoadDistribution); + AssertVehicleEquipment(externalDisplays: 0, internalDisplays: 0, fridge: 0, kitchenStandard: 0, vehicleEquipment: mission.BusParameter.VehicleEquipment); + } + } + + #region Assert Methods + + private void AssertBusParameters(bool isDoubleDeck, int numberOfAxles, bool isArticulated, FloorType floorType, VehicleCode vehicleCode, string regClasses, + bool? lowEntry, double numPassengersLower, bool? passengersLowerOrEqual, double? bodyHeight, bool? bodyHeightLowerOrEqual, + string vehicleParam, BusParameters busParameters) + { + Assert.AreEqual(isDoubleDeck, vehicleCode.IsDoubleDeckBus()); + Assert.AreEqual(numberOfAxles, busParameters.NumberOfAxles); + Assert.AreEqual(isArticulated, busParameters.IsArticulated); + Assert.AreEqual(isArticulated, busParameters.IsArticulated); + + Assert.AreEqual(floorType, busParameters.FloorType); + if (floorType == FloorType.Unknown) + Assert.IsTrue(vehicleCode.IsOpenDeckBus()); + + Assert.AreEqual(vehicleCode, busParameters.VehicleCode); + AssertRegistrationClasses(regClasses, busParameters.RegistrationClasses); + Assert.AreEqual(lowEntry, busParameters.LowEntry); + Assert.AreEqual(numPassengersLower, busParameters.NumberPassengersLowerDeck); + Assert.AreEqual(passengersLowerOrEqual, busParameters.PassengersSeatsLowerOrEqual); + Assert.AreEqual(bodyHeight, busParameters.BodyHeight?.Value()); + Assert.AreEqual(bodyHeightLowerOrEqual, busParameters.BodyHeightLowerOrEqual); + Assert.AreEqual(vehicleParam, busParameters.VehicleParameterGroup); + } + + + private void AssertRegistrationClasses(string registrationClasses, RegistrationClass[] actualClasses) + { + var expectedClasses = RegistrationClassHelper.Parse(registrationClasses); + Assert.AreEqual(expectedClasses.Length, actualClasses.Length); + + for (int i = 0; i < expectedClasses.Length; i++) + { + Assert.IsTrue(actualClasses.Contains(expectedClasses[i])); + } + } + + + private void AssertAveragePassengers(double heavyUrban, double urban, double suburban, double interurban, double coach, + BusParameters busParameters) + { + Assert.AreEqual(heavyUrban, busParameters.PassengersHeavyUrban); + Assert.AreEqual(urban, busParameters.PassengersUrban); + Assert.AreEqual(suburban, busParameters.PassengersSuburban); + Assert.AreEqual(interurban, busParameters.PassengersInterurban); + Assert.AreEqual(coach, busParameters.PassengersCoach); + } + + + private void AssertAxleDistribution(double axle1, double axle2, double axle3, double axle4, + AxleLoadDistribution axleLoadDistribution) + { + Assert.AreEqual(axle1, axleLoadDistribution.Axle01); + Assert.AreEqual(axle2, axleLoadDistribution.Axle02); + Assert.AreEqual(axle3, axleLoadDistribution.Axle03); + Assert.AreEqual(axle4, axleLoadDistribution.Axle04); + } + + + private void AssertVehicleEquipment(double externalDisplays, double internalDisplays, double fridge, + double kitchenStandard, VehicleEquipment vehicleEquipment) + { + Assert.AreEqual(externalDisplays, vehicleEquipment.ExternalDisplays); + Assert.AreEqual(internalDisplays, vehicleEquipment.InternalDisplays); + Assert.AreEqual(fridge, vehicleEquipment.Fridge); + Assert.AreEqual(kitchenStandard, vehicleEquipment.KitchenStandard); + } + + #endregion + + + } +} diff --git a/VectoCore/VectoCoreTest/VectoCoreTest.csproj b/VectoCore/VectoCoreTest/VectoCoreTest.csproj index 6c1419f65475dec3d3c992aa5ebd0d0782490199..4ebdd41aa956860d32024990a64dc54772a6d765 100644 --- a/VectoCore/VectoCoreTest/VectoCoreTest.csproj +++ b/VectoCore/VectoCoreTest/VectoCoreTest.csproj @@ -129,6 +129,7 @@ <Compile Include="Models\Declaration\DataAdapter\DeclarationDataAdapterTest_Class9.cs" /> <Compile Include="Models\Declaration\DeclarationSegmentComplete2AxleBusesTest.cs" /> <Compile Include="Models\Declaration\DeclarationSegmentComplete3AxleBusesTest.cs" /> + <Compile Include="Models\Declaration\DeclarationSegmentComplete4AxleBusesTest.cs" /> <Compile Include="Models\Declaration\DeclarationSegmentHeavyBusesTest.cs" /> <Compile Include="Models\Declaration\ShiftPolygonTest.cs" /> <Compile Include="Models\SimulationComponentData\GearshiftLinesVoithTest.cs" />