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

Skip to content
Snippets Groups Projects
Commit d3f1aa7a authored by Michael KRISPER's avatar Michael KRISPER
Browse files

formatted segment table, added more tests for extreme cases of segment table

parent 3da2e0d1
No related branches found
No related tags found
No related merge requests found
......@@ -67,12 +67,20 @@ namespace TUGraz.VectoCore.Models.Declaration
DataRow row;
try {
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
);
row = SegmentTable.Rows.Cast<DataRow>().First(r => {
var isValid = r.Field<string>("valid");
var category = r.Field<string>("vehiclecategory");
var axleConf = r.Field<string>("axleconf.");
var massMin = r.ParseDouble("gvw_min").SI().Ton;
var massMax = r.ParseDouble("gvw_max").SI().Ton;
return isValid == "1"
&& category == vehicleCategory.ToString()
&& axleConf == axleConfiguration.GetName()
// MK 2016-06-07: normally the next condition should be "mass > massMin", except for 7.5t where is should be ">="
// in any case ">=" is also correct, because the segment table is sorted by weight.
&& grossVehicleMassRating >= massMin
&& grossVehicleMassRating <= massMax;
});
} catch (InvalidOperationException e) {
var errorMessage = string.Format(
"ERROR: Could not find the declaration segment for vehicle. Category: {0}, AxleConfiguration: {1}, GrossVehicleMassRating: {2}",
......
......@@ -133,7 +133,7 @@ namespace TUGraz.VectoCore.Utils
do {
var line = lines.Current;
var cells = line.Split(Delimiter);
var cells = line.Split(Delimiter).Select(s => s.Trim()).ToArray();
if (!ignoreEmptyColumns && cells.Length != table.Columns.Count) {
throw new CSVReadException(
string.Format("Line {0}: The number of values is not correct. Expected {1} Columns, Got {2} Columns", i,
......
......@@ -33,6 +33,8 @@ using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using TUGraz.VectoCommon.Exceptions;
// ReSharper disable ObjectCreationAsStatement
namespace TUGraz.VectoCore.Tests.Exceptions
{
[TestClass]
......
......@@ -414,29 +414,65 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration
}
}
[Test]
public void SegmentLookupTestOutOfRange()
[
TestCase(0),
TestCase(1000),
TestCase(3500),
TestCase(7499)
]
public void SegmentWeightOutOfRange4X2(double weight)
{
AssertHelper.Exception<VectoException>(() =>
DeclarationData.Segments.Lookup(
VehicleCategory.RigidTruck,
AxleConfiguration.AxleConfig_4x2,
weight.SI<Kilogram>(),
0.SI<Kilogram>()),
"Gross vehicle mass must be greater than 7.5 tons");
}
[
TestCase(0),
TestCase(1000),
TestCase(3500),
TestCase(7499)
]
public void SegmentWeightOutOfRange4X4(double weight)
{
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");
AssertHelper.Exception<VectoException>(() =>
DeclarationData.Segments.Lookup(
VehicleCategory.RigidTruck,
AxleConfiguration.AxleConfig_4x4,
weight.SI<Kilogram>(),
0.SI<Kilogram>()),
"Gross vehicle mass must be greater than 7.5 tons");
}
[Test,
TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 7500, 0, VehicleClass.Class1),
TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 7500, 0, VehicleClass.Class1),
TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 10000, 0, VehicleClass.Class1),
TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 10000, 0, VehicleClass.Class1),
TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 10001, 0, VehicleClass.Class2),
TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 10001, 0, VehicleClass.Class2),
TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 12000, 0, VehicleClass.Class2),
TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 12000, 0, VehicleClass.Class2),
TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 12001, 0, VehicleClass.Class3),
TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 12001, 0, VehicleClass.Class3),
TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 16000, 0, VehicleClass.Class3),
TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 16000, 0, VehicleClass.Class3),
TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 16001, 0, VehicleClass.Class4),
TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 99000, 0, VehicleClass.Class4),
TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 16001, 0, VehicleClass.Class5),
TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 99000, 0, VehicleClass.Class5),
TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x2, 7500, 0, VehicleClass.Class9),
TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_6x2, 7500, 0, VehicleClass.Class10),
TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x2, 16000, 0, VehicleClass.Class9),
TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x2, 40000, 0, VehicleClass.Class9),
TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x2, 99000, 0, VehicleClass.Class9),
TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_6x2, 7500, 0, VehicleClass.Class10),
TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_6x2, 16000, 0, VehicleClass.Class10),
TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_6x2, 40000, 0, VehicleClass.Class10),
TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_6x2, 99000, 0, VehicleClass.Class10),
]
public void SegmentLookupTest(VehicleCategory category, AxleConfiguration axleConfiguration, double grossWeight,
double curbWeight, VehicleClass expectedClass)
......
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