Code development platform for open source projects from the European Union institutions

Skip to content
Snippets Groups Projects
Commit 154083d4 authored by Markus Quaritsch's avatar Markus Quaritsch
Browse files

Merge pull request #115 in VECTO/vecto-sim from...

Merge pull request #115 in VECTO/vecto-sim from ~EMQUARIMA/vecto-sim:bugfix/VECTO-187-wrong-class-weight-definition to develop

* commit '9b5dfa73':
  more exhaustive testcases for segment lookup
  extend segment table for lookup of vehicle category Tractor 4x2
  fix: change comparison in segment lookup function
  adding testcase to reproduce bug
parents a244b7c4 9b5dfa73
No related branches found
No related tags found
No related merge requests found
......@@ -20,6 +20,7 @@ using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using TUGraz.VectoCore.Exceptions;
using TUGraz.VectoCore.Utils;
namespace TUGraz.VectoCore.Models.Declaration
......@@ -45,12 +46,15 @@ namespace TUGraz.VectoCore.Models.Declaration
public override Segment Lookup(VehicleCategory vehicleCategory, AxleConfiguration axleConfiguration,
Kilogram grossVehicleMassRating, Kilogram curbWeight)
{
if (grossVehicleMassRating < 7.5.SI<Ton>()) {
throw new VectoException("Gross vehicle mass must be greater than 7.5 tons");
}
var row =
SegmentTable.Rows.Cast<DataRow>().First(r => r.Field<string>("valid") == "1"
&& r.Field<string>("vehiclecategory") == vehicleCategory.ToString()
&& r.Field<string>("axleconf.") == axleConfiguration.GetName()
&& r.ParseDouble("gvw_min").SI<Ton>() <= grossVehicleMassRating
&& r.ParseDouble("gvw_max").SI<Ton>() > grossVehicleMassRating
&& r.ParseDouble("gvw_min").SI<Ton>() < grossVehicleMassRating
&& r.ParseDouble("gvw_max").SI<Ton>() >= grossVehicleMassRating
);
var segment = new Segment {
GrossVehicleWeightMin = row.ParseDouble("gvw_min").SI().Ton.Cast<Kilogram>(),
......
Valid,Vehicle Category ,Axle Conf.,GVW_Min,GVW_Max,HDV class,.vacc file ,Cross Wind Correction - Long haul,Cross Wind Correction - Other,Truck Axles - Long haul,Truck Axles - Other,Trailer Axles - Long haul,Trailer Axles - Other,Long haul,Regional delivery,Urban delivery,Municipal utility,Construction,Heavy Urban,Urban,Suburban,Interurban,Coach,Mass Extra - Long haul,Mass Extra - Regional delivery,Mass Extra - Urban delivery,Mass Extra - Municipal utility,Mass Extra - Construction,Mass Extra - Heavy Urban,Mass Extra - Urban,Mass Extra - Suburban,Mass Extra - Interurban,Mass Extra - Coach,Payload - Long haul,Payload - Regional delivery,Payload - Urban delivery,Payload - Municipal utility,Payload - Construction,Payload - Heavy Urban,Payload - Urban,Payload - Suburban,Payload - Interurban,Payload - Coach
0,RigidTruck,4x2,0,7.5,0,Truck.vacc,-,RigidSolo,-,-,-,-,0,1,1,0,0,0,0,0,0,0,-,???,???,-,-,-,-,-,-,-,-,???,???,-,-,-,-,-,-,-
1,RigidTruck,4x2,7.5,10,1,Truck.vacc,-,RigidSolo,-,45/55,-,-,0,1,1,0,0,0,0,0,0,0,-,1600,1600,-,-,-,-,-,-,-,-,f,f,-,-,-,-,-,-,-
1,Tractor,4x2,7.5,10,1,Truck.vacc,-,RigidSolo,-,45/55,-,-,0,1,1,0,0,0,0,0,0,0,-,1600,1600,-,-,-,-,-,-,-,-,f,f,-,-,-,-,-,-,-
1,RigidTruck,4x2,10,12,2,Truck.vacc,RigidSolo,RigidSolo,40/60,45/55,-,-,1,1,1,0,0,0,0,0,0,0,1900,1900,1900,-,-,-,-,-,-,-,f,f,f,-,-,-,-,-,-,-
1,Tractor,4x2,10,12,2,Truck.vacc,RigidSolo,RigidSolo,40/60,45/55,-,-,1,1,1,0,0,0,0,0,0,0,1900,1900,1900,-,-,-,-,-,-,-,f,f,f,-,-,-,-,-,-,-
1,RigidTruck,4x2,12,16,3,Truck.vacc,-,RigidSolo,-,40/60,-,-,0,1,1,0,0,0,0,0,0,0,-,2000,2000,-,-,-,-,-,-,-,-,f,f,-,-,-,-,-,-,-
1,Tractor,4x2,12,16,3,Truck.vacc,-,RigidSolo,-,40/60,-,-,0,1,1,0,0,0,0,0,0,0,-,2000,2000,-,-,-,-,-,-,-,-,f,f,-,-,-,-,-,-,-
1,RigidTruck,4x2,16,99,4,Truck.vacc,RigidTrailer,RigidSolo,20/30,45/55,50/2,-,1,1,0,1,0,0,0,0,0,0,7500,2100,-,2100,-,-,-,-,-,-,14000,4400,-,4400,-,-,-,-,-,-
1,Tractor,4x2,16,99,5,Truck.vacc,TractorSemitrailer,TractorSemitrailer,20/25,25/25,55/3,50/3,1,1,0,0,0,0,0,0,0,0,7500,7500,-,-,-,-,-,-,-,-,19300,12900,-,-,-,-,-,-,-,-
0,RigidTruck,4x4,7.5,16,6,Truck.vacc,-,RigidSolo,-,-,-,-,0,0,0,1,1,0,0,0,0,0,-,-,-,???,???,-,-,-,-,-,-,-,-,???,???,-,-,-,-,-
......
......@@ -450,6 +450,63 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration
}
}
[TestMethod]
public void SegmentLookupTest()
{
AssertHelper.Exception<VectoException>(
() => DeclarationData.Segments.Lookup(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2,
1000.SI<Kilogram>(), 0.SI<Kilogram>()), "Gross vehicle mass must be greater than 7.5 tons");
var segment = DeclarationData.Segments.Lookup(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2,
10000.SI<Kilogram>(), 0.SI<Kilogram>());
Assert.AreEqual(VehicleClass.Class1, segment.VehicleClass);
segment = DeclarationData.Segments.Lookup(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2,
10000.SI<Kilogram>(), 0.SI<Kilogram>());
Assert.AreEqual(VehicleClass.Class1, segment.VehicleClass);
segment = DeclarationData.Segments.Lookup(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2,
12000.SI<Kilogram>(), 0.SI<Kilogram>());
Assert.AreEqual(VehicleClass.Class2, segment.VehicleClass);
segment = DeclarationData.Segments.Lookup(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2,
12000.SI<Kilogram>(), 0.SI<Kilogram>());
Assert.AreEqual(VehicleClass.Class2, segment.VehicleClass);
segment = DeclarationData.Segments.Lookup(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2,
16000.SI<Kilogram>(), 0.SI<Kilogram>());
Assert.AreEqual(VehicleClass.Class3, segment.VehicleClass);
segment = DeclarationData.Segments.Lookup(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2,
16000.SI<Kilogram>(), 0.SI<Kilogram>());
Assert.AreEqual(VehicleClass.Class3, segment.VehicleClass);
segment = DeclarationData.Segments.Lookup(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2,
16001.SI<Kilogram>(), 0.SI<Kilogram>());
Assert.AreEqual(VehicleClass.Class4, segment.VehicleClass);
segment = DeclarationData.Segments.Lookup(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2,
16001.SI<Kilogram>(), 0.SI<Kilogram>());
Assert.AreEqual(VehicleClass.Class5, segment.VehicleClass);
segment = DeclarationData.Segments.Lookup(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x2,
7500.SI<Kilogram>(), 0.SI<Kilogram>());
Assert.AreEqual(VehicleClass.Class9, segment.VehicleClass);
segment = DeclarationData.Segments.Lookup(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_6x2,
7500.SI<Kilogram>(), 0.SI<Kilogram>());
Assert.AreEqual(VehicleClass.Class10, segment.VehicleClass);
segment = DeclarationData.Segments.Lookup(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x2,
40000.SI<Kilogram>(), 0.SI<Kilogram>());
Assert.AreEqual(VehicleClass.Class9, segment.VehicleClass);
segment = DeclarationData.Segments.Lookup(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_6x2,
40000.SI<Kilogram>(), 0.SI<Kilogram>());
Assert.AreEqual(VehicleClass.Class10, segment.VehicleClass);
}
[TestMethod]
public void SegmentTest()
{
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment